es 查询语法 email_list 字段是一个数组, 查询数据长度大于等于1的数量
时间: 2024-11-22 07:45:31 浏览: 18
在Elasticsearch查询语法中,如果你想查找`email_list`字段中包含长度大于等于1的数组项,可以使用`terms`、`match_array`或`script_score`等方法。这里我们假设数组元素是非空字符串。以下是几种可能的查询示例:
1. 使用`match_array`:
```json
{
"query": {
"match_array": {
"email_list": {
"minimum_should_match": 1
}
}
}
}
```
这将返回那些`email_list`数组中有至少一个非空元素的文档。
2. 使用`terms`统计:
```json
{
"aggregations": {
"non_empty_emails": {
"cardinality": {
"field": "email_list"
}
}
}
}
```
然后,你需要从聚合结果中检查`non_empty_emails.value`是否大于0。
3. 使用`script_score`:
```json
{
"query": {
"function_score": {
"query": {},
"script_score": {
"script": {
"source": "Math.abs(doc['email_list'].size() - 1) < 1 ? 1 : 0",
"lang": "painless"
}
}
}
}
}
```
这个例子通过计算每个文档的`email_list`大小减去1的绝对值小于1的情况,只返回那些有至少一个元素的文档。
阅读全文