我在过滤器格式中有以下弹性搜索查询,工作正常。但是,我想将其转换为查询格式而不是过滤器。有人可以帮帮我吗。 "定时"是嵌套的。
{
"not": {
"nested": {
"path": "timings",
"query": {
"filtered": {
"filter": {
"missing": {
"field": "timings.packages"
}
}
}
}
}
}
}
我的数据有时候包空了。我想过滤掉包装为空的记录。
timings{
packages:[]
}
timings{
packages:["2","4","6"]
}
答案 0 :(得分:0)
您可以获取timings.packages
实际包含值的文档,而不是在not
为missing
timings.packages
的情况下提取文档。
使用range
查询可以实现这样的正值:
{
"query": {
"nested": {
"path": "timings",
"query": {
"filtered": {
"filter": {
"range": {
"timings.packages": {
"gt": 0
}
}
}
}
}
}
}
}
<强>更新强>
我将离开上述查询,因为它可能会帮助人们在数组中使用数字。对数字和字符串都有效的另一种方法是通过script
filter检查数组的长度,如下所示:
{
"query": {
"nested": {
"path": "timings",
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc['timings.packages'].size() > 0"
}
}
}
}
}
}
}