Elasticsearch实战 搜索数据

一、搜索请求的结构

query——这是搜索请求中最重要的组成部分,它配置了基于评分返回的最佳文档,也包括了你不希望返回哪些文档

size——代表了返回文档的数量

from——和size一起使用,from用于分页操作

_source——指定_source字段如何返回

sort——默认的排序是基于文档的得分


二、介绍查询和过滤器DSL


由于这个差异,过滤器可以比普通的查询更快,而且可以被缓存。使用过滤器的搜索和使用查询的普通搜索是非常相似的,但是需要将查询替换为“filtered”映射,包含原始查询和需要应用的过滤器。

term查询 让你可以指定需要搜索的文档字段和词条

terms查询 可以搜索某个文档字段中的多个词条

match查询 和term查询类似,match查询是一个散列映射,包含了希望搜索的字段和字符串

    布尔查询行为 默认情况下match查询使用布尔行为和OR操作符,可以修改为AND

    词组查询行为 


三、组合查询或复合查询

bool查询

    bool查询允许你在单独的查询中组合任意数量的查询,指定的查询子句表明哪些部分是必须(must)匹配、应该(should)匹配或者不能(must_not)匹配上Elasticsearch索引里的数据

    1.如果指定bool查询的某部分是must匹配,只有匹配上这些查询的结果才会被返回

    2.如果指定了pool查询的某部分是should匹配,只有匹配上指定数量子句的文档才会被返回

    3.如果没有指定must匹配的子句,文档至少要匹配一个should子句才能被返回

    4.最后,must_not子句会使得匹配其的文档被移出结果集合

must是为了组合多个子句,使用二元操作and(query1 AND query2 AND query3)

should是使用二元操作or组合多个子句(query1 OR query2 OR query3)


四、超越match和过滤器查询

gt 搜索大于某值的字段,不包括该值本身

gte 搜索大于某值的字段,包括该值本身

lt 搜索小于某值的字段,不包括该值本身

lte 搜索小于某值的字段,包括该值本身


prefix查询 

    prefix查询和过滤器允许你根据给定的前缀来搜索词条

wildcard查询

    *通配符匹配任何数量的字符(也可以不含)或者是?通配符匹配单个字符


五、使用过滤器查询字段的存在性

exists过滤器

missing过滤器

将任何查询转变为过滤器

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天写了倒序的程序
    4e7a0fcb4de6阅读 123评论 0 1
  • 本人属于中性皮肤,t区容易出油也会有翘皮现象。每次美美化妆出门,到了中午总会在眉头和鼻翼两侧结粉或翘皮,怎么看着都...
    枫缇阅读 339评论 1 0
  • ——致J君的一封信 J君: 您好!您因为被人说了一句“教养实不敢恭维”而气冲斗牛了。哈哈,恕我直言,心平气和读完此...
    禅静一生阅读 354评论 5 6
  • 今天,看到刘润老师在007发出江湖令,要招兵买马。终于等来了机会,于是连拟了这份投名状! 我是谁? 5商两期学员及...
    玫瑰云he阅读 544评论 6 2