Свободный текстовый запрос в одно поле на даты поддержки Elasticsearch - PullRequest
1 голос
/ 09 марта 2020

Предположим, у меня есть индекс с несколькими полями типа text и одним или несколькими типами date (некоторого формата, скажем, yyyy/MM/dd). Если я хочу, чтобы пользователи могли выполнять запросы, используя только одно поле ввода (например, как в Google), как мне go поддерживать поля date? До сих пор поля text в основном запрашивались с использованием запросов simple_query_string и multi_match.

Теперь simple_query_string работает нормально, если целое date в правильном формате поиск. Но если, например, я хочу фильтровать по году, пропущенные поля автоматически заполняются наименьшим допустимым значением (например, для месяцев это 01).

Вот подходы, которые я пробовал до сих пор:

  • разделить компоненты поля date на год, месяц и c. Это, однако, насколько я могу судить, требует update_by_query, в то время как иметь это правило во время индекса было бы намного лучше ...
  • использовать range запрос. Однако доступное форматирование не поддерживает уровень свободы, который должен иметь пользовательский ввод (поэтому что-то вроде 2000 <some-name> не будет принято ...
  • скопируйте значение как дату в другое поле и примите больше форматов - > так не работает ...

Какие могут быть следующие мои подходы:

  • определить анализатор, который разделяет даты по доступным разделителям и индексирует все как текст и запрос в виде текста. Это, вероятно, должно работать, но элегантно это не ...
  • изменить конвейер logsta sh, чтобы записать компоненты даты в разные поля. Однако, такое чувство, что это должно быть возможно сделать в самом Elasticsearch ...

Кто-нибудь должен был решить эту специфическую c проблему раньше? Спасибо за предложения!

...