¶ ElasticSearch 匹配查询
环境版本:
ElasticSearch 7.11.1注意: 其请求头为:
Content-Type: application/x-ndjson
¶ 基本查询
查询当前索引下所有文档
1  | GET {{url}}/library/_search  | 
按条件查询所有文档
1  | GET {{url}}/_search?q=title:guide  | 
按条件查询文档
1  | GET {{url}}/library/_search?q=title:guide  | 
term 查询 (精确查询)
term 查询不会有分析器分析的过程,文档中必须包含整个搜索的词汇
1  | GET {{url}}/library/_search  | 
terms 查询
1  | GET {{url}}/library/_search  | 
分页查询
1  | # from定义了目标数据的偏移值,size定义当前返回的事件数目  | 
返回版本号 _version
1  | GET {{url}}/library/_search  | 
¶ 组合查询
¶ match 查询
match查询时,elasticsearch 会根据你给定的字段提供合适的分析器进行分词,比如"宝马多少马力"会被分词为"宝马 多少 马力", 所有有关"宝马 多少 马力", 那么所有包含这三个词中的一个或多个的文档就会被搜索出来。
1  | GET {{url}}/library/_search  | 
¶ match_phrase 查询
match_phrase上一个例子中,一个文档"我的保时捷马力不错"也会被搜索出来,那么想要精确匹配所有同时包含"宝马 多少 马力"的文档怎么做?就要使用 match_phrase 了, 完全匹配可能比较严,我们会希望有个可调节因子,少匹配一个也满足,那就需要使用到slop。
1  | GET {{url}}/library/_search  | 
¶ multi_match 查询
如果我们希望两个字段进行匹配,其中一个字段有这个文档就满足的话,使用
multi_match比如查询 title 和 preview 这两个字段里都包含 elasticsearch 关键词的文档
1  | GET {{url}}/library/_search  | 
¶ 指定返回字段
注意: 只能返回 store 为 yes 的字段
1  | GET {{url}}/library/_search  | 
¶ prefix 前缀匹配查询
1  | GET {{url}}/library/_search  | 
¶ fuzzy 模糊查询
| value | 查询关键字 | 
|---|---|
| boost | 设置查询的权值,默认为 1.0, 默认为 0.5,对于字符串,取值为 0~1(包含 0 和 1),对于数值可能大于 1,对于日期型取值为 1d,2d,1m 这样,1d 代表一天 | 
| min_similarity | 设置匹配的最小相似度 | 
| prefix_length | 指明区分词的共同前缀长度,默认是 0 | 
| max_expansions | 指明查询的词项可扩展的数目,默认可以无限大 | 
1  | GET {{url}}/library/_search  | 
¶ more_like_this 查询
| fields | 定义字段组。默认是 _all | 
|---|---|
| like_text | 定义要查询的关键词 | 
| percent_terms_to_match | 该参数指明一个文档必须匹配多大比例的词项才被视为相似。默认值是 0.3,意思是30%的比例 | 
| min_term_freq | 该参数指明在生成的查询中查询词项的最大数目。默认为 25 | 
| stop_words | 该参数指明将被忽略的单词集合 | 
| min_doc_freq | 该参数指明词项应至少在多少个文档中出现才不会被忽略。默认是 5 | 
| max_doc_freq | 该参数指明出现词项的最大数目。以避免词项被忽略。默认是无限大 | 
| min_word_len | 该参数指明单个单词的最小长度,低于该值的单词将被忽略,默认值是e | 
| max_word_len | 指明单个单词的最大长度.高于该值的单词将被忽略。默认是无限大 | 
| boost_terms | 该参数指明提升每个单词的权重时使用的权值默认是 1 | 
| boost | 指明提升一个查询的权值。默认是 1.0 | 
| analyer | 指定用于分析的分析器 | 
1  | GET {{url}}/library/_search  | 
¶ 布尔过滤查询
1  | # 格式  | 
1  | # 建立测试数据  | 
1  | # 最简单 filter 查询  | 
1  | # 嵌套查询  | 
¶ range 范围查询
范围查询用于匹配某些字段的字段值位于特定范围内的文档。Lucene查询的类型依赖于字段的类型,对于字符串字段,是TermRangeQuery,而对于数字/日期字段,查询是NumericRangeQuery。
| 参数 | 释义 | 
|---|---|
| gte | 大于等于 | 
| gt | 大于 | 
| lte | 小于等于 | 
| lt | 小于 | 
| boost | 设置查询的推动值(boost),默认为1.0 | 
1  | # 查询price字段大于等于10小于等于20的文档。  | 
¶ 分析器
查看分析器解析的结果
1  | GET {{url}}/_analyze  | 
1  | GET {{url}}/_analyze  | 
1  | # 重新建立一个映射,让 productID 处于 not_analyzed 模式  |