1、match   轻量级搜索

1 GET /wymlib/_search
2
3 {
4   "query": {
5     "match": {
6        "title": "王阳明"
7     }
8   }
9 }

上面的查询匹配就会进行分词,比如"王阳明"会被ik分词器分为"王阳明" ,"阳明", "王","阳","明" 那么所有包含这些词中的一个或多个的文档就会被搜索出来。并且根据lucene的评分机制(TF/IDF)来进行评分。

2、match_phrase   短语搜索

1 GET   /wymlib/_search
2
3 {
4   "query": {
5     "match_phrase": {
6       "title": "王阳明"
7     }
8   }
9 }

match_phrase要求只匹配上"王阳明"这个短语,完全匹配可能比较严,我们会希望有个可调节因子,少匹配一个也满足,那就需要使用到slop

 1 {
 2   "query": {
 3     "match_phrase": {
 4         "title" : {
 5             "query" : "王阳明",
 6             "slop" : 1
 7         }
 8     }
 9   }
10 }

3、multi_match   多字段匹配

如果我们希望两个或两个以上的字段进行匹配,其中一个字段能匹配上就满足的话,使用multi_match

 1 {
 2   "query": {
 3     "multi_match": {
 4       "query": "王阳明第三卷",
 5       "fields": [
 6         "title",
 7         "keywords",
 8         "author"
 9       ]
10     }
11   }
12 }

multi_match中有三种类型即: best_fields 、 most_fields 和 cross_fields (最佳字段、多数字段、跨字段)

1) 我们希望完全匹配的文档占的评分比较高,则需要使用best_fields,multi_match默认是best_fields

 1 {
 2   "query": {
 3     "multi_match": {
 4       "query": "王阳明",
 5       "fields": [
 6         "title",
 7         "yearAlias"
 8       ],
 9       "minimum_should_match": "70%"
10     }
11   }
12 }

2) 我们希望越多字段匹配的文档评分越高,就要使用most_fields

{"query": {"multi_match": {"query": "王阳明","type": "most_fields","fields": ["title","keywords"]}}
}

3) 我们会希望这个词条的分词词汇是分配到不同字段中的,那么就使用cross_fields

 1 {
 2   "query": {
 3     "multi_match": {
 4       "query": "王阳明",
 5       "fields": [
 6         "title",
 7         "keywords"
 8       ],
 9       "type": "cross_fields"
10     }
11   },
12   "highlight": {
13     "fields": {
14       "title": {
15         "pre_tags": ["<a>" ],
16         "post_tags": [ "</a>"]
17       },
18       "keywords": {
19         "pre_tags": ["<b>" ],
20         "post_tags": ["</b>" ]
21       }
22     }
23   }
24 }

上面查询语句中,包含了高亮显示结果属性:highligt

4、term 精确值查找

1 {
2   "query": {
3     "term": {
4       "title": "王阳明"
5     }
6   }
7 }

与match查询类似,但term是精确查找,代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇,但是 term 和 terms 是 必须包含(must contain) 操作,而不是必须精确相等(must equal exactly),当查询 jack 时,[jack] 和[jack,jone]两条数据都会被找到

转载于:https://www.cnblogs.com/hoojjack/p/8600230.html

