我正在尝试批量更新ElasticSearch索引上的文档。我想知道如何实现这个场景。
1.如果不存在primaryKey文档,我必须创建文档。
1.如果主键存在,我必须在文档的数组中添加数据。
比如说--
用于初始写入/如果主键不存在。
已写入文档=
{
PrimaryKey,
DataList: [
{
DataField1: fieldValue1,
DataField2: fieldValue2,
}
]
}
如果该文档存在,则该条目将被追加到列表中
{
PrimaryKey,
DataList: [
{
DataField1: fieldValue1,
DataField2: fieldValue2,
},
{
DataField1: fieldValue3,
DataField2: fieldValue4
}
....
]
}
在批更新中,两种类型的primaryKeys都可能存在,一种类型的primaryKeys具有已经存在于索引中的文档,另一种类型的primaryKeys具有从未添加到索引中的文档。
1条答案
按热度按时间bejyjqdl1#
我认为这个例子可以作为批量的基础。我所做的是考虑_id和PrimaryKey是相同的,因为知道docmentos是否存在的方法是通过_id,如果它不存在,则创建一个新的文档。如果列表已经存在,我使用脚本向列表添加项目。
了解有关更新API upsert参数的更多信息。
Map
Bulk将向文档1添加项并创建新文档2(这在索引中不存在)。
获取文档: