带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(6)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(6)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(5) https://developer.aliyun.com/article/1231066


Query DSL

 

查询索引包括全文本查询、组合查询、结构化查询等。

 

通常 Search 与 Filter 区别

 

二者的查询是有区别的:


Query 查询

 

用于解答文档是否存在,并且告知返回文档与查询条件的匹配度,返回 _score 评分供用户选择。

 

Filter 查询

 

只用于返回文档是否与查询匹配,但是不会告诉你匹配度,即不进行评分。在做聚合查询时,

filter 经常发挥更大的作用。因为没有评分 Elasticsearch 的处理速度就会提高,提升了整体响应时间。同时 filter 可以缓存查询结果,而 Query 则不能缓存。

 

使用场景

 

如果涉及到全文检索以及评分相关业务使用 Query,其他场景推荐使用 Filter 查询。

 

组合查询

 

Boolean 查询

 

Boolean 查询包含 must、filter、must_not。

 

must :必须匹配并且返回评分,filter 忽略评分,should 相当于数据库查询中的 or,针对

should 有一个特殊的情况,也就是所有的搜索只有 should ,那么必须满足 should 里的其中一个才会被搜索到。must_not 为不匹配,相当于不等于。

 

查询:店铺编码=sc00001 且渠道 channelType=cloudPlatform 且 publicPrice 价格区间不在8288-8888 之间,或者品牌包含"果"。首先以下条件必须全部满足:

 

l 店铺编码=sc00001

l 渠道 channelType=cloudPlatform

 

l publicPrice 价格区间不在 8288-8888 之间

 

另外,由于还有 should 查询,满足品牌中包含“果”的也会被查询出来,另外匹配成功后的评分也会提高,相应的结果也会排在前面:

 

l 品牌包含"果"

 

者取并集的结果作为最终结果返回


POST /my_goods/_search
{
  "query": {
    "bool": {
      "must": {
        "term":{
          "shopCode":"sc00001"
        }
      },
      "filter": {
        "term": {
          "channelType": "cloudPlatform"
        }
      },
      "must_not": [
        {
         "range": {
           "publicPrice": {
             "gte": 8288,
             "lte": 8888
           }
         }
        }
      ],
      "should": [
        {
          "term": {
            "brandName": {
              "value": "果"
            }
          }
        }
      ],
      "minimum_should_match" : 1
    }
  }
}

 minimum_should_match 为最小匹配数量,如果 bool 查询包含至少一个 should 子句,并且没有 must 或 filter 子句,则默认值为 1,否则,默认值为 0。举例说明:

 

POST /my_goods/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "brandName": {
              "value": "东"
            }
          }
        },
        {
          "term": {
            "brandName": {
              "value": "果"
            }
          }
        }
      ],
      "minimum_should_match" : 1
    }
  }
}

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(7) https://developer.aliyun.com/article/1231064

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(18)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(18)
|
索引
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(15)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(15)
|
API 数据库
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(5)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(5)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(16)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(16)
|
数据库
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(17)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(17)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(14)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(14)
|
自然语言处理
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(13)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(13)
|
API 索引
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(3)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(3)
|
定位技术
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(19)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(19)
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(12)
带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(12)

热门文章

最新文章