2014-10-03 61 views
1

我正在開發JSF項目並在本地Java Api(不是Jest)中使用Elastic Search。 我爲elasticsearch索引映射中的高級全文搜索定義了分析器和nGram過濾器。如何使用java api查詢定義?使用Java Api進行彈性搜索查詢

curl -XPOST "http://localhost:9200/blurays/_search?pretty" -d' 
{ 
"size": 10, 
"query":{ 
"match": { 
"_all": { 
"query": "yellow bird", 
"operator": "and" 
     } 
      } 
     } 
}' 

回答

1

我不知道你的意圖,但如果你想創建一個「和」 /「或」查詢嘗試這樣的事:

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); 

和例如:

boolQueryBuilder.must(QueryBuilders.matchQuery(field, value)); 

您可以根據需要添加儘可能多的查詢(任何類型 - multiMatch,term等)。試試還應該()或mustNot()方法 - 取決於你想要什麼。

這裏是一個更復雜的例子: http://massapi.com/class/bo/BoolQueryBuilder.html


編輯: 謝謝你的評論,現在我想我明白了。 像下面的東西?

QueryBuilders.matchQuery(field, value).operator(MatchQueryBuilder.Operator.OR); 
+0

其實我想做點什麼http://blog.qbox.io/multi-field-partial-word-autocomplete-in-elasticsearch-using-ngrams這個鏈接。我製作了所有分析器,ngram ve tokenizer定義。我成功地使用curl來處理這個查詢,但是我在java api中嘗試了很多查詢類型並且沒有解決方案。 – 2014-10-03 07:34:43

+0

感謝您的回覆Tomek。編輯中的代碼很好,非常感謝。你能看看這個問題嗎?沒有人回答這個http://stackoverflow.com/questions/25765465/elasticsearch-full-text-search – 2014-10-03 08:27:34