Elasticsearch 不同的搜索类型之间的区别相关推荐

  1. 【整理】Python中的re.search和re.findall之间的区别和联系 + re.finall中带命名的组,不带命名的组,非捕获的组,没有分组四种类型之间的区别

    之前自己曾被搞晕过很多次. 后来使用这些函数次数多了之后,终于比较清楚的弄懂了两者之间的区别和关系了. 尤其是一些细节方面的注意事项了. 在看下面的总结和代码之前,请先确保你对如下基本概念已经有所了解 ...

  2. MM模块几个移动类型之间的区别

    今天来给大家说说MM模块移动类型102 122 166之间的关系和异同点. 一.总述 1.102  主要用于处理因操作人员人为原因产生的错误(如录入数量等等) 2.122  主要用于处理当月因供应商送 ...

  3. python中str类型和object类型_pandas str和object类型之间的区别

    现象: Numpy区分了str和object类型,其中dtype('S')和dtype('O')分别对应于str和object. 然而,pandas缺乏这种区别 str和object类型都对应dtyp ...

  4. Elasticsearch搜索类型(SearchType)详解

    SearchType详解 es在查询时,可以指定搜索类型为 QUERY_THEN_FETCH,QUERY_AND_FEATCH,DFS_QUERY_THEN_FEATCH和DFS_QUERY_AND_ ...

  5. Elasticsearch搜索类型讲解(QUERY_THEN_FETCH,QUERY_AND_FEATCH,DFS_QUERY_THEN_FEATCH和DFS_QUERY_AND_FEATCH)...

    es在查询时,可以指定搜索类型为QUERY_THEN_FETCH,QUERY_AND_FEATCH,DFS_QUERY_THEN_FEATCH和DFS_QUERY_AND_FEATCH.那么这4种搜索 ...

  6. Elasticsearch搜索类型(query type)详解

    es在查询时,可以指定搜索类型为QUERY_THEN_FETCH,QUERY_AND_FEATCH,DFS_QUERY_THEN_FEATCH和DFS_QUERY_AND_FEATCH.那么这4种搜索 ...

  7. c语言程序中u8是什么意思,c – __u8和uint8_t之间的区别

    有人可以解释uint8_t和__u8类型之间的区别吗? 我知道uint8_t是在stdint.h中定义的,并且它们在每个unix系统上都可用. /* Unsigned. */ typedef unsi ...

  8. 科普向 | Lucene,Solr,Elasticsearch之间的区别和联系

    最近有幸研究到了这块领域的内容,而我本人也对于这块非常的感兴趣,所以打算写一篇文章记录一下- 简介 Lucene Lucene是 apache 软件基金会某个项目组的一个子项目,是一个开放源代码的全文 ...

  9. Lucene,Solr,Elasticsearch之间的区别和联系

    https://blog.csdn.net/weixin_44318830/article/details/109166004 简介 Lucene         Lucene是 apache 软件基 ...

最新文章

  1. 远程控制virtual box虚拟机系统的三种方式
  2. springMVC和Shiro框架整合使用简单示例 【转】
  3. java开源的cms系统jsp cms系统
  4. mysql索引类型 优劣_Mysql索引的类型和优缺点详解
  5. DeepLearningAI 学习笔记 1.1 深度学习概论
  6. 车主吐槽某电动车保养割韭菜,却遭其总裁公开恐吓?车主:必须视频道歉
  7. 【Swift 4.0】扩展 WCDB 支持 SQL 语句
  8. 实训作业 4(界面2)
  9. 马云点名的工程师,除了几百封求爱信还有13项区块链专利
  10. 【会议】2009-1-6
  11. 安装ANSYS19.0的正确方法(附下载)
  12. 3.15 study 简单移动动画js实现
  13. 从招聘信息来看,小米、爱奇艺、360甚至芒果TV都要做VR了
  14. NB无信号以及无法连接网络问题分析及解决
  15. Qt编译通过,运行时出现the process was ended forcefully的crashed问题
  16. 如何将几张照片拼成一张?
  17. 【Oracle】Oracle创建触发器
  18. C#学习之ASP.NET概述
  19. 开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
  20. 中台战略-第三章、全面解读中台

热门文章

  1. 洪嘉振 计算多体系统动力学pdf_多体动力学演化python入门——quantum many-body scars 和稀疏矩阵后续...
  2. linux修改vim配色,更改vim配色的具体操作 更改vim配色的图文教程
  3. 联想rd540服务器怎么装系统,联想RD540加显卡BIOS设置
  4. python shape函数_Perlin噪声和Python的ctypes
  5. python异常处理_汇总三大python异常处理、自定义异常、断言原理与用法分析
  6. 深度学习:神经网络基础知识总结
  7. 笔记:Tensor RPCA: Exact recovery of corrupted low-rank tensors via convex optimization
  8. 【杂谈】有三AI知识星球最近都GAN了哪些内容?
  9. 中国传感器行业应用规模与投资价值分析报告2022版
  10. 中国药妆行业投资现状与发展策略分析报告2022-2028年