首页 > 解决方案 > ElasticSearch - 列表元素中的模糊搜索

问题描述

我有一些文档存储在 ElasticSearch 中,如下所示:
{ "tag" : ["tag1", "tag2", "tag3"] ... }

我想搜索“标签”字段。我知道它应该与如下查询一起使用:
{ "query": { "match" : {"tag" : "tag1"} } }

但是,我不想使用匹配,我想通过列表使用模糊搜索,例如:
{ "query": { "fuzzy" : {"tag" : "tagg1"} } }
问题是,上面的查询没有返回任何内容。我应该改用什么?

标签: elasticsearch

解决方案


您的弹性搜索映射中的标签字段类型是什么?

我已经尝试使用以下类型的标签字段和 elastisearch 版本是 7.2

"tag" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }

对我来说工作得很好。

使用弹性模糊查询将是:

{
  "query":
    {
        "fuzzy": {"tag" : "tagg1"}
    }
 }

推荐阅读