gpt4 book ai didi

elasticsearch - Elasticsearch根据搜索查询更新整个 `_source`字段

转载 作者:行者123 更新时间:2023-12-02 22:45:58 25 4
gpt4 key购买 nike

"_source": {
"id": "5b1676493d21784208c36041",
"label": "name",
"properties": {
"name": "patrick"
},
"updatedAt": 1528259039542
}

我想用新文档更新基于 id(不是 _id)的文档。

像这样:
    "_source": {
"dataSource": "ELASTIC",
"entity": "vertices",
"label": "vertices",
"id": "5b1676493d21784208c36041",
"properties": {
"name": "patrick"
},
"updatedAt": 1528259039542
}

elasticsearch版本:6.2,ES Java API:6.2

最佳答案

您可以使用update by query API实现所需的内容,基本上是这样的:

POST index/_update_by_query
{
"query": {
"match": {
"id": "5b1676493d21784208c36041"
}
},
"script": {
"source": "ctx._source = params",
"params": {
"dataSource": "ELASTIC",
"entity": "vertices",
"label": "vertices"
}
}
}

更新:使用Java API
Map<String, String> params = new HashMap<>();
params.put("dataSource", "ELASTIC");
params.put("entity", "vertices");
params.put("label", "vertices");

UpdateByQueryRequestBuilder updateByQuery = UpdateByQueryAction.INSTANCE.newRequestBuilder(client);
updateByQuery.source("index")
.filter(QueryBuilders.matchQuery("id", "5b1676493d21784208c36041"))
.size(1000)
.script(new Script(ScriptType.INLINE, "painless", "ctx._source.putAll(params)", params));
BulkByScrollResponse response = updateByQuery.get();

有关使用 UpdateByQuery Java APIJava high level rest client 的更多详细信息

关于elasticsearch - Elasticsearch根据搜索查询更新整个 `_source`字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50743317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com