【问题标题】:ElasticSearch - Fuzzy search in list elementsElasticSearch - 列表元素中的模糊搜索
【发布时间】:2019-07-16 19:45:17
【问题描述】:

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

我想通过“标签”字段进行搜索。我知道它应该适用于如下查询:
{ "query": { "match" : {"tag" : "tag1"} } }

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

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    你的 elasticsearch 映射中标签字段的类型是什么?

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

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

    对我来说工作得很好。

    使用弹性模糊查询将是:

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

    【讨论】:

    • 这是一个字符串列表。你用的是同一种类型吗?
    • 是的,它与文档源列表相同,例如 "_source" : { "tag" : [ "tag1", "tag2", "tag3" ] }
    • 不知道为什么我的不行:( 可能是因为我使用的是6.5.4版本。
    • 根据您的索引映射,标签字段的类型是什么?
    • 我尝试过这样的事情 POST newdata/new { "tag" : ["tag1", "tag2", "tag3"] } GET newdata/new/_search { "query": { "模糊“:{“标签”:“标签1”}}}
    猜你喜欢
    • 2021-03-27
    • 2023-01-21
    • 2014-08-13
    • 2016-01-18
    • 2020-06-18
    • 2019-05-24
    • 1970-01-01
    • 2020-02-22
    • 2021-01-16
    相关资源
    最近更新 更多