我有一个包含嵌套文档的弹性索引。我试图通过ids及其嵌套文档检索多个文档。使用应该查询来检索文档本身非常简单,但是我将在何处以及如何将嵌套的文档查询包含在其中呢?
布尔“应该”查询:
GET myIndex/_search
{
"query": {
"bool": {
"should": [
{
"term": {
"id": "123"
}
},
{
"term": {
"id": "456"
}
},
{
"term": {
"id": "789"
}
}
]
}
}
}检索嵌套文档的查询:
"nested": {
"path": "myNestedDocs",
"query": {
"match_all": {}
}不可能将嵌套查询添加到每个术语查询中,因为这会给出一个解析异常:“术语格式错误的查询,预期的END_OBJECT,但找到了FIELD_NAME”。
另外,不可能在与术语查询相同的级别上添加嵌套的文档查询,因为这样它就会被看作是另一个OR子句,并且只是从索引中检索所有文档。
有什么想法吗?谢谢!
发布于 2022-05-10 08:03:23
根据我的理解,您希望匹配列表和检索嵌套文档中的任何一个id。如果我的理解正确,那么您需要将这两个查询组合到must子句,如下所示:
{
"query": {
"bool": {
"must": [
{
"terms": {
"id": [
"123",
"456",
"789"
]
}
},
{
"nested": {
"path": "myNestedDocs",
"query": {
"match_all": {}
}
}
}
]
}
}
}https://stackoverflow.com/questions/72181856
复制相似问题