Elasticsearch自动完成建议者

问题描述 投票:1回答:1

我想在ES中实现自动完成功能,我已经遵循了ES文档中的this教程

我的索引是:

{
    "properties" : {
            "suggest" : {
                "type" : "completion"
            },
            "titleKeyword" : {
                "type": "keyword"
            }
        }
    }
}

我在titleKeyword字段中输入文本值

然后我像下面这样查询

{
  "suggest" : {
    "my-suggestion" : {
      "text" : "iphone",
      "term" : {
        "field" : "titleKeyword"
      }
    }
  }
}

结果是:

...
    "suggest": {
        "my-suggestion": [
            {
                "text": "iphone",
                "offset": 0,
                "length": 6,
                "options": []
            }
        ]
    }

预期结果是

options:[iphone x, iphone 11, iphone 11 pro, iphone 7]

Note:标题是完整的句子,例如“ iPhone x 64GB黑色”

据我从文档中了解到的,在创建文档时,我必须在“高级”中给出建议,这对我而言是不可能的,没有任何方法可以实现此功能而无需手动添加建议?

谢谢

elasticsearch elastic-stack elasticsearch-5
1个回答
0
投票
对于这个简单的需求,不需要使用Elasticsearch建议器,该建议器很难理解,并且其中一部分仍在开发中,有关blog的更多信息以及构建高级自动完成功能时需要注意的所有事项都在我的[C0 ]。

根据您的要求,可以使用this SO answer字段轻松地解决(看起来就像您正在使用text类型),并且可以使用简单的匹配查询,如下所示:

索引定义

keyword
{
    "mappings": {
        "properties": {
            "model_name": {
                "type": "text"
            }
        }
    }
}
的所有四种类型编制索引>

iphone

搜索查询({
   "model_name" : "iphone x"
}

{
   "model_name" : "iphone 11"
}

{
   "model_name" : "iphone 11 pro"
}

{
   "model_name" : "iphone 7"
}
将带来所有四个文档)

iphone

搜索结果

{ "query": { "match": { "model_name": { "query": "iphone" } } } }

© www.soinside.com 2019 - 2024. All rights reserved.