我有以下文件:
POST colours/_doc/1
{
"colour": ["green", "red", "blue", "yellow", "pink", "orange", "dark", "bright", "lilac", "turquoise", "gold", "silver"]
}
POST colours/_doc/2
{
"colour": ["blue", "yellow"]
}
POST colours/_doc/3
{
"colour": ["green"]
}
我只想获取ID为1和2的对象,因为我不想只获取ID为绿色的对象。我还想计算在这种情况下出现的次数,所以它会返回2。我管理了这个查询:
GET colours/_search
{
"query": {
"bool": {
"should": [
{
"terms": {
"colour": ["red",
"blue",
"yellow",
"pink",
"orange",
"dark",
"bright",
"lilac",
"turquoise",
"gold",
"silver"]
}
}
]
}
}
}
但是,我不想在terms
查询中指定所有颜色,因为在我的用例中,数组可以包含数百个值。理想情况下是这样的:
GET colours/_search
{
"query": {
"bool": {
"not_only": [
{
"terms": {
"colour": ["green"]
}
}
]
}
}
}
有什么想法吗?
1条答案
按热度按时间wydwbb8l1#
我们可以这样做:
colour
数组,其中只有一个元素green
第一个条件是这样的:
要否定上面的条件,简单地把它放在另一个
bool
中,如下所示:这取决于
colour
的Map,我使用colour.keyword
是因为我的颜色Map是文本,关键字必须用于脚本。结果是除了
["green"]
以外的所有内容