Я пытаюсь получить уникальные значения из моей базы данных elasticsearch.elasticsearch aggregation PHP
Так что я хочу уникальные имена из моей базы данных elasticsearch.
Так я агрегирование как так ---
$paramss = [
'index' => 'myIndex',
'type' => 'myType',
'ignore_unavailable' => true,
'ignore' => [404, 500]
];
$paramss['body'] = <<<JSON
{
"size": 0,
"aggs" : {
"langs" : {
"terms" : { "field" : "name" }
}
}}
JSON;
$results = $client->search($paramss);
print_r(json_encode($results));
я получить результат, как так ---
{
took: 3,
timed_out: false,
_shards: {
total: 5,
successful: 5,
failed: 0
},
hits: {
total: 1852,
max_score: 0,
hits: [
]
},
aggregations: {
langs: {
buckets: [
{
key: "aaaa.se",
doc_count: 430
},
{
key: "bbbb.se",
doc_count: 358
},
{
key: "cccc.se",
doc_count: 49
},
{
key: "eeee.com",
doc_count: 46
}
]
}
}
}
Но проблема в том, я не получаю все уникальные значения, я я получаю только 10 значений, значение по умолчанию для запроса elasticsearch.
Так как я могу изменить размер запроса !!!
я попытался как так ---
$paramss = [
'index' => 'myIndex',
'type' => 'myType',
'size' => 1000,
'ignore_unavailable' => true,
'ignore' => [404, 500]
];
который возвращает мне некоторые странные документы.
Так кто-нибудь знает решение этой проблемы.
Как я могу получить все уникальные имена из моей базы данных elasticsearch, может кто-то поможет мне исправить эту проблему.
Нет, вы этого не сделали. У вас есть параметр размера на том же уровне, что и aggs. – Piotr
почему этот ответ проголосовали. Это точно правильный ответ. Вы должны определить размер = 0 внутри своих агрегатов, иначе ES будет агрегировать только 20 лучших результатов. –
@thanks для вашего ответа :) –