elasticsearch 弹性搜索不过滤
我正在尝试根据categoryCode进行筛选,但没有得到任何结果 我试过使用一个未经分析的字段,但它起作用了,我如何才能使它在这个特定字段中起作用elasticsearch 弹性搜索不过滤,elasticsearch,filter,elasticsearch,Filter,我正在尝试根据categoryCode进行筛选,但没有得到任何结果 我试过使用一个未经分析的字段,但它起作用了,我如何才能使它在这个特定字段中起作用 "categoryCode": { "type": "text", "analyzer": "autocomplete", "search_analyzer": "standard", "norms": false, "copy_to": "all_fields", "doc_values": false, "fie
"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
上进行搜索,因此会经过分析阶段,并根据标准的分析器(搜索分析器)创建令牌,该分析器也会将令牌小写
您需要搜索包含文档关键字格式的categoryCode.raw
,而不是categoryCode
。您可能还需要删除查询中的lowercase\u normalizer
,您正在使用术语
查询,该查询不会在原始字段上通过小写规范化程序
,可能导致工资单
与工资单
不匹配
我已经创建了示例索引定义、索引文档并修改了搜索查询以获得预期结果。(您的整个映射不可用,因此创建了一个简单的示例来解释)
索引def(最小值)
索引文件
搜索查询
搜索结果
categoryName
或categoryCode
,您提供的映射是针对表单的。我更新了右侧字段的映射,该字段为categoryCode@JosephBouSaada,提供的答案请看一看,如果您需要更多,请告诉我clarification@JosephBouSaada运气好吗?请随时询问您是否有进一步的问题questions@JosephBouSaada,感谢您接受我的答案,我很高兴,我在这里提供了帮助,您可以通过单击我答案前面的向上箭头按钮来更新我的答案,如果您需要帮助,请阅读:-)我所需要的只是将原始属性编入ES索引。删除小写的_normalizer将不允许我将paylol与该字段上的PAYROLL匹配。谢谢@Opster ElasticsearchNinja@JosephBouSaada,很高兴它有帮助
{
"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"
}
}
]