Php 处理空值
在elasticsearch中,我试图从字段缺失或为空的特定字段中获取值 我正在这样努力--- 我得到的输出如下--- 但是聚合返回所有文档,它只返回计数,但我需要所有缺少该字段的文档,而不仅仅是计数Php 处理空值,php,
elasticsearch,Php,
elasticsearch,在elasticsearch中,我试图从字段缺失或为空的特定字段中获取值 我正在这样努力--- 我得到的输出如下--- 但是聚合返回所有文档,它只返回计数,但我需要所有缺少该字段的文档,而不仅仅是计数 是否有人知道如何解决此问题。根据$results数组/数据集中行的数据类型,您可以执行以下操作: foreach ($results as $result) { //In case if $result is an object if (isset ($result->cat
是否有人知道如何解决此问题。根据$results数组/数据集中行的数据类型,您可以执行以下操作:
foreach ($results as $result) {
//In case if $result is an object
if (isset ($result->category) == FALSE || is_null($result->category)) {
//Do something here as category does not exist
}
//In case if $result is an associative array
if (isset ($result['category']) == FALSE || is_null($result['category'])) {
//Do something here as category does not exist
}
}
如果您希望在不使用php代码的情况下将结果聚合为missing/not_missing:
{
"query": {
"filtered": {
"filter": {
"missing": {
"field": "category"
}
}
}
},
"aggs": {
"miss": {
"missing": {
"field": "category"
}
},
"not_miss": {
"filter": {
"exists": {
"field": "category"
}
}
}
}
}
或者,如果您希望查询返回“缺失”类别,但希望聚合同时计算缺失类别和未缺失类别,请执行此操作(使用忽略初始查询结果的全局聚合):
如果只需要缺少的类别,则不需要聚合:
{
"query": {
"filtered": {
"filter": {
"missing": {
"field": "category"
}
}
}
}
}
可以在聚合本身中显示“某些”文档,但不能显示所有文档。节点将承受非常高的压力。Hi,是elasticsearch客户端API返回的数据有问题还是关于如何处理缺少值的结果?为什么投票被否决,请解释原因!我们都会犯新手错误。我不知道是谁投了反对票,但如果我是你,我不会把它当成个人问题。@Jinksy这是如何处理结果的values@Anderi我已经更新了我的问题,你能看一下吗please@Anderi非常感谢您的回答,但它仍然返回计数,而不是所有的文件,我已经更新了问题,向您展示了输出,谢谢lot@ChristoferHansen请尝试我答案中的最后一个问题。@Anderi非常感谢:),再次感谢您的大力帮助
{
"query": {
"filtered": {
"filter": {
"missing": {
"field": "category"
}
}
}
},
"aggs": {
"miss": {
"missing": {
"field": "category"
}
},
"not_miss": {
"filter": {
"exists": {
"field": "category"
}
}
}
}
}
{
"query": {
"filtered": {
"filter": {
"missing": {
"field": "category"
}
}
}
},
"aggs": {
"allDocs": {
"global": {},
"aggs": {
"miss": {
"missing": {
"field": "category"
}
},
"not_miss": {
"filter": {
"exists": {
"field": "category"
}
}
}
}
}
}
}
{
"query": {
"filtered": {
"filter": {
"missing": {
"field": "category"
}
}
}
}
}