#php #elasticsearch
#php #elasticsearch
Вопрос:
Я пытаюсь выполнить запрос эластичного поиска в своем php-коде, но получаю эту ошибку:
Uncaught PHP Exception ElasticsearchCommonExceptionsBadRequest400Exception:
"{"error":{"root_cause":[{"type":"named_object_not_found_exception","reason":"[1:834]
unable to parse BaseAggregationBuilder with name [highlight_properties]: parser not found"}]
Это часть моего aggs-кода моего запроса ElasticSearch:
'aggs' => [
'highlight_dealers' => [
'terms' => [
'field' => 'sorting.Id',
'size' => 4
]
],
'aggs' => [
'highlight_properties' => [
'terms' => [
'field' => '_id',
'size' => 2,
],
'aggs' => [
'property' => [
'top_hits' => [
'size' => 1
]
],
'randomProperty' => [
'max' => [
'script' => [
'source' => 'new Random().nextInt()',
'lang' => 'painless'
]
]
]
]
],
'randomDealer' => [
'avg' => [
'script' => [
'source' => 'Math.sin(109813 * doc["sorting.id"].value)',
'lang' => 'painless',
]
]
]
]
];
Может быть, я неправильно вложен?
Ответ №1:
Попробуйте удалить aggs
из этой части запроса
'aggs' => [ <-- remove this
'highlight_properties' => [
'terms' => [
'field' => '_id',
'size' => 2,
],
Ваш новый запрос должен выглядеть следующим образом:
'aggs' => [
'highlight_dealers' => [
'terms' => [
'field' => 'sorting.Id',
'size' => 4
]
],
'highlight_properties' => [
'terms' => [
'field' => '_id',
'size' => 2,
],
'aggs' => [
'property' => [
'top_hits' => [
'size' => 1
]
],
'randomProperty' => [
'max' => [
'script' => [
'source' => 'new Random().nextInt()',
'lang' => 'painless'
]
]
]
]
],
'randomDealer' => [
'avg' => [
'script' => [
'source' => 'Math.sin(109813 * doc["sorting.id"].value)',
'lang' => 'painless',
]
]
]
];
Поскольку я не знаю вашего варианта использования, вы даже можете попробовать форматировать свой запрос в этом формате :
{
"aggs": {
"highlight_dealers": {
"terms": {
"field": "sorting.Id",
"size": 4
}, <-- note the brackets here
"aggs": {
"highlight_properties": {
"terms": {
"field": "_id",
"size": 2
},
"aggs": {
"property": {
"top_hits": {
"size": 1
}
},
"randomProperty": {
"max": {
"script": {
"source": "new Random().nextInt()",
"lang": "painless"
}
}
}
}
}
}
}
}
}
Комментарии:
1. Я вижу, что я сделал не так, вы правы, я закрыл «highlight_dealers» слишком рано, большое спасибо!
2. @Thomas Britsom рад, что я смог вам помочь 🙂 Спасибо за принятие ответа, не могли бы вы также поддержать ответ 🙂