我正在尝试根据categoryCode进行过滤,但没有得到任何结果,

我尝试使用未经分析的文件,但该文件有效,如何使它适用于该特定 Realm ?

  "categoryCode": {
  "type": "text",
  "analyzer": "autocomplete",
  "search_analyzer": "standard",
  "norms": false,
  "copy_to": "all_fields",
  "doc_values": false,
  "fields": {
    "raw": {
      "type": "keyword",
      "index": false,
      "normalizer": "lowercase_normalizer",
      "norms": false
    },
    "fulltext": {
      "type": "text",
      "analyzer": "standard",
      "doc_values": false
    }
  }
}

查询过滤:
   "bool":{
      "filter":[
         {
            "bool":{
               "must":[
                  {
                     "term":{
                        "categoryCode":{
                           "value":"PAYROLL"
                        }
                     }
                  }
               ]
            }
         }
      ]
   }
}

最佳答案

您正在搜索的被分析的categoryCode上,因此将进入分析阶段,并根据standard分析器(搜索分析器)创建 token , token 也将小写。

而不是categoryCode,您需要搜索包含文档关键字形式的categoryCode.raw另外,您可能必须像在查询中一样删除lowercase_normalizer,正在使用term查询,这不会在原始字段上通过lowercase normalizer,并且可能导致PAYROLLpayroll不匹配。

我已经创建了样本索引定义,索引文档并修改了搜索查询以获取预期的结果(您的整个映射不可用,因此创建了一个最少的示例来说明)

指数def(最小值)

{
    "mappings": {
        "properties": {
            "categoryCode": {
                "type": "text",
                "fields": {
                    "raw": {
                        "type": "keyword",
                        "norms": false
                    },
                    "fulltext": {
                        "type": "text",
                        "analyzer": "standard",
                        "doc_values": false
                    }
                }
            }
        }
    }
}

索引文件
{
   "categoryCode" : "PAYROLL"
}

搜索查询
{
    "query": {
        "bool": {
            "filter": [
                {
                    "bool": {
                        "must": [
                            {
                                "term": {
                                    "categoryCode.raw": { -->notice `.raw`
                                        "value": "PAYROLL"
                                    }
                                }
                            }
                        ]
                    }
                }
            ]
        }
    }
}

搜索结果
 "hits": [
         {
            "_index": "so-60531341",
            "_type": "_doc",
            "_id": "1",
            "_score": 0.0,
            "_source": {
               "categoryCode": "PAYROLL"
            }
         }
      ]

07-24 06:39