elasticsearch 6.2:从mysql自动完成搜索

polkgigr  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(320)

首先,我想说的是,我使用elasticsearch和logstash6.2,由于有很大的更新,很多主题是不兼容的。我看了两遍才发了我的
我使用mysql作为数据库,使用logstash6.2和jdbc,在elasticsearch6.2中自动传输我的行。这边一切正常!
不过,我正在尝试使用elasticsearch作为node/express项目中的搜索引擎。我想创建一个自动完成搜索栏,如本教程所述,利用elasticsearch的强大功能:自动完成和模糊搜索。
问题是我无法启用自动完成,因为我从mysql加载的数据是字符串,而不是完成类型:
非法参数异常,reason:field [extid]不是完成建议字段,status: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中的目标列,并强制为完成类型。有人知道怎么做吗?
有别的办法解决我的问题吗?

up9lanfz

up9lanfz1#

我终于自己回答了。
创建Map时,我使用了github上的默认Map。
我在这个Map中添加了所需字段的类型完成,它解决了我的问题。
就这么简单!

相关问题