如何在弹性搜索中查询特定字段的值列表



我有以下POJO:

@Data
@Document(indexName = "person")
public class Person {
@Id
@JsonIgnore
private String id;
private String mainId;
private String name;
}

在给定值列表(例如:["1234"、"567"、"8910"](的情况下,我如何从mainId字段中搜索?

到目前为止,我正在使用它进行编码。但当我试图传递一个包含太多值的列表时,它给了我一个例外:

BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
for (String mainId : mainIds) {
queryBuilder.should(QueryBuilders.matchQuery("mainId", mainId ));
}
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(queryBuilder).build();
SearchHits<T> searchHits = this.operations.search(searchQuery, this.entityClass,
this.operations.getIndexCoordinatesFor(this.entityClass));

您可以使用terms查询通过传递一个数组或一组String来匹配具有多个值的字段。

QueryBuilder queryBuilder = QueryBuilders.boolQuery()
.should(QueryBuilders.termsQuery("mainId",mainId));

请注意termsQuery中的"s"。

最新更新