【问题标题】:ElasticSearch 6.2: autocomplete search from MySQLElasticSearch 6.2:来自 MySQL 的自动完成搜索
【发布时间】:2018-10-26 16:15:12
【问题描述】:

首先,我想说我使用的是 Elasticsearch 和 Logstash 6.2,由于大更新,很多主题不兼容。在发布我的之前,我看了两遍。 :)

我使用 MySQL 作为数据库,并使用 Logstash 6.2 和 JDBC,我在 Elasticsearch 6.2 中自动传输我的行。这边一切正常!

但是,我正在尝试在 Node/Express 项目中使用 Elasticsearch 作为搜索引擎。我想按照本教程Leveraging the Power of Elasticsearch: Autocomplete and Fuzzy Search 中的描述创建一个自动完成搜索栏。

问题是我无法启用自动完成,因为我从 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
               }
           }
         }
       }
  });
}

这不会给我自动完成功能。

一种解决方案可能是过滤 Logstash conf 中的目标列并强制使用完成的类型。有人知道如何执行吗?

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

【问题讨论】:

    标签: mysql node.js express elasticsearch logstash


    【解决方案1】:

    我终于自己回答了。

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

    我在此映射中添加了所需字段的类型completion,它解决了我的问题。

    就这么简单!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多