gpt4 book ai didi

elasticsearch聚合PHP

转载 作者:行者123 更新时间:2023-11-29 02:55:44 27 4
gpt4 key购买 nike

我正在尝试从我的 elasticsearch 数据库中获取唯一值。

所以我想要我的 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 数据库中获取所有唯一名称,有人可以帮我解决这个问题吗?

最佳答案

除了 size 之外,您也做对了所有事情。

"size": 0 应该跟在目标字段的名称之后。

$client = new Elasticsearch\Client($params);
$query['body'] = '{
"aggs" : {
"all_sources" : {
"terms" : {
"field" : "source",
"order" : { "_term" : "asc" },
"size": 0
}
}
}
}';

关于elasticsearch聚合PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32587257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com