1、Joining 多文檔查詢
1.一、nestedQuery嵌套查詢
地址:URLhtml
1.二、hasChildQuery經過自查父java
1.三、hasParentQuery經過父查子json
2、GEO 查詢【地圖查詢】api
詳細地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-geo-queries.html數組
3、專業查詢
3.一、moreLikeThisQuery實現基於內容的推薦
此查詢查找與指定的文本,文檔或文檔集相似的文檔。elasticsearch
基於內容的推薦一般是給定一篇文檔信息,而後給用戶推薦與該文檔相識的文檔。Lucene的api中有實現查詢文章類似度的接口,叫MoreLikeThis。Elasticsearch封裝了該接口,經過Elasticsearch的More like this查詢接口,咱們能夠很是方便的實現基於內容的推薦。
先看一個查詢請求的json例子:分佈式
{ "more_like_this" : {"fields" : ["title", "content"],"like_text" : "text like this one"}}
其中fields是要匹配的字段,若是不填的話默認是_all字段ide
like_text是匹配的文本。ui
除此以外還能夠添加下面條件來調節結果this
percent_terms_to_match:匹配項(term)的百分比,默認是0.3
min_term_freq:一篇文檔中一個詞語至少出現次數,小於這個值的詞將被忽略,默認是2
max_query_terms:一條查詢語句中容許最多查詢詞語的個數,默認是25
stop_words:設置中止詞,匹配時會忽略中止詞
min_doc_freq:一個詞語最少在多少篇文檔中出現,小於這個值的詞會將被忽略,默認是無限制
max_doc_freq:一個詞語最多在多少篇文檔中出現,大於這個值的詞會將被忽略,默認是無限制
min_word_len:最小的詞語長度,默認是0
max_word_len:最多的詞語長度,默認無限制
boost_terms:設置詞語權重,默認是1
boost:設置查詢權重,默認是1
analyzer:設置使用的分詞器,默認是使用該字段指定的分詞器面介紹下如何用java api調用,一共有三種調用方式,不過本質上都是同樣的,只不過是作了一些不一樣程度的封裝。
3.二、script腳本查詢
此查詢容許腳本充當過濾器。另請參閱function_score查詢。
3.三、PercolateQueryBuilder
此查詢基於文檔查找過濾器查詢。
4、span跨度查詢
跨度查詢是低級位置查詢,能夠對指定術語的順序和接近度進行專家控制。這些一般用於對法律文件或專利實施很是具體的查詢。
跨度查詢不能與非跨度查詢混合(span_multi查詢除外)。 該組中的查詢是:
更多:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-span-queries.html