繁体   English   中英

ElasticSearch 6.2:从MySQL自动完成搜索

[英]ElasticSearch 6.2: autocomplete search from MySQL

首先,我想说的是,我使用Elasticsearch和Logstash 6.2,并且由于进行了较大的更新,因此许多主题不兼容。 在发布我的帖子之前,我看了两次。 :)

我使用MySQL作为数据库,并使用Logstash 6.2和JDBC,在Elasticsearch 6.2中自动传输行。 从这一方面,一切都很好!

但是,我正在尝试将Elasticsearch用作Node / Express'项目中的搜索引擎。 我想创建一个自动完成搜索栏,如本教程所述, 利用Elasticsearch的功能:自动完成和模糊搜索

问题是我无法启用自动完成功能,因为从MySQL加载的数据是String而不是Completion类型:

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 conf中的目标列,然后强制使用补全的类型。 有人知道如何执行吗?

还有其他解决方案可以解决我的问题吗?

我终于回答了自己。

创建映射时,我使用了github上的默认映射。

我在此映射中添加了所需字段的类型完成 ,从而解决了我的问题。

就那么简单 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM