elasticsearch的dsl搜索(1)

1. 准备索引库

在这里插入图片描述

2. 录入数据

以此类推,录入3条数据,本文举一个例子:
在这里插入图片描述
在这里插入图片描述

3. match

  • match: 先对词条进行分词,分词后的任一词语出现在当前字段中就可以查询到

查询desc属性中含有天气的文档
在这里插入图片描述
结果如下,找出了id为1003的文档:
在这里插入图片描述

4. match_all与from、size

查询所有文档
在这里插入图片描述
查询所有文档,返回指定字段
在这里插入图片描述
查询所有文档,返回指定字段,并且从第0个文档开始,查询3个文档
在这里插入图片描述

5. term、terms和match

match会把输入的词条进行分词,比如输入“很喜欢”,会把这个词分为“很喜欢”和“很”、“喜欢”,查询结果如下,会命中两个文档
在这里插入图片描述
term的意思是,不对输入的词条进行分词,比如输入“很喜欢”,就只是匹配含有关键字“很喜欢”的文档,查询结果如下,只有一个文档匹配到
在这里插入图片描述
如果一次性匹配多个不需要分词的词条,查询方法如下,带有“很喜欢”和“天气”的文档会被找到
在这里插入图片描述

6. match_phrase和match

  • match_phrase:先对词条进行分词,分词后的词语必须都包含在当前字段中,并且这个词条必须连贯,才可以查询到,比如:“喜欢学习”可以查询到一个文档,“我学习”查询不到,因为中间空了“喜欢”这个词,不够连贯。
    查询desc字段中“喜欢“、“学习”连个词语都包含的文档
    在这里插入图片描述
    如果就想查询不连贯的词条,可以使用slop字段,slop等于1,表示允许跳过一个词,以此类推。如下所示,slop等于1,就跳过了“喜欢”这个词,查询到了一个文档。当然slop等于2及以上,也是可以查询到这个文档
    在这里插入图片描述
  • match: 先对词条进行分词,分词后的任一词语出现在当前字段中就可以查询到
    查询desc字段中“喜欢“、“学习”连个词语包含任一其一的文档
    在这里插入图片描述

7. operator、minimum_should_match和ids

operator用来控制match中词条匹配的词语,operator为and的时候表示要查询的文档必须包好词条分词后的所有词语,operator为or的时候表示包含其中一个;

operator为and
在这里插入图片描述
operator为or
在这里插入图片描述
minimum_should_match表示最小匹配到的分词数百分比,意思是分词后的词语满足匹配到的百分比,只有满足了这个比例的文档才能被查询出来
在这里插入图片描述
ids表示根据id的数组进行查询
在这里插入图片描述

8. multi_match和boost

multi_match区别于match,匹配的是多个字段中包含的词语
在这里插入图片描述
同时,在多个字段匹配的时候,可以在某个字段中加入^+数字来提升某个字段的权重
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章