gpt4 book ai didi

elasticsearch - Elasticsearch :带有父和子条件的嵌套查询

转载 作者:行者123 更新时间:2023-12-03 01:49:43 24 4
gpt4 key购买 nike

我有2个示例记录,如下所示:

{
"parents": [
{
"child": [
{
"is_deleted": false,
"child_id": -1,
"timestamp": 1483536052232
}
],
"parent_id": 810
},
{
"child": [
{
"is_deleted": true,
"child_id": 105,
"timestamp": 1483537567000
}
],
"parent_id": 42
}
]
},
{
"parents": [
{
"child": [
{
"is_deleted": false,
"child_id": 105,
"timestamp": 1483537567000
}
],
"parent_id": 42
}
]
}

和我的映射:
"properties": {
"parents": {
"type": "nested",
"properties": {
"parent_id": {
"type": "integer",
"doc_values": false
},
"child": {
"type": "nested",
"properties": {
"is_deleted": {
"type": "boolean",
"doc_values": false
},
"child_id": {
"type": "integer",
"doc_values": false
},
"timestamp": {
"type": "long",
"doc_values": false
}
}
}
}
}

我想按至少有一个 is_deleted作为 false的 child 的 parent ID搜索。例如,如果我将查询父ID为42,则我应该只获取第二个文档,而不是第一个。

最佳答案

您应该使用嵌套查询来查询嵌套字段。

这是一个示例,但是我不知道这是否是最好的解决方案,至少它是可行的:

POST /test1/test/_search
{
"query": {
"nested": {
"path": "parents",
"query": {
"bool": {
"must": [
{
"match": {
"parents.parent_id": 42
}
},
{
"nested": {
"path": "parents.child",
"query": {
"term": {
"parents.child.is_deleted": "F"
}
}
}
}
]
}
}
}
}
}

关于elasticsearch - Elasticsearch :带有父和子条件的嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41466149/

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