【Elasticsearch】-Boolean查询

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: bool查询采用了“匹配越多越好”的方法,因此来自每个匹配的must或should子句的分数将添加在一起,以提供每个文档的最终_分数。

bool查询采用了“匹配越多越好”的方法,因此来自每个匹配的must或should子句的分数将添加在一起,以提供每个文档的最终_分数

bool查询主要包括以下几种类型

must:查询的结果必须出现在匹配文档中,并且会计算得分

filter:查询的结果必须出现在匹配文档中,但是会忽略计算得分

should:查询的结果应该出现在匹配文档中,会计算相关性得分

must_not:查询的结果不应该出现在匹配的文档中,评分会被忽略

range:条件范围查询

gt:大于 相当于数据库中的>

gte:大于等于 相当于数据库中的>=

lt:小于 相当于数据库中的<

lte:小于等于,相当于数据库中的<=

如果不需要计算得分,可以使用filter替代must,以提高检索效率的目的。

# must必须匹配,会进行相关性打分POST/nba/_search{
"query": {
"bool": {
"must": [
        {
"match": {
"title": "james"          }
        }
      ]
    }
  }
}
# filter必须匹配,不会进行相关性打分POST/nba/_search{
"query": {
"bool": {
"filter": [
        {
"match": {
"title": "james"          }
        }
      ]
    }
  }
}
# must_not必须不匹配postnba/_search{
"query": {
"bool": {
"must": [
        {
"match": {
"title": "james"          }
        }
      ],
"must_not": [
        {
"term": {
"teamConferenceEn": {
"value": "Eastern"            }
          }
        }
      ]
    }
  }
}
# should 应该,应该是11-20年,但是其他的也会查询出来postnba/_search{
"query": {
"bool": {
"must": [
        {
"match": {
"title": "james"          }
        }
      ],
"must_not": [
        {
"term": {
"teamConferenceEn": {
"value": "Eastern"            }
          }
        }
      ],
"should": [
        {
"range": {
"year": {
"gte": 2011,
"lte": 2020            }
          }
        }
      ]
    }
  }
}
# should 应该,应该是11-20年,配合minimum_should_match=1,则至少匹配should中的一个条件,应该变成必须一个条件成立postnba/_search{
"query": {
"bool": {
"must": [
        {
"match": {
"title": "james"          }
        }
      ],
"must_not": [
        {
"term": {
"teamConferenceEn": {
"value": "Eastern"            }
          }
        }
      ],
"should": [
        {
"range": {
"year": {
"gte": 2011,
"lte": 2020            }
          }
        }
      ],
"minimum_should_match": 1    }
  }
}
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
存储 固态存储 Java
Elasticsearch中查询性能优化
Elasticsearch中查询性能优化
194 0
|
3月前
Elasticsearch之RestClient查询文档
Elasticsearch之RestClient查询文档
139 1
|
5月前
|
存储 人工智能 自然语言处理
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
|
4月前
|
JSON 自然语言处理 数据库
数据库-ElasticSearch入门(索引、文档、查询)
数据库-ElasticSearch入门(索引、文档、查询)
288 0
|
3月前
|
缓存 JSON API
Elasticsearch-05Elasticsearch之查询与过滤
Elasticsearch-05Elasticsearch之查询与过滤
165 0
|
5月前
|
JSON 自然语言处理 数据格式
分布式系列教程(33) -ElasticSearch DSL语言查询与过滤
分布式系列教程(33) -ElasticSearch DSL语言查询与过滤
151 0
|
5月前
分布式系列教程(32) -ElasticSearch条件查询
分布式系列教程(32) -ElasticSearch条件查询
173 0
|
2月前
|
缓存 算法 索引
【Elasticsearch专栏 07】深入探索:Elasticsearch的倒排索引如何进行模糊查询和通配符查询
Elasticsearch的倒排索引支持模糊查询和通配符查询,通过特定的算法和数据结构,能够实现对关键词的模糊匹配和通配符匹配。这两种查询类型提供了更灵活的搜索功能,但可能影响查询性能,需结合优化策略使用。
|
2月前
|
缓存 自然语言处理 数据挖掘
一篇文章让你学会Elasticsearch中的查询
一篇文章让你学会Elasticsearch中的查询
137312 118
|
2月前
|
测试技术 定位技术 API
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
94614 140