我有以下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"。