7_ElaticSearch term+bool实现的multiword搜索原理

7_ElaticSearch term+bool实现的multiword搜索原理

更多干货

  • 分布式实战(干货)
  • spring cloud 实战(干货)
  • mybatis 实战(干货)
  • spring boot 实战(干货)
  • React 入门实战(干货)
  • 构建中小型互联网企业架构(干货)
  • python 学习持续更新

  • ElasticSearch 笔记

概述

  • es 底层会将 match query 转成bool term 查询:match query --> bool + term。

例子一

普通match如何转换为term+should

{
    "match": { "title": "java elasticsearch"}
}
  • 使用诸如上面的match query进行多值搜索的时候,es会在底层自动将这个match query转换为bool的语法
  • bool should,指定多个搜索词,同时使用term query
{
  "bool": {
    "should": [
      { "term": { "title": "java" }},
      { "term": { "title": "elasticsearch"   }}
    ]
  }
}

例子二

and match如何转换为term+must

{
    "match": {
        "title": {
            "query":    "java elasticsearch",
            "operator": "and"
        }
    }
}

转化后

{
  "bool": {
    "must": [
      { "term": { "title": "java" }},
      { "term": { "title": "elasticsearch"   }}
    ]
  }
}

例子三

minimum_should_match如何转换

{
    "match": {
        "title": {
            "query":                "java elasticsearch hadoop spark",
            "minimum_should_match": "75%"
        }
    }
}

转化后

{
  "bool": {
    "should": [
      { "term": { "title": "java" }},
      { "term": { "title": "elasticsearch"   }},
      { "term": { "title": "hadoop" }},
      { "term": { "title": "spark" }}
    ],
    "minimum_should_match": 3 
  }
}
 
  

相关内容

  • ElasticSearch 笔记
  • 1_ElatisSearch使用term filter来搜索数据

  • 2_ElatisSearch filter执行原理 bitset机制与caching机制

  • 3_ElatisSearch 基于bool组合多个filter条件来搜索数据

  • 4_ElatisSearch 使用terms搜索多个值

  • 5_ElatisSearch 基于range filter来进行范围过滤

  • 6_ElatisSearch 控制全文检索结果的精准度

  • 7_ElatisSearch term+bool实现的multiword搜索原理

  • 8_基于boost的搜索条件权重控制

  • 日志管理ELK

你可能感兴趣的:(【构建高可用架构】,【大数据】,【ElatisSearch】)