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 过滤器上下文中,查询的结果可以被缓存。

最新文章

  1. Consul-template的简单应用:配置中心,服务发现与健康监测
  2. [翻译]:怎样从C/C++代码中对C#进行回调
  3. path入门 20141102-1405
  4. mysql命令行基本操作
  5. android menu 开发
  6. 鼠标移动到表格的TD上的时候显示成一个手型的样子怎么做?
  7. node http.request请求
  8. PHP 类中的常量
  9. 同一个页面多个CALayer重绘的办法
  10. Linux学习之head命令
  11. Java基础笔记4
  12. 强力推荐各位攻城狮查看,收藏IT职业技能图谱(全套13张)
  13. java类的加载和执行顺序
  14. PHP 将大量数据导出到 Excel 的方法
  15. CEF3开发者系列之Cookies管理和共享
  16. Eclipse Oxygen创建maven web项目(二)
  17. 使用JSP页面生成PDF报表
  18. oc Delegate
  19. koa源码阅读[0]
  20. 当Windows Server 2012的主DC出了问题, 如何迁移其上的FSMO角色?

热门文章

  1. EDU 50 E. Covered Points 利用克莱姆法则计算线段交点
  2. Git暂存本地代码,强制获取远程最新代码
  3. Redis字符串键的底层原理
  4. 前端利器躬行记(5)——Git
  5. Alodi:为了保密我开发了一个系统
  6. 并发之初章Java内存模型
  7. FreeSql (二十二)Dto 映射查询
  8. Android之MVP设计模式
  9. 正则表达式(RegExp)
  10. NPOI导出数值格式设置(我是保留四位小数,不足补0)