2
我已經建立在elasticsearch(v2.3.3)之上的Web應用程序。要過濾查詢,我使用elasticsearch的後期過濾器。但是我知道,如果我使用後置過濾器,那麼過濾的性能優勢將會丟失,因爲我沒有使用任何聚合或差分過濾。 (參考:https://www.elastic.co/guide/en/elasticsearch/guide/current/_post_filter.html)後篩選查詢中使用Java
這是我elasticsearch客戶端如何看起來像:
Client client = TransportClient.builder().build().addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),
9300));
SearchResponse response = client.prepareSearch("index_name")
.setTypes("index_type")
.setQuery(QueryBuilders.simpleQueryStringQuery(query)
.field("newContent").field("T"))
.setPostFilter(QueryBuilders.termQuery(Collection, true))
.setFetchSource(new String[] { "U", "UE", "UD", "T" }, null)
.setVersion(true).addHighlightedField("newContent").setFrom(0)
.setSize(10).execute().actionGet();
我也讀了過濾查詢在elasticsearch 2.X版本貶值。有沒有其他方法可以幫助我在執行查詢之前應用過濾器?我可能會錯過某些明顯的東西。我很感謝你的幫助。
感謝。我會嘗試這一點,並讓你知道 – Rose
嗨瓦爾,我想用你的解決方案。對於BoolQueryBuilder,我已經導入了「import org.elasticsearch.index.query.BoolQueryBuilder」包。對於OueryBuilder,我已經導入,導入「org.elasticsearch.index.query.BoolQueryBuilder」。我也嘗試了一些其他進口。但是我收到一個錯誤,它說「方法boolQuery()未定義爲類型MultiMatchQuery.QueryBuilder」。是否還有其他任何我缺少的進口產品? – Rose
對不起,我有一個錯字'QueryBuilder'應該是'QueryBuilders'。我的不好,我修好了 – Val