通过多个值进行弹性搜索查询

时间:2018-09-24 16:00:49

标签: java elasticsearch

我正在使用java QueryBuilder在elasticQuery中搜索值。以下是我的代码段。 弹性搜索中的示例2 json存储 {  “ dataLayer”:“ sourcefeed” } { “ dataLayer”:“沙盒” }

BoolQueryBuilder qb = QueryBuilders.boolQuery();
qb.must(QueryBuilders.matchQuery("dataLayer",inputValue);

输入值可以是sourcefeed或sandbox或两者皆有,取决于我的输入值,它应该返回输出。对于单个值,它可以正常工作,但是如果我将输入指定为InputValue =“ sourceFeed,sandbox”,则不是工作。尝试了termsQuery,但无法正确获取。请帮助我解决问题。

感谢Prakash

1 个答案:

答案 0 :(得分:0)

SearchSourceBuilder query = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
List<QueryBuilder> queryBuilders1 = new ArrayList<QueryBuilder>();
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery("dataLayer.keyword", listOfValues);
queryBuilders1.add(termsQuery);
boolQueryBuilder.must(queryBuilders1.get(0));
query.query(boolQueryBuilder);

在一个列表中添加sourceFeed和sandbox等,并将其传递到QueryBuilders.termsQuery中。 试试这个。希望这会起作用。