使用 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 一起使用