2016-01-14 73 views
0

我的ES索引中有兩個字段:min_durationmax_duration。我想創建一個查詢,找到所有輸入duration文件這樣的:Elasticsearch Java API中的範圍查詢

min_duration<=duration<=max_duration

例如,如果duration爲30秒,然後我應該得到比EQ min_durationduration和小於duration所有文檔等於max_duration

我正在使用ES Java API,似乎是範圍過濾器是要走的路。我已經構建了範圍過濾器如下:

val filter = FilterBuilders.andFilter(FilterBuilders.rangeFilter("min_duration").lte(duration),FilterBuilders.rangeFilter("max_duration").gte(duration)) 

雖然它似乎還沒有爲我工作。這是建立這種類型的查詢的正確方法,還是我錯過了什麼?

謝謝。

回答

1

試着用bool query來做。包裹你的兩個範圍條款就像

QueryBuilder qb = boolQuery() 
    .must(rangeQuery("max_duration").gte(duration)) 
    .must(rangeQuery("min_duration").lte(duration)); 

這是否對您有幫助?