ES的java API在更新数据时,有没有方法根据指定字段更新

Python013

ES的java API在更新数据时,有没有方法根据指定字段更新,第1张

两表根据两个字段关联即可

如 select distinct b.type_name from news a,news_type b where a.news_type_id= b.type_id and a.news_type_id = '1'

你这个查询用filter、must皆可,推荐filter

String index = "indexName" // 你的index名称

String type = "my_table"

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()

// boolQuery.must(QueryBuilders.termQuery("a", 1))

// boolQuery.must(QueryBuilders.termsQuery("b", 2, 3))

boolQuery.filter(QueryBuilders.termQuery("a", 1))

boolQuery.filter(QueryBuilders.termsQuery("b", 2, 3))

SearchResponse searchResponse = client.prepareSearch(index).setTypes(type)

                                                .setQuery(boolQuery)

                                                .addSort("c", SortOrder.ASC)

                                                .addSort("d", SortOrder.ASC)

                                                .storedFields("c", "d")

                                                .get()

ES提供的聚合接口相当灵活和丰富,值得系统的学习一下。学习方式想了下,应该跟SQL结合起来,SQL相对来说比较直观,ES官网对Aggregation描述的展开也是从SQL开始的,所以通过设计不同的SQL 聚合查询场景,分别看下ES中用Aggregation API和Java API是怎么实现的。

测试数据源于 官网

测试数据是汽车的销售信息,这次实现的SQL是按颜色groupby,查询每种颜色的销售数目。

Aggregation API:

java API: