zoukankan      html  css  js  c++  java
  • ELK 学习笔记之 elasticsearch bool组合查询

    elasticsearch bool组合查询:

    相当于sql:where _type = 'books' and (price = 500 or title = 'bigdata')

    Note:

    • must: 相当于and
    • should:相当于or
    • must_not:相当于not

    判断属性为null:

    Query与Filter

    转载:http://www.cnblogs.com/xing901022/p/4975931.html

    查询在Query查询上下文和Filter过滤器上下文中,执行的操作是不一样的:

    查询上下文:

    在查询上下文中,查询会回答这个问题——“这个文档匹不匹配这个查询,它的相关度高么?”

    如何验证匹配很好理解,如何计算相关度呢?之前说过,ES中索引的数据都会存储一个_score分值,分值越高就代表越匹配。另外关于某个搜索的分值计算还是很复杂的,因此也需要一定的时间。

    查询上下文 是在 使用query进行查询时的执行环境,比如使用search的时候。

    过滤器上下文:

    在过滤器上下文中,查询会回答这个问题——“这个文档匹不匹配?”

    答案很简单,是或者不是。它不会去计算任何分值,也不会关心返回的排序问题,因此效率会高一点。

    过滤上下文 是在使用filter参数时候的执行环境,比如在bool查询中使用Must_not或者filter

    另外,经常使用过滤器,ES会自动的缓存过滤器的内容,这对于查询来说,会提高很多性能。

    总结

    1 查询上下文中,查询操作不仅仅会进行查询,还会计算分值,用于确定相关度;在过滤器上下文中,查询操作仅判断是否满足查询条件

    2 过滤器上下文中,查询的结果可以被缓存。

  • 相关阅读:
    Sudoku Solver [LeetCode]
    Populating Next Right Pointers in Each Node [LeetCode]
    Binary Tree Level Order Traversal [LeetCode]
    Clone Graph [LeetCode]
    Merge k Sorted Lists [LeetCode]
    Combinations [LeetCode]
    021 面向对象 一
    给图片加点料
    质数
    ex10 找出藏在字符串中的“密码”
  • 原文地址:https://www.cnblogs.com/AK47Sonic/p/7614839.html
Copyright © 2011-2022 走看看