Я хочу написать запрос для возможности поиска по всем полям в моем индексе Elasticsearch. Я использовал массовый API для вставки данных в es и не выбирал какой-либо конкретный анализатор при индексации. По умолчанию мои поля будут проанализированы, и я не хочу менять свою индексацию.
Я хочу создать запрос, который ищет фрагмент текста во всех полях вasticsearch и возвращает все документы, содержащие этот текст как подстрока в некотором поле. Одним из способов является использование запроса MatchPhrasePrefix для каждого поля вместе с запросом OR во всех полях для поиска по всему документу. Некоторые из моих полей - это строки, а некоторые - карты строк. Запрос MatchPhrasePrefix для строки в порядке. Но для карт строк ключи не являются фиксированными, и пользователь может ввести любой ключ и любое количество ключей. Поэтому я застрял на том, как использовать запрос MatchPhrasePrefix для всех ключей такой карты, где сами ключи не являются фиксированными. Если бы ключи были исправлены, я бы перебрал записи карты и использовал бы запрос MatchPhrasePefixQuery ("mapname.key", "string") вместе с запросом OR.
Я согласен, что могу использовать QueryString и SimpleQueryString и используйте подстановочные знаки для таких ключей, как Query ("mapname. *", "string"), но это не дает правильных результатов. Поэтому я использую запрос MatchPhrasePrefix, поскольку мои поля анализируются.
Любые предложения о том, как я могу искать строку в таком поле динамической c карты. Если не это, то как мне найти строку в моем документе вasticsearch 7.4, где нет поля _all?