我有一个问题数组,可以为多个项目设置是/否值,以及一个可以返回true / false的布尔值。
查询应返回类似于此的数组数据:
"QUESTIONS": [
{
"ONE_IND": "Y or N",
"TWO_IND": "Y or N",
"THREE_IND": "Y or N",
"FOUR_IND": "Y or N",
"FIVE_IND": "Y or N",
"SIX_IND": "Y or N",
"BOOLEAN_IND": true or false
}
我还有一些其他术语过滤器,但我需要的部分是如何专门查询数组,以便我可以匹配至少一个值。我真正想要的就是在java中使用它来查看数组是否为空,如:
if(array.length > 0) {
//Then do something here.
};
我尝试的是这样的,但是它没有回报任何东西:
GET test_<name>/_search
{
"query": {
"nested": {
"path": "VALUE",
"query": {
"bool": {
"must": [
{
"term": {
"VALUE.ANOTHER_IND": "Y"
}
},
{
"match": {
"VALUE.MY_QUESTIONS_ARRAY" : "SOME_VALUE"
}
},
{
"term": {
"VALUE.YET_ANOTHER_IND": "Y"
}
}
]
}
}
}
}
}
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
我曾试图使用&#34;存在&#34;对此进行过滤,但我首先使用了这个,然后使用了不丢失。
缺失的代码是:
GET <path>/_search
{
"query": {
"nested": {
"path": "VALUE",
"query": {
"bool": {
"must": [
{
"term": {
"VALUE.ONE_IND": "Y"
}
},
{
"filtered": {
"filter": {
"missing": {
"field": "VALUE.MY_QUESTIONS_ARRAY"
}
}
}
},
{
"term": {
"VALUE.TWO_IND": "N"
}
},
{
"term": {
"VALUE.THREE_IND": "Y"
}
}
]
}
}
}
}
}
并且没有遗漏的代码是,这正是我想要得到的:
GET <path>/_search
{
"query": {
"nested": {
"path": "VALUE",
"query": {
"bool": {
"must": [
{
"term": {
"VALUE.ONE_IND": "Y"
}
},
{
"filtered": {
"filter": {
"not": {
"filter": {
"missing": {
"field": "VALUE.MY_QUESTIONS_ARRAY"
}
}
}
}
}
},
{
"term": {
"VALUE.TWO_IND": "N"
}
},
{
"term": {
"VALUE.THREE_IND": "Y"
}
}
]
}
}
}
}
}
这样我基本上都在寻找一个非空的数组。可能有其他方法可以做到这一点,但它有效,我发布它,以便其他人可能会发现它有用。