ElasticSearch 6.2: автозаполнение поиска из MySQL

0

Во-первых, я хотел бы сказать, что я использую Elasticsearch и Logstash 6.2, и из-за большого обновления многие темы несовместимы. Я дважды смотрел, прежде чем публиковать мои. :)

Я использую MySQL как базу данных и с Logstash 6.2 и JDBC, я автоматически передаю свои строки в Elasticsearch 6.2. Все отлично работает с этой стороны!

Тем не менее, я пытаюсь использовать Elasticsearch в качестве поисковой системы в проекте Node/Express. Я хотел бы создать поисковую панель автозаполнения, как описано в этом уроке. Использование Power of Elasticsearch: автозаполнение и нечеткий поиск.

Проблема в том, что я не могу включить автоматическое завершение, потому что мои данные, загруженные из MySQL, являются строковыми, а не как тип завершения:

Illegal_argument_exception, причина: Поле [extid] не является полем предложения завершения, статус: 400

Поэтому для функции getSuggestions я пробую:

function getSuggestions(text, size){
   return elasticClient.search({
   index: indexName,
   type: indexType,
   body: {
       suggest: {
           extidSuggester: {
               text: text+'~',
               term: {
                   field: "extid",
                   size: size
               }
           },
           nameSuggester: {
               text: text+'~',
               term: {
                   field: "name",
                   size: size
               }
           }
         }
       }
  });
}

который не дает мне автозаполнения.

Решение может состоять в том, чтобы отфильтровать целевые столбцы в conf в Logstash и привести к типу завершения. Кто-нибудь знает, как это сделать?

Есть ли другое решение для решения моей проблемы?

Теги:
express
elasticsearch
logstash

1 ответ

0
Лучший ответ

Наконец я отвечаю.

Когда я создал сопоставление, я использовал сопоставление по умолчанию, найденное в github.

Я добавил к этому сопоставление завершение типа для необходимых полей, и он решил мою проблему.

Просто как тот !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню