gpt4 book ai didi

java - ElasticSearch TermQuery 在 _id 字段中查找子字符串

转载 作者:行者123 更新时间:2023-12-02 01:55:21 25 4
gpt4 key购买 nike

在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 的记录。

最佳答案

elasticsearch 中的

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

关于java - ElasticSearch TermQuery 在 _id 字段中查找子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52388334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com