我正在尝试用Java构建一个POST请求体,如下所示:
{
"query":{
"filtered":{
"filter":{
"and":[
{"terms":{"primaryType":["container"]}} , {"terms":{"LifeCycleState":["project"]}}
]
},
"query":{"match_all":{}}
}
},
"aggs": {
"status":{ "terms": {"field":"container:status"} }
}
}
到目前为止,这就是我所拥有的:
final FilterBuilder primaryTypeFilter = FilterBuilders.termsFilter("primaryType", "container");
final FilterBuilder lifeCycleStateFilter = FilterBuilders.termsFilter("LifeCycleState" , "project");
这给我带来了这个:
"terms":{"primaryType":["container"]}
"terms":{"LifeCycleState":["project"]}
我不知道如何从这里前进,如何用“和”,“过滤”,“查询”等来包装术语。
感谢。
答案 0 :(得分:0)
您使用的是旧版本的elasticsearch。我建议升级。
从5.0开始,您必须使用bool
个filter
部分查询。 https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-compound-queries.html#java-query-dsl-bool-query
类似的东西:
QueryBuilder qb = boolQuery()
.filter(termQuery("primaryType", "container")
.filter(termQuery("LifeCycleState" , "project"));