2017-09-20 173 views
-1

我無法將從sql查詢轉換爲elasticsearch。將查詢從SQL轉換爲Elasticsearch

SQL查詢轉換: - 。

選擇TB1 *從表TB1其中tb1.coloumn1在 ( 「值1」, 「值2」, 「值3」)和tb1.coloumn2 = 「值4」和 tb2.cloumn3 =「value5」;

curl'http:// :9200/index1/document/_search?pretty'-d '{「query」:{「constant_score」:{「filter」:{
「terms」:{「product」:[「Sudaderas」,「Bicicletas 「]}}
}}}」

--------------- Error--

{ 「花」:8, 「TIMED_OUT」 :false,「_shards」:{ 「total」:5, 「successful」:5, 「failed」:0},「hits」:{ 「total」:0, 「MAX_SCORE」:空, 「命中」:[]}}

謝謝,浸

+1

你試過了什麼?爲什麼它不工作? – aclokay

+0

已嘗試過術語查詢。但它不起作用。我添加了一個curl命令。 – Dipt166

+0

只是downvoted的問題沒有答案? ...然後Y downvote ?? – Dipt166

回答

0

SQL查詢轉換爲elasticsearch: -

SQL查詢: -

select tb1。* from table tb1 where tb1.coloumn1 in (「value1」,「value2」,「value3」)and tb1.coloumn2 =「value4」and tb2.cloumn3 =「valu E5" ;

Elasticsearch查詢: -

{ 「布爾」:{ 「必須」:{ 「術語」:{ 「列1」: 「頂」, 「blusas」] } }, 「應該」:[{ 「匹配」:{ 「列2」:{ 「查詢」: 「Blusas」, 「類型」: 「布爾」 } } },{ 「匹配」:{ 「欄3」:{ 「查詢」: 「Blusas」, 「類型」: 「布爾」 } } }]}}

使用術語查詢進行這項工作需要做很多修改。但會列出一些: -

  1. 術語只能查詢小寫字母。因爲我們的默認分析儀是這樣設置的。

  2. 這個字段是否被分析或不被分析並不重要。在找出這個術語查詢的地方的同時,我發現該字段不應該被分析。這也是由於默認的分析儀。

確保在使用術語/術語查詢時使用小寫字母。

  1. 不完全清除: -當查詢有空格時,術語查詢不起作用。我正在嘗試解決這個問題。但目前的問題已得到解決。

春Elasticsearch的Java相同的查詢執行: -

SEARCHQUERY searchQuery1 =新NativeSearchQueryBuilder() .withQuery(QueryBuilders.boolQuery()必須(QueryBuilders.termsQuery( 「列1」, 。 (QueryList.List)) 。應該(QueryBuilders.matchQuery(「column2」,data))。應該(QueryBuilders.matchQuery(「coloumn3」,data))) .build();

List table1List = elasticsearchTemplate.queryForList(searchQuery1, table.class);

column1List將所有元素作爲單個單詞並在將其插入數組時將其轉換爲小寫。

希望這可以幫助未來的人。

讓我知道是否有更好的方法來做這件事。

謝謝