ElasticSearch TermQuery найти подстроку в поле _id - PullRequest
0 голосов
/ 18 сентября 2018

В эластичном поиске у меня есть такие данные:

_id: 14133095_IMP
_id: 54646546_OPS....

Я хотел бы найти все идентификаторы, которые содержат IMP.

Это мое отображение

@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.

1 Ответ

0 голосов
/ 18 сентября 2018

Term запрос вasticsearch делает точные соответствия, поэтому 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...