ElasticSearch-如何从动态字段元数据查询查询?
元数据字段是动态的,可能有是或没有内部字段。
即使其中一些未定义“已删除”字段,如何返回查询?
感谢您的收听。
{
"query": {
"nested": {
"path": "metadata",
"query": {
"bool": {
"should":[
{
"match":{
"metadata.deleted": true
}
}
]
}
}
},
"bool": {
"must": {
"term": {
"on_behalf_of": "b71457f731d8a6f"
}
}
}
}
}
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "[nested] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 1,
"col": 116
}
],
"type": "parsing_exception",
"reason": "[nested] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 1,
"col": 116
},
"status": 400
}
答案 0 :(得分:1)
您的查询格式不正确。您在此处nested
和bool
使用两个查询。这两个查询都必须包装在布尔查询的must
,should
或filter
中。假设这两个条件都是匹配所必需的,则这两个查询都应包装在must
查询的filter
或bool
子句中,如下所示:
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "metadata",
"query": {
"bool": {
"should": [
{
"match": {
"metadata.deleted": true
}
}
]
}
}
}
},
{
"must": {
"term": {
"on_behalf_of": "b71457f731d8a6f"
}
}
}
]
}
}
}