Я пытаюсь улучшить полнотекстовый поиск в нашем приложении, основанном на elasticsearch. У меня есть документы с неизвестным списком дополнительных свойств, которые должны быть доступны для поиска после индексации документа, но также есть список известных свойств, которые являются техническими метаданными, поэтому я хочу исключить эти свойства из полнотекстового поиска.Elasticsearch: Исключить некоторые известные поля из полнотекстового поиска
В настоящее время эта функция реализована с использованием запроса fuzzy_like_this
, и этот запрос имеет свойство fields
, но вы должны указать полный путь ко всем полям, к которым вы хотите выполнить поиск. В моем случае это не вариант, потому что я не знаю заранее список полей, и я хотел бы указать список исключений.
Я рассмотрел использовать решение, предложенное в this post установить индекс к не для этих полей метаданных, но это тоже не вариант, потому что мне нужно фильтровать некоторые из этих полей, таким образом, мне нужно индексировать их.
Я создал issue on github, который идеально подходит для того, что я хочу иметь, но он по-прежнему открыт.
Может ли кто-нибудь помочь с любым возможным решением или обходным решением здесь?
Если вы задаете отображение как 'non_analyzed' для определенного поля, оно не будет анализироваться, но фактическое значение этого поля будет проиндексировано и будет доступно для поиска с использованием полнотекстового поиска. – klappvisor
См. Ссылку, которую я дал в конце: http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/mapping-intro.html#custom-field-mappings. Вы можете установить индекс: no, чтобы сделать его не подлежащим поиску. –
index: no не делает его также фильтруемым, но мне нужно отфильтровать это поле. – klappvisor