[英]ElasticSearch how to convert not nested filter to query
我有以下过滤器格式的弹性搜索查询,它工作正常。 但是,我想将其转换为查询格式而不是过滤器。 任何人都可以请帮助我。 “时间”是嵌套的。
{
"not": {
"nested": {
"path": "timings",
"query": {
"filtered": {
"filter": {
"missing": {
"field": "timings.packages"
}
}
}
}
}
}
}
我的数据有时包是空的。 我想过滤掉包为空的记录。
timings{
packages:[]
}
timings{
packages:["2","4","6"]
}
您可以获取timings.packages
实际包含值的文档,而不是获取timings.packages
not
missing
文档。
这可以通过采用如下正值的range
查询来实现:
{
"query": {
"nested": {
"path": "timings",
"query": {
"filtered": {
"filter": {
"range": {
"timings.packages": {
"gt": 0
}
}
}
}
}
}
}
}
更新
我要离开上面的查询,因为它可能会对数组中的数字有所帮助。 另一种对数字和字符串都适用的方法是通过script
过滤器检查数组的长度,如下所示:
{
"query": {
"nested": {
"path": "timings",
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc['timings.packages'].size() > 0"
}
}
}
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.