015-elasticsearch5.4.3【五】-搜索API【四】Joining 多文檔查詢、GEO查詢、moreLikeThisQuery、script腳本查詢、span跨度查詢

1、Joining 多文檔查詢

joining query
  像Elasticsearch這樣的分佈式系統中執行完整的SQL樣式鏈接很是昂貴。相反,Elasticsearch提供兩種形式的鏈接,旨在水平擴展。主要包含如下兩種:
嵌套查詢
  文檔可能包含嵌套類型的字段。這些字段用於索引對象數組,其中每一個對象均可以做爲獨立文檔查詢(使用嵌套查詢)。
父子查詢
  父子關係能夠存在於單個索引中的兩種文檔類型之間。has_child查詢返回其子文檔與指定查詢匹配的父文檔,而has_parent查詢返回其父文檔與指定查詢匹配的子文檔。

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

此查詢基於文檔查找過濾器查詢。

參看地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-specialized-queries.html#java-query-percolate-query

4、span跨度查詢

  跨度查詢是低級位置查詢,能夠對指定術語的順序和接近度進行專家控制。這些一般用於對法律文件或專利實施很是具體的查詢。

  跨度查詢不能與非跨度查詢混合(span_multi查詢除外)。 該組中的查詢是:

  更多:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-span-queries.html

相關文章
相關標籤/搜索