gpt4 book ai didi

ElasticSearch似乎不支持数组查找

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

我目前在 ElasticSearch 中存储了一个相当简单的文档,该文档是通过集成测试生成的:

{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "unit-test_project600",
"_type" : "recordDefinition505",
"_id" : "400",
"_score" : 1.0, "_source" : {
"field900": "test string",
"field901": "500",
"field902": "2050-01-01T00:00:00",
"field903": [
"Open"
]
}
} ]
}
}

我想专门过滤 field903 和“Open”值,因此我执行以下查询:

{
query: {
filtered: {
filter: {
term: {
field903: "Open",
}
}
}
}
}

这不会返回任何结果。但是,我可以将其与其他字段一起使用,它将返回记录:

{
query: {
filtered: {
filter: {
term: {
field901: "500",
}
}
}
}
}

我似乎无法使用 ElasticSearch 在数组中进行搜索。我读过一些有类似问题的人的例子,但他们似乎都没有解决这个问题。这肯定不是 ElasticSearch 的限制吗?

我认为这可能是一个映射问题。这是我的映射:

{
"unit-test_project600" : {
"recordDefinition505" : {
"properties" : {
"field900" : {
"type" : "string"
},
"field901" : {
"type" : "string"
},
"field902" : {
"type" : "date",
"format" : "dateOptionalTime"
},
"field903" : {
"type" : "string"
}
}
}
}
}

但是,ElasticSearch docs表明字符串或数组映射之间没有区别,因此我认为不需要在这里进行任何更改。

最佳答案

尝试搜索“open”而不是“Open”。默认情况下,Elasticsearch 在索引字段时使用标准分析器。标准分析器使用小写过滤器,如示例 here 中所述。 。根据我的经验,Elasticsearch 确实搜索数组。

关于ElasticSearch似乎不支持数组查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18294131/

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