gpt4 book ai didi

elasticsearch 术语查询不起作用

转载 作者:行者123 更新时间:2023-11-29 02:48:05 24 4
gpt4 key购买 nike

我对 elasticsearch 中的术语查询有疑问。我发送以下查询:

{
"query": {
"term": {
"title":"Test1"
}
}
}

我有一个空结果:

{
"took": 1,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}

但是如果我发送以下内容:

{
"query": {
"term": {
"root":true
}
}
}

我有:

{
"took": 3,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 0.2876821,
"hits": [
{
"_index": "content_2018-05-30-092148",
"_type": "topic",
"_id": "6064f7ac-63d5-11e8-adc0-fa7ae01bbeb1",
"_score": 0.2876821,
"_source": {
"_meta": {
"model": "Secafi\\Content\\Topic"
},
"id": "6064f7ac-63d5-11e8-adc0-fa7ae01bbeb1",
"title": "Test2",
"root": true
}
},
{
"_index": "content_2018-05-30-092148",
"_type": "topic",
"_id": "6064f7ac-63d5-11e8-adc0-fa7ae01bbeb2",
"_score": 0.2876821,
"_source": {
"_meta": {
"model": "Secafi\\Content\\Topic"
},
"id": "6064f7ac-63d5-11e8-adc0-fa7ae01bbeb2",
"title": "Test3",
"root": true
}
},
{
"_index": "content_2018-05-30-092148",
"_type": "topic",
"_id": "6064f7ac-63d5-11e8-adc0-fa7ae01bbebc",
"_score": 0.2876821,
"_source": {
"_meta": {
"model": "Secafi\\Content\\Topic"
},
"id": "6064f7ac-63d5-11e8-adc0-fa7ae01bbebc",
"title": "Test1",
"root": true
}
}
]
}
}

如果我在标题字段上进行匹配查询,我会得到相同的结果,它不会返回任何文档。

怎么了。为什么第一个查询没有返回文档 Test1?

最佳答案

术语查询查找确切的术语。您可能正在使用具有小写过滤器的标准分析器。因此,当索引中的内容是“term1”时,您正在搜索“Term1”。

Term 非常适合精确匹配数字或 ID(例如 9844-9332-22333)。对于帖子标题之类的字段则不然。

要确认这一点,您可以这样做:

{
"query": {
"term": {
"title.keyword":"Test1"
}
}
}

如果您的记录以“Test1”的确切标题编入索引,这应该有效。这使用关键字分析器而不是标准分析器(注意标题后的“.keyword”)。在最新版本的 elasticsearch 中,默认情况下会添加关键字分析器,除非您覆盖此行为。关键字是一个完全匹配的“noop”分析器,它将整个字符串作为单个标记返回以进行匹配。

对于标题,您可能想要的是:

{
"query": {
"match": {
"title":"Test1"
}
}
}

匹配查询通过默认用于索引文档(小写等)的标准分析器运行您的输入字符串,因此 elasticsearch 能够将您的查询文本与 elasticsearch 索引中的内容相匹配。

查看文档以了解有关匹配与术语的更多详细信息。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html

关于elasticsearch 术语查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50600682/

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