日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

es的query及filter

發(fā)布時(shí)間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 es的query及filter 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么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ì)算,而且會(huì)緩存,可能相對(duì)快一些。

###判斷是否屬于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,如果加上個(gè)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。

##對(duì)于value中帶-的特殊處理 比如

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

value帶了-,則默認(rèn)會(huì)被切詞,導(dǎo)致搜索結(jié)果不準(zhǔn)確。解決辦法之一就是在字段那里加個(gè).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的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。