【ElasticSearch】文档(更新)单个和批量
1、单个更新文档
rest api
POST myindex/_update/1
{
"doc": {
"name": "Smith"
}
}
不存在则添加,存在则更新
POST myindex/_update/2
{
"upsert": {
"name": "Alice Smith"
}
}
java client
// 数据
Map<String, String> data = new HashMap<>();
data.put("name", "Smith");
// 索引和ID
UpdateRequest updateRequest = new UpdateRequest(index, id);
updateRequest.doc(data);
// 立即生效
updateRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
UpdateResponse updateResponse = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
if (updateResponse.status() == RestStatus.OK) {
return true;
} else {
return false;
}
2、批量更新文档
rest api
POST myindex/_update_by_query
{
"query": {
"bool": {
"must": [
{
"term": {
"name": {
"value": "Alice"
}
}
}
]
}
},
"script": {
"lang": "painless",
"source": "ctx._source.name = params.newname",
"params": {
"newname": "New Alice"
}
}
}
java client
String newName = "New Alice";
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.termQuery("name", "Alice"));
UpdateByQueryRequest request = new UpdateByQueryRequest(index);
request.setConflicts("proceed");
request.setQuery(boolQueryBuilder);
request.setScript(new Script("ctx._source.name=" + newName + ";"));
BulkByScrollResponse bulkByScrollResponse = restHighLevelClient.updateByQuery(updateByQueryRequest, RequestOptions.DEFAULT);
List<BulkItemResponse.Failure> bulkFailures = bulkByScrollResponse.getBulkFailures();
for (BulkItemResponse.Failure bulkFailure : bulkFailures) {
System.out.println(bulkFailure.getMessage());
}
RefreshRequest refreshRequest = new RefreshRequest(updateByQueryRequest.getSearchRequest().indices());
restHighLevelClient.indices().refresh(refreshRequest, RequestOptions.DEFAULT);
脚本
POST myindex/_update/1
{
"script": {
"lang": "painless",
"source": "ctx._source.name = params.name",
"params": {
"name": "Bob"
}
}
}
替换
POST /myindex/_update_by_query
{
"script": {
"source": "ctx._source.resourceContent = ctx._source.resourceContent.replace('123123','123')",
"lang": "painless"
},
"query": {
"bool": {
"must": [
{
"exists": {
"field": "resourceContent"
}
}
]
}
}
}

浙公网安备 33010602011771号