(五)elasticsearch之查询(Query DSL)

本文详细介绍了Elasticsearch的Query DSL,包括字段类查询如match、match_phase、term的区别,相关性算分原理和模型,constant_score及bool查询的使用,并提供了常见查询问题的解决方案。
摘要由CSDN通过智能技术生成

elasticsearch之查询(Query DSL)

一、字段类查询

字段类查询主要包含以下2类:

  • 全文匹配:针对text 类型的字段进行全文检索,会对查询语句先进行分词处理,如match、match_phrase等query类型
  • 单词匹配:不会对查询语句进行分词处理,直接去匹配字段的倒排索引,如term、terms、range等query 类型

补:match、match_phase、term、query_string的区别

1.term结构化字段查询,匹配一个值,且输入的值不会被分词器分词。

比如查询条件是:

{
   
    "query":{
   
        "term":{
   
            "foo": "hello world"
        }
    }
}

那么只有在字段中存储了“hello world”的数据才会被返回,如果在存储时,使用了分词,原有的文本“I say hello world”会被分词进行存储,不会存在“hello world”这整个词,那么不会返回任何值。

但是如果使用“hello”作为查询条件,则只要数据中包含“hello”的数据都会被返回,分词对这个查询影响较大。

2.match_phase习语匹配,查询确切的phase,在对查询字段定义了分词器的情况下,会使用分词器对输入进行分词,然后返回满足下述两个条件的document:

1.match_phase中的所有term都出现在待查询字段之中

2.待查询字段之中的所有term都必须和match_phase具有相同的顺序

{
    "foo":"I just said hello world" }

{
    "foo":"Hello world" }

{
    "foo":"World Hello" }

​ 3.使用match_phase:

{
   
  "query": {
   
    "match_phrase"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值