gpt4 book ai didi

elasticsearch - Elasticsearch:在数组中搜索

转载 作者:行者123 更新时间:2023-12-03 01:07:20 25 4
gpt4 key购买 nike

我在Elasticsearch Player索引中具有以下对象。

GET /players/_search

"hits": [
{
"_index": "players",
"_type": "1",
"_id": "rRI5A8mVRUKKTA08bK90Vw",
"_score": 0.2712221,
"_source": {
"id": "1",
"first_name": "Lebron",
"last_name": "James",
"numbers": [
{
"number": "23",
"team": {
"city": "Cliveland",
"name": "Cavaliers"
}
},
{
"number": "6",
"team": {
"city": "Maimi",
"name": "Heat"
}
}
]
}
}
]

现在,我要搜索以“maimi”玩过且数字为“23”的球员(此索引中没有此类球员)。我试过了
GET /players/_search
{
"query": {
"bool" : {
"must" : [
{
"term" : {
"numbers.number" : "23"
}
},
{ "term" : {
"numbers.team.city" : "maimi"
}
}
]
}
}
}

但是elasticsearch仍然找到了勒布朗。我应该如何对Elasticsearch做出正确的请求?

最佳答案

这是因为数据的结构以及如何对其进行索引:arrays inner objects在内部被扁平化。

实际上,您的文档在ElasticSearch中的索引如下:

numbers.number:     [23,6]
numbers.team.city: [Cliveland,Maimi]
numbers.team.name: [Cavaliers,Heat]

内部对象之间的关联会丢失,但是搜索Cliveland Heat编号6也将与此文档匹配。

您应该使用 nested对象映射来解决此问题:内部对象将保持原样。

关于elasticsearch - Elasticsearch:在数组中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26053310/

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