Прежде всего, я хотел бы сказать, что я использую Elasticsearch и Logstash 6.2, и из-за большого обновления многие темы не совместимы. Я посмотрел дважды, прежде чем отправлять мой. :)
Я использую MySQL в качестве базы данных, а с помощью Logstash 6.2 и JDBC я автоматически передаю свои строки в Elasticsearch 6.2. С этой стороны все отлично работает!
Однако я пытаюсь использовать Elasticsearch в качестве поисковой системы в проекте Node / Express. Я хотел бы создать панель автозаполнения, как описано в этом руководстве Использование возможностей Elasticsearch: автозаполнение и нечеткий поиск .
Проблема в том, что я не могу включить автозаполнение, потому что мои данные, загруженные из MySQL, имеют тип String, а не тип завершения:
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
}
}
}
}
});
}
, который не дает мне автозаполнение.
Решением может быть фильтрация целевых столбцов в конфигурации Logstash и принудительное определение типа завершения. Кто-нибудь знает, как это сделать?
Есть ли другое решение для решения моей проблемы?