我正在使用elasticsearch 1.5.2。我存储了一些名为“过敏”字段的产品,还有一些没有此字段的产品。并且这个字段的值可以是鱼或牛奶或坚果等。我想进行查询并且仅得到在所有这个字段中没有称为“过敏”的产品并将其集成到其他聚合中查询。我想做一个查询:首先消除具有“过敏”字段的产品,然后执行第二个块的聚合查询。
如何整合这个:
{
"constant_score" : {
"filter" : {
"missing" : { "field" : "allergic" }
}
}
}
到这个聚合查询:
POST tes1/_search?search_type=count
{
"aggs" : {
"fruits" : {
"filter" : {
"query":{
"query_string": {
"query": "Fruits",
"fields": [
"category"
]
}
}},
"aggs" : {
"minprice": {
"top_hits": {
"sort": [
{
"prix en €/kg": {
"order": "asc"
}
}
], "size":400
}
}
}
}} }
答案 0 :(得分:0)
您需要在聚合调用之前添加查询部分。这将过滤结果,然后对结果集运行聚合。
POST tes1/_search
{
"_source": false,
"size": 1000,
"query":
{ "constant_score" : {
"filter" : {
"missing" : { "field" : "allergic" }
}
}
},
"aggs" : {
"fruits" : {
"filter" : {
"query":{
"query_string": {
"query": "Fruits",
"fields": [
"category"
]
}
}},
"aggs" : {
"minprice": {
"top_hits": {
"sort": [
{
"prix en €/kg": {
"order": "asc"
}
}
], "size":400
}
}
}
}} }
另一方面,请考虑将ElasticSearch升级到最新版本,因为不再支持1.x.