如何在Java中使用elasticsearch

时间:2016-11-29 08:38:02

标签: java elasticsearch

我正在尝试用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"]}

我不知道如何从这里前进,如何用“和”,“过滤”,“查询”等来包装术语。

感谢。

1 个答案:

答案 0 :(得分:0)

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

从5.0开始,您必须使用boolfilter部分查询。 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"));