gpt4 book ai didi

elasticsearch - 在 Elasticsearch 中使用带有关键字数据类型的规范器会产生意想不到的结果

转载 作者:行者123 更新时间:2023-12-02 22:16:34 25 4
gpt4 key购买 nike

我创建了一个索引

PUT twitter
{
"settings": {
"index": {
"analysis": {
"normalizer": {
"caseinsensitive_exact_match_normalizer": {
"filter": "lowercase",
"type": "custom"
}
},
"analyzer": {
"whitespace_lowercasefilter_analyzer": {
"filter": "lowercase",
"char_filter": "html_strip",
"type": "custom",
"tokenizer": "standard"
}
}
}
}
},

"mappings": {
"test" : {
"properties": {
"col1" : {
"type": "keyword"
},
"col2" : {
"type": "keyword",
"normalizer": "caseinsensitive_exact_match_normalizer"
}
}
}

}
}

然后我在索引中插入值作为

POST twitter/test
{
"col1" : "Dhruv",
"col2" : "Dhruv"
}

然后我查询索引为

GET twitter/_search
{
"query": {
"term": {
"col2": {
"value": "DHRUV"
}
}
}
}

我得到了结果

{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.2876821,
"hits": [
{
"_index": "twitter",
"_type": "test",
"_id": "AV9yNWQb3aJEm8NgRhd_",
"_score": 0.2876821,
"_source": {
"col1": "Dhruv",
"col2": "Dhruv"
}
}
]
}
}

根据我的理解,我们不应该得到结果,因为术语查询忽略了分析,所以它应该在倒排索引中搜索 DHRUV 并且存储的索引值应该是 dhruv 因为我们使用了 caseinsensitive_exact_match_normalizer。我怀疑术语查询不会忽略 normalizer。是吗?

我正在使用 ES 5.4.1

最佳答案

It seems it's normal对于 term 查询,在搜索时考虑归一化器。但是,正如之前所链接的问题,已经确定这不是预期的行为。

如果您想查看 ES 将您的查询重写成什么样的查询,您可以使用如下内容:

GET /_validate/query?index=twitter&explain
{
"query": {
"term": {
"col2": {
"value": "DHRUV"
}
}
}
}

这将告诉您为什么会得到这些结果:

  "explanations": [
{
"index": "twitter",
"valid": true,
"explanation": "col2:dhruv"
}
]

关于elasticsearch - 在 Elasticsearch 中使用带有关键字数据类型的规范器会产生意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47034602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com