在elasticsearch中,我有这样的数据:
_id:14133095_IMP
_id:54646546_OPS
....
我想找到所有包含IMP的ID。
这是我的地图
@Id
private String id;
这是我的查询
QueryBuilder query = QueryBuilders.boolQuery()
.must(QueryBuilders.termsQuery("_id", "imp"))
.must(QueryBuilders.termsQuery("sourceSystem", "smart"))
.must(QueryBuilders.termsQuery("taskStatus", BpmConstants.ACTIVE_STATES.stream().map(Enum::name).collect(Collectors.toList())));
问题在于第一个必须子句。没有它会发现很多记录(包括没有_imp的记录)。我还想通过_id仅过滤包含IMP的记录。
答案 0 :(得分:2)
Term
查询确实匹配,因此imp将不匹配14133095_IMP。您需要使用match
查询来进行全文搜索。
您可以在
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html