为什么80%的码农都做不了架构师?>>>   

##query与filter的合并

  • Queries and filters merged

将filter的api列为deprecated,然后合并到query里头。之后查询的context就分为query的context和filter的context。凡是不是filter的context就走query的context。filter的话,其结果不参与score计算,而且会缓存,可能相对快一些。

###判断是否属于filter context

  • the constant_score query
  • the must_not and (newly added) filter parameter in the bool query
  • the filter and filters parameters in the function_score query
  • any API called filter, such as the post_filter search parameter, or in aggregations or index aliases

###deprecated的方式

{"query": {"filtered": {"filter": {"term": {"year": 1961}}}}
}

###合并后的方式

{"query": {"bool": {"filter": {"term": {"status": "active"}}}}
}

bool的话,这种方式出来的score为0,如果加上个match_all的话,则score为1

{"query": {"bool": {"must": {"match_all": {}},"filter": {"term": {"status": "active"}}}}
}

###constant_score方式

{"query": {"constant_score": {"filter": {"term": {"status": "active"}}}}
}

constant_score的方式,默认score为1

##match和term query的区别

  • matchQuery的机制是:先检查字段类型是否是analyzed,如果是,则先分词,再去去匹配token;如果不是,则直接去匹配token。
  • termQuery的机制是:直接去匹配token。

##对于value中带-的特殊处理 比如

{"query": {"bool": {"filter": {"term": {"status": "demo-active"}}}}
}

value带了-,则默认会被切词,导致搜索结果不准确。解决办法之一就是在字段那里加个.raw

{"query": {"bool": {"filter": {"term": {"status.raw": "demo-active"}}}}
}

##关于合并后的filter在java api中的使用 使用json最直接,省得再用java的api翻译一遍

String queryJson = "{\n" +"  \"query\": {\n" +"    \"constant_score\": {\n" +"      \"filter\": {\n" +"        \"term\": {\n" +"          \"status.raw\": \"demo-active\"\n" +"        }\n" +"      }\n" +"    }\n" +"  }\n" +"}";
QueryBuilders.wrapperQuery(queryJson)

##doc

  • ElasticSearch中的Filter DSL | 三分钟
  • 在elasticsearch里如何高效的使用filter [性能优化必看]
  • Bool Query
  • 关于全文搜索elasticsearch中matchQuery和termQuery的区别
  • ElasticSearch Java Query API 基本使用指南
  • ElasticSearch searching with hyphen inside a word
  • Terms table that has a "-" in the field splits the item up

转载于:https://my.oschina.net/go4it/blog/818094

es的query及filter相关推荐

  1. Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计

    Elasticsearch实战-查询query,filter过滤,结合aggs 进行局部/全局聚合统计 文章目录 Elasticsearch实战-查询query,filter过滤,结合aggs 进行局 ...

  2. ES中的Query与Filter的区别

    QElasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. Query DSL 与 Filter DSL DSL查询语言中存在两种:查询DSL( ...

  3. ES的Query的DSL语法Filter DSL聚合分析

    1 查询所有(match_all query) GET /lagou-company-index/_search { "query":{ "match_all" ...

  4. Elasticsearch query和filter过滤有什么不同

    1. 概述 在使用DSL进行Elasticsearch的查询中,通常我们都是使用query进行过滤匹配,比如下面这段代码 GET /my_index/_search {"query" ...

  5. Elasticsearch DSL中Query与Filter的不同

    Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. 举个DSL例子 GET _search {"query": { & ...

  6. 关于es查询dsl的filter与must,term与match的区别

    [1]创建es7  索引 put localhost:9200/pdi_cust , 注意 PUB_CUST_LABEL 字段分词了. es7 不支持type ,所以 无需指定type. { &quo ...

  7. Es检索 must与filter区别

    参考文章:Es检索 must与filter区别 must和filter使用场景 先使用filter把不需要的过滤掉,例如现在有一个电子商务的网站,我要查询一个category的id为1下面的所有产品, ...

  8. ES基本查询,filter 查询,组合查询

    Elasticsearch 是功能强大的全文搜索引擎,用它的目的就是为了能快速的查询你想好要的数据 基本查询:利用Elasticsearch内置查询条件进行查询 组合查询:把多个基本查询组合在一起的复 ...

  9. 六:es 的Query DSL

    Elasticsearch提供了基于JSON的完整查询DSL(特定于域的语言)来定义查询.将查询DSL视为查询的AST(抽象语法树),它由两种子句组成: 官网地址 1. Query and filte ...

最新文章

  1. Python os.path路径模块中的操作方法总结
  2. 再谈变分自编码器VAE:从贝叶斯观点出发
  3. php流导出excel内存溢出,phpExcel导出大量数据出现内存溢出错误的解决方法
  4. oracle 递归计算,SQL(Oracle)中的递归计算
  5. cloud 异步远程调用_异步远程工作的意外好处-以及如何拥抱它们
  6. 阿里云容器技术专家莫源:乘风踏雪归来,仍是此间少年
  7. [Ruby on Rails]Rails 3使用ActionMailer通过163发送邮件
  8. 排查Linux机器是否已经被入侵
  9. csdn中让图片居中
  10. TT安全小学生成长记
  11. IPv4和IPv6、局域网和广域网、网关、公网IP和私有IP、IP地址、子网掩码、网段、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?
  12. 图表无法显示中文字,都是方框框?
  13. 关于网站中Logo部分的写法
  14. 基于地理位置的Android AR app项目简述
  15. python基本类型关键字_python基本类型关键字_python中的关键字---1(基础数据类)...
  16. 45、链栈_LinkStack
  17. 黑鹰的VIP数据库(一)
  18. ❤️Android Apk 的打包过程 ❤️ 只需两幅图
  19. GPU 编程 CPU 异同点_分析师:英特尔(INTC.US)GPU不会构成威胁
  20. 微信支付回调通知实现

热门文章

  1. Android-源代码分析
  2. Android 屏幕适配
  3. 360浏览器极速模式_【小技巧】解除浏览器主页以及,锁定主页~
  4. vim无法保存退出_180万程序员不知如何退出Vim编辑器...
  5. 通用印刷体识别 php,实战腾讯云ORC文字识别
  6. java异步调用第三方接口_Java调用第三方系统接口获取数据
  7. 在Linux里安装和启动nginx的方法
  8. 配置HADOOP开发环境
  9. 使用SSH+SFTP操作终端全解析,告别XShell
  10. SQL工具-技术支持工具