У меня есть пример использования, который немного похож на пример ES dynamic_template, где я хочу, чтобы определенные строки анализировались, а некоторые нет.Изменение имени поля пользовательского динамического сопоставления ES
В моих полях документа нет такого соглашения, и решение принимается на основе внешней схемы. Так в настоящее время мой поток:
- Я хватаю документ входы от DB
- Я захватить approrpiate схему (ту же базу данных, в настоящее время с помощью logstash для импорта)
- я настроить имя в документе соответственно (с использованием рубинового мутатора logstash в):
- если не анализировался я не меняю имя
- если я проанализировал изменения его
ORIGINALNAME_analyzed
Это будет обрабатывать анализируемую/not_analyzed проблемы благодаря dynamic_template я поставил, но теперь пользователь не знает, какие поля анализируются так что нет простого способа для него, чтобы писать запросы, потому что он не знает, как называется поле.
Я хотел использовать псевдонимы полей, но, по-видимому, ES их не поддерживает. Есть ли какие-либо другие механизмы, которые я пропускаю, я мог бы использовать здесь, как переименование поля после индексации или что-то еще?
Например this ancient thread упоминает, что field.sub.name
может быть запрошен как только name
, но я предполагаю, что это изменилось, когда они запрещены .
во имя некоторое время назад, так как я не могу заставить его работать?
Да, вот как я это делаю сейчас - на самом деле я также храню сопоставление имен в ES, поэтому я могу легко получить себе настоящее имя, просто надеялся, что есть что-то встроенное :-) –
Вы используете только 'multi_match' запросы? – bittusarkar
На самом деле я использую довольно много разных типов запросов и агрегаций. Начав думать, что было бы проще просто проанализировать все строковые поля и сделать с ним :-) –