转载请注明出处:https://blog.youkuaiyun.com/dhtx_wzgl/article/details/85229709
1、批量更新
public void update() throws IOException {
UpdateRequest updateRequest1 = new UpdateRequest().index(EsConstants.IMS_ORDER_INDEX)
.type(EsConstants.IMS_ORDER_TYPE).id("o611426753592").doc(XContentFactory.jsonBuilder().startObject()
.field("amount", 1000)
.endObject());
UpdateRequest updateRequest2 = new UpdateRequest().index(EsConstants.IMS_ORDER_INDEX)
.type(EsConstants.IMS_ORDER_TYPE).id("o611426753592").doc(XContentFactory.jsonBuilder().startObject()
.field("productAmount", 700)
.endObject());
UpdateQuery updateQuery1 = new UpdateQueryBuilder().withId("o611426753592")
.withClass(OrderEsEntity.class).withUpdateRequest(updateRequest1).build();
UpdateQuery updateQuery2 = new UpdateQueryBuilder().withId("o611426753592").withClass(OrderEsEntity.class)
.withUpdateRequest(updateRequest2).build();
elasticsearchTemplate.bulkUpdate(Lists.newArrayList(updateQuery1,updateQuery2));
} |
2、单个更新
public void update() throws IOException {
UpdateRequest updateRequest = new UpdateRequest().index(EsConstants.IMS_ORDER_INDEX)
.type(EsConstants.IMS_ORDER_TYPE).id("o611426753592").doc(XContentFactory.jsonBuilder().startObject()
.field("productAmount", 1700)
.endObject());
UpdateQuery updateQuery = new UpdateQueryBuilder().withId("o611426753592").withClass(OrderEsEntity.class)
.withUpdateRequest(updateRequest).build();
elasticsearchTemplate.update(updateQuery);
} |
3、聚合查询
public void query() {
SumAggregationBuilder sum = AggregationBuilders.sum("amountSum").field("amount");
MaxAggregationBuilder max = AggregationBuilders.max("maxId").field("mid");
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.addAggregation(max)
.withIndices(EsConstants.IMS_ORDER_INDEX)
.withTypes(EsConstants.IMS_ORDER_TYPE)
.withSearchType(SearchType.DFS_QUERY_THEN_FETCH).build();
double maxId = elasticsearchTemplate.query(searchQuery, response -> {
InternalMax sum1 = (InternalMax) response.getAggregations().asList().get(0);
return sum1.getValue();
});
} |
4、条件中带计算查询
@Test
public void query() {
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.withScriptField(new ScriptField("equals",
new Script("doc['amount'].value == doc['productAmount'].value")))
.withIndices(EsConstants.IMS_ORDER_INDEX)
.withTypes(EsConstants.IMS_ORDER_TYPE)
.withSearchType(SearchType.DFS_QUERY_THEN_FETCH).build();
List<OrderEsEntity> list = elasticsearchTemplate.queryForList(searchQuery, OrderEsEntity.class);
log.info("result:{}",list.size());
} |