深入搜索--结构化搜索

精确查找

term 查询数字

term 可以用来处理数字, 布尔值, 日期, 及文本

如果不希望对查询评分计算, 只希望对文档包括或排除的计算, 可以使用 constant_score 查询 以非评分模式来执行 term 查询

term 查询文本

如果需要对文本字段进行精确查找, 需要将该字段设置为 not_analyzed (无需分析的) , 不然 es 会对其进行进行分析, 分析之后精确匹配就获取不到值了;

es 能够缓存非评分查询从而获取更快的访问,但是 它不会太聪明地缓存一些使用极少的东西, es 会为每个索引跟踪保留查询个历史状态, 如果查询留在最近的 256 次潮汛中被用到, 那么它就会被缓存到内存中

非评分计算是首先执行的

组合过滤器

如果查询是多条件的查询, 那么需要用到 bool 查询, bool 查询是个 复合过滤器, 它可以接受多个其他过滤器作为参数, 并将这些过滤器结合成各种各样的 布尔逻辑组合

布尔过滤器

一个bool 过滤器由三部分组成


must  所有的语句都必须(must) 匹配, 与and 等价

must_not 所有的语句都 不能(must_not) 匹配, 与 not 等价,

should 至少有一个语句要匹配, 与 or 等价

当我们需要多个过滤器的时候, 只需要将他们置入 bool 过滤器的不同部分即可, 上面的三部分 都是可选的, 不是必选的, 可以有一个, 也可以同时都存在

bool 过滤器 本身也是一个过滤器, 所以我们可以将 bool 过滤器置于其他bool 过滤器内部




term 和  terms 是 包含的意思, 而不是相等


精确相等

如果期望得到完全相等的查找怎么办? 最好的方式是 增加并索引另一个字段, 这个字段用以存储该字段包含词项的数量


范围:

range 可以对范围进行查找


1



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

推荐阅读更多精彩内容

  •   结构化搜索(Structured search) 是指有关探询那些具有内在结构数据的过程。比如日期、时间和数字...
    布鲁斯理阅读 700评论 0 0
  • 精确值查找 term 查询数字 我们首先来看最为常用的 term 查询, 可以用它处理数字(numbers)、布尔...
    觉释阅读 306评论 0 0
  • 结构化搜索:在结构化查询中,我们得到的结果总是非是即否,要么存在于集合之中,要么存在于集合之外,结构化查询不关心文...
    我不傻_cyy阅读 423评论 0 0
  • 注:此文档仅适用于 Elasticsearch > 5.0 版本 Elasticsearch 的功能之一就是搜索,...
    zhchenxin阅读 1,857评论 0 1
  • 查询的分类 Leaf query Cluase 叶子查询(简单查询) 这种查询可以单独使用,针对指定的字段查询指定...
    不知名的蛋挞阅读 1,364评论 0 1