gpt4 book ai didi

elasticsearch - 为什么此Elasticsearch查询不返回任何内容

转载 作者:行者123 更新时间:2023-12-03 00:46:02 26 4
gpt4 key购买 nike

我在下面执行了elasticsearch查询。

GET amasyn/_search
{
"query": {
"bool" : {
"filter" : {
"term": {"ordernumber": "112-9550919-9141020"}
}
}
}
}

但是没有任何成功
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 0,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
}
}

但是我有一个在索引中包含此 ordernumber的文档。 ordernumber是一个文本字段。

当我通过将 term替换为 match来更改上述查询时,我得到的总点击数是给定查询的总点击数。
请解释这里发生了什么以及如何解决。

最佳答案

这是因为由于您使用的ordernumber字段的类型为文本,因此正在对其进行分析。请通过此答案Difference between keyword and text in ElasticSearch引用文本和关键字之间的区别。

这样,您可以为ordernumber字段定义文本和关键字。

制图

{
"mappings": {
"properties": {
"ordernumber": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}

然后可以使用以下术语查询:
{
"query": {
"bool" : {
"filter" : {
"term": {"ordernumber.keyword": "112-9550919-9141020"}
}
}
}
}

请查看 textkeyword字段是如何为您的文本标记的。

标准分析仪

当您将字段定义为 text时,将使用此分析器。
{
"analyzer": "standard",
"text" : "112-9550919-9141020"
}

结果:
 {
"tokens": [
{
"token": "112",
"start_offset": 0,
"end_offset": 3,
"type": "<NUM>",
"position": 0
},
{
"token": "9550919",
"start_offset": 4,
"end_offset": 11,
"type": "<NUM>",
"position": 1
},
{
"token": "9141020",
"start_offset": 12,
"end_offset": 19,
"type": "<NUM>",
"position": 2
}
]
}

关键字分析器

当您将字段定义为 keyword时,将使用此分析器。
{
"analyzer": "keyword",
"text" : "112-9550919-9141020"
}

结果
 {
"tokens": [
{
"token": "112-9550919-9141020",
"start_offset": 0,
"end_offset": 19,
"type": "word",
"position": 0
}
]
}

关于elasticsearch - 为什么此Elasticsearch查询不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61275532/

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