gpt4 book ai didi

javascript - 如何在 Elasticsearch 中创建或替换文档?

转载 作者:搜寻专家 更新时间:2023-11-01 00:14:23 25 4
gpt4 key购买 nike

我只是想创建或替换文档,但 API 文档并不清楚如何执行此操作。

upsert示例显示正在创建的文档的 counter 值为 1:

client.update({
index: 'myindex',
type: 'mytype',
id: '777',
body: {
script: 'ctx._source.counter += 1',
upsert: {
counter: 1
}
}
}, function(error, response) {
// ...
})

我不需要增量脚本,所以我尝试自己发送更新插入,但我收到 400 Validation Failed: 1: script or doc is missing:

 client.update({
index: "testindex",
type: "testType",
id: 1234,
body: {
upsert: {
itworks: true,
ok: "oh yeah"
}
}
})

好吧,让我们尝试一些愚蠢的事情,并两次包含文档;一次在 doc 下,这可能会替换现有文档(如果有的话),一次在 upsert 下,否则将用于创建新文档:

client.update({
index: "testindex",
type: "testType",
id: 1234,
body: {
upsert: {
itworks: true,
ok: "oh yeah"
},
doc: {
itworks: true,
ok: "oh yeah"
}
}
})

这确实有效,201 Created。 200 OK 当我重复它以用不同的文档替换文档时:

client.update({
index: "testindex",
type: "testType",
id: 1234,
body: {
upsert: {
whatever: "man"
},
doc: {
whatever: "man"
}
}
})

但是当我检查文档时 (client.get({index: "testindex", type: "testType", id: 1234})),我看到的不是替换现有的文档,新文档已与其合并。

如何使用标准的 Node 客户端替换 Elasticsearch 中的文档? HTTP API 使它看起来 so simple ,但我在 Node 客户端中尝试了一系列排列组合,但均未成功。没有替换命令吗?我必须删除然后创建吗?

最佳答案

在 Elasticsearch 中,要替换文档,您只需为具有相同 ID 的文档编制索引,它就会被自动替换。

如果您想更新文档,您可以执行脚本更新、部分更新或两者兼而有之。

要进行部分文档更新,您只需

部分文档更新:

client.update({
index: 'myindex',
type: 'mytype',
id: '1',
body: {
// put the partial document under the `doc` key
doc: {
title: 'Updated'
}
}
}, function (error, response) {
// ...
})

脚本更新:

client.update({
index: 'myindex',
type: 'mytype',
id: '1',
body: {
script: 'ctx._source.tags += tag',
params: { tag: 'some new tag' }
}
}, function (error, response) {
// ...
});

Elasticsearch 中的更多信息 JS documentation

关于javascript - 如何在 Elasticsearch 中创建或替换文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38686139/

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