【问题标题】:ElasticSearch searching for <NUM> analyzed fields not matchingElasticSearch 搜索 <NUM> 个不匹配的分析字段
【发布时间】:2021-12-13 19:32:56
【问题描述】:

我有一个带有标准分析器的弹性搜索集群。我知道使用此分析器会分析术语“300”作为一种类型。

假设我正在搜索包含字段“名称”且值为“Paper towel 300 CT”的文档 解析为["paper"(ALPHANUM), "towel"(ALPHANUM), "300"(NUM), "ct"(ALPHANUM)]

目前,当我使用这样的模糊/通配符查询时:

    "query":
    {
   "bool":{
      "must":[
          {
            "bool":{
               "should":[
                  {
                     "fuzzy":{
                        "ec_item_name":{
                           "value":"300CT"
                        }
                     }
                  },
                   {
                     "wildcard":{
                        "ec_item_name":{
                           "value":"3*0*0*C*T*"
                        }
                     }
                  }
               ],
               "minimum_should_match": 1
            }
         }
      ]
   }
}

无论如何调整模糊性,模糊查询都不匹配。我希望“300CT”一词与“300”相匹配。在“300CT”上匹配“300”也是如此。是否有分析器或实现自定义分析器的方法,以便分析所有术语以支持这种类型的搜索?我在查找有关此类行为的文档时遇到了一些麻烦。

【问题讨论】:

    标签: elasticsearch full-text-search elasticsearch-query


    【解决方案1】:

    你试过match query and the fuzziness option吗?

    我已经试用了standard 分析器,它对我来说很好用:

    {
      "query": {
        "match": {
          "name": {
            "query": "300CT",
            "fuzziness": 2
          }
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      小心模糊查询,它在为搜索创建模糊替代查询词之前分析查询文本。有一篇很好的文章解释了 Elastic Blog 上的模糊查询,关于他们所说的模糊查询:

      elasticsearch 模糊查询类型一般应该避免。

      也就是说,我无法重现您的示例,因为当我使用模糊搜索 2 时,术语 300CT 匹配 300。在 Kibana 开发工具中尝试以下示例:

      PUT fuzzytest
      
      PUT fuzzytest/_doc/1
      {
        "name": "Paper towel 300 CT"
      }
      
      POST fuzzytest/_explain/1
      {
        "query": {
          "fuzzy": {
            "name": {
              "value": "300CT",
              "fuzziness": 2
            }
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-11
        • 2021-08-18
        • 1970-01-01
        • 2014-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多