1.前言

昨天,学习了组合查询的查询方式。今天来看看全文查询这一章节拥有哪些神奇的查询方法

2.各种全文查询方式演练

2.1 intervals 查询 (间隔查询?)

  1. 查询体结构
  1. "intervals":{
  2. "查询的字段":{
  3. "match":{ 各自的参数},
  4. "prefix":{},
  5. "wildcard":{},
  6. "fuzzy":{},
  7. "all_of":{},
  8. "any_of":{}
  9. }
  10. }

间隔查询的作用: 可以规定查询内容的各个词项 在 文档中的一个间隔和先后顺序。

2.1.1match 查询

image.png
有ordered:true,搜索面袋它能出来,搜索 袋面呢???
image.png
搜袋面是没有的。
image.png

ordered:true : 分词后 面 袋, 两个的位置一定是 面 前 袋后 。。

max_gaps: 两个词的最大间隔 默认-1 无限。
image.png

2.1.2 prefix查询

image.png

2.1.3wildcard查询 通配符查询

image.png

2.1.4模糊查询

image.png

2.1.5 all_of 查询 any_of查询

里面会规定一个或多个 intervals 规则 即 intervals 的一个数组。 all_of是吗满足 intervals中的所有, any_of是任一满足即可
匹配酸菜,酸菜必须紧挨着,接着要在酸菜后面有一个 牛绒面,或 cold poridge
image.png

2.2match查询(匹配查询)

这个查询我要好好的整理一下,我一定要说明白。
match查询的流程: 用户输入查询内容, 查询内容分词, 匹配上的文档查询出来。
请求体结构

  1. GET /_search
  2. {
  3. "query": {
  4. "match" : {
  5. "字段名" : {
  6. "query" : "搜索内容",
  7. "analyzer":"选取搜索内容的分词器",
  8. "fuzziness":"模糊搜索的,最大编辑距离一般AUTO",
  9. 其他参数用到时看文档
  10. }
  11. }
  12. }
  13. }

2.3multi_match 多匹配查询

在用户搜索商品时,你也不知道用户输入的是 商品名称 还是店铺名称 还是 …. 嘿嘿嘿
所以,应该指定多个自字段

2.4 match_bool_prefix

太难用了
搜索 xx 开头的关键词

2.5 match_phare

从分词结果中创建短语搜索 。不是单个词搜索
搜索 xx开头的短语

2.6Query String

搜索 Apple 或 统一 为词条 分词后全文检索 。 针对各个字段
image.png

2.7Match_all

查询所有
image.png

3.精准查找

指对某个字段,前缀/范围/具体值查找

3.1exist

1.查找存在某一个字段的文档

  1. GET /_search
  2. {
  3. "query": {
  4. "exists": {
  5. "field": "字段名"
  6. }
  7. }
  8. }

3.2fuzzy

模糊搜索

  1. GET /_search
  2. {
  3. "query": {
  4. "fuzzy": {
  5. "字段名": {
  6. "value": "模糊的字段值"
  7. }
  8. }
  9. }
  10. }

3.3IDs

每个文档又个_id, 可以指定查询

3.4Prefix

这个我解释一下,不是字段的前缀,而是 字段分词后的 各个词项 是否又 和 指定相同的前缀

3.5Range

指定范围

  1. GET /_search
  2. {
  3. "query": {
  4. "range" : {
  5. "sales" : {
  6. "gte" : 10,
  7. "lte" : 20
  8. }
  9. }
  10. }
  11. }