[英]Elasticsearch java api for full text search with filters
我想對字符串“user”進行全文搜索,它可以匹配我文檔中的任何字段,然后應用過濾器,這樣我只得到x feild值為“abc”或“xyz”的記錄。
擺弄Sense,以下要求符合我的要求。
GET _search
{
"query":{
"filtered":{
"query":{
"query_string": {
"query": "user"
}
},
"filter":
[
{"term": { "x": "abc"}},
{"term": { "x": "xyz"}}
]
}
}
}
但是,我想要一個java api來做上面的事情。 我已經搜索了彈性文檔和SO,但是沒有找到我想要的內容,就像QueryBuilders.filteredQuery似乎已棄用。 我目前正在使用2.3.4但可以升級。
Elasticsearch 2.x java Api沒有針對篩選查詢的實現。 根據elasticsearch文檔,他們建議使用bool查詢,而不是查詢的must子句和過濾器的filter子句。
在java中,您可以創建一個方法來為篩選的查詢創建包裝器方法。 這就像:
public static QueryBuilder filteredQuery(QueryBuilder query, QueryBuilder filter){
BoolQueryBuilder filteredQuery = QueryBuilders.boolQuery().must(query);
return filteredQuery.filter(filter);
}
哪里,
QueryBuilder query = QueryBuilders.queryStringQuery("user");
QueryBuilder filter = QueryBuilders.boolQuery().filter(QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("x", "abc", "xyz")));
此查詢等同於上面提到的查詢。 希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.