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
}
Ваш запрос имеет неверный формат. Здесь вы используете два запроса 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"
}
}
}
]
}
}
}