es的query及filter
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
##query與filter的合并
- Queries and filters merged
將filter的api列為deprecated,然后合并到query里頭。之后查詢的context就分為query的context和filter的context。凡是不是filter的context就走query的context。filter的話,其結(jié)果不參與score計(jì)算,而且會緩存,可能相對快一些。
###判斷是否屬于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的方式,默認(rèn)score為1
##match和term query的區(qū)別
- matchQuery的機(jī)制是:先檢查字段類型是否是analyzed,如果是,則先分詞,再去去匹配token;如果不是,則直接去匹配token。
- termQuery的機(jī)制是:直接去匹配token。
##對于value中帶-的特殊處理 比如
{"query": {"bool": {"filter": {"term": {"status": "demo-active"}}}} }value帶了-,則默認(rèn)會被切詞,導(dǎo)致搜索結(jié)果不準(zhǔn)確。解決辦法之一就是在字段那里加個.raw
{"query": {"bool": {"filter": {"term": {"status.raw": "demo-active"}}}} }##關(guān)于合并后的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 [性能優(yōu)化必看]
- Bool Query
- 關(guān)于全文搜索elasticsearch中matchQuery和termQuery的區(qū)別
- ElasticSearch Java Query API 基本使用指南
- ElasticSearch searching with hyphen inside a word
- Terms table that has a "-" in the field splits the item up
轉(zhuǎn)載于:https://my.oschina.net/go4it/blog/818094
總結(jié)
以上是生活随笔為你收集整理的es的query及filter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【githubgit】1、github中
- 下一篇: WebSphere MQ----通道