首页 > 解决方案 > 带有逗号值的弹性搜索匹配查询不起作用

问题描述

嗨,我们希望支持一个归档类别的部分搜索和完全匹配。

这是 category 的映射,我们使用fields.raw实现了这一点

"category": {
                    "properties": {
                        "name": {
                            "type": "string",
                            "analyzer": "autocomplete",
                            "search_analyzer": "standard",
                            "fields": {
                                "raw": {
                                   "type": "string",
                                   "index": "not_analyzed"
                                }
                             }
                        }
                    }
                }

一切都按预期工作,我可以进行精确搜索和部分搜索。但是当我在数据中有字符逗号“,”时,完全匹配不起作用。 我正在搜索未分析的 category.name.raw

 { "query": {
"filtered": {
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "",
            "type": "cross_fields",
            "fields": [
              "filed1",
              "field2^12"
            ]
          }
        },
        {
          "match": {
            "category.name.raw": " Poverty, Poor and Hunger"
          }
        }
      ]
    }
  }
}}}

我没有得到任何结果,我不确定我做错了什么,请帮我解决这个问题。提前致谢

标签: elasticsearchelasticsearch-query

解决方案


尝试使用以下分析器:

        "lower_whitespace" : {
          "filter" : [
            "lowercase"
          ],
          "type" : "custom",
          "tokenizer" : "whitespace"
        }

有关标记器的更多详细信息,请查看以下内容: https ://www.elastic.co/guide/en/elasticsearch/reference/5.1/analysis-whitespace-analyzer.html

看来您使用的是 Elastic search 的旧版本,考虑升级将是一个好主意


推荐阅读