使用 NEST (ElasticSearch) 插入文档

Posted

技术标签:

【中文标题】使用 NEST (ElasticSearch) 插入文档【英文标题】:Upsert document with NEST (ElasticSearch) 【发布时间】:2021-07-12 15:26:48 【问题描述】:

我是 NEST 和 ElasticSearch 的新手,必须为一些文档编制索引,但在更新插入时遇到了一些问题。

每个文档都有一个 ID。

推送某个ID的文档时,如果索引中已经包含了该ID的文档,我想替换该文档。如果不存在具有此 ID 的文档,则只需插入文档即可。

目前,我正在使用client.IndexAsync,但它会生成重复项。如果我理解得很好,client.UpdateAsync 需要一个现有的 ID。

我找到了this in ES documentation,但在 NEST 中没有任何相关内容。 我必须使用低级客户端还是我在 NEST 中缺少某些东西?

谢谢

【问题讨论】:

您能否分享您的索引映射,因为默认情况下IndexAsync 按照您描述的方式工作,来自文档Adds a JSON document to the specified data stream or index and makes it searchable. If the target is an index and the document already exists, the request updates the document and increments its version.Docs link。 您的评论让我看看在插入操作期间是否有问题,并且 Id 以错误的方式生成并阻止了 upserting。非常感谢:) 【参考方案1】:

实际上与错误生成的 ID 相关,从而阻止了更新插入。

【讨论】:

以上是关于使用 NEST (ElasticSearch) 插入文档的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch/Nest - 将 MatchPhrase 与 OnFieldsWithBoost 一起使用

ElasticSearch NEST笔记

为啥使用 C#/ElasticSearch 进行此 NEST 通配符搜索没有返回任何文档?

Elasticsearch,如何使 NEST 地图响应类

Elasticsearch NEST使用指南:映射和分析

是否可以使用 Nest 将查询列表传递给 ElasticSearch?