elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

如何在Java中使用elasticsearch

如何在Java中使用elasticsearch,java,elasticsearch,Java,elasticsearch,我试图用Java构建一个POST请求体,如下所示: { "query":{ "filtered":{ "filter":{ "and":[ {"terms":{"primaryType":["container"]}} , {"terms":{"LifeCycleState":["project"]}} ] }, "query":{"match_all":{}} } },

我试图用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"]}
我不知道如何从这里开始,如何用“and”、“filtered”、“query”等等来包装术语


谢谢。

您正在使用旧版本的elasticsearch。我建议升级

从5.0开始,您必须使用带有
过滤器部分的
bool
查询

比如:

QueryBuilder qb = boolQuery()
    .filter(termQuery("primaryType", "container")    
    .filter(termQuery("LifeCycleState" , "project"));

您正在使用旧版本的elasticsearch。我建议升级

从5.0开始,您必须使用带有
过滤器部分的
bool
查询

比如:

QueryBuilder qb = boolQuery()
    .filter(termQuery("primaryType", "container")    
    .filter(termQuery("LifeCycleState" , "project"));