如何使用NEST更新ElasticSearch索引内的现有文档?

我正在尝试更新现有的索引文档。我已经索引了标签,标题和所有者字段。现在,当用户更改标题时,我需要在索引中查找并更新文档。

我应该更新和替换整个文档还是仅替换标题字段?

public void UpdateDoc(ElasticsearchDocument doc)

{

Uri localhost = new Uri("http://localhost:9200");

var setting = new ConnectionSettings(localhost);

setting.SetDefaultIndex("movies");

var client = new ElasticClient(setting);

IUpdateResponse resp = client.Update<ElasticsearchDocument, IndexedDocument>(

d => d.Index("movies")

.Type(doc.Type)

.Id(doc.Id), doc);

}

就是行不通。上面的代码生成语法错误。有谁知道使用ElasticSearch的C#NEST客户端执行此操作的正确方法?

回答:

我已使用以下方法通过NEST成功更新了Elasticsearch索引中的现有项目。请注意,在此示例中,您只需要发送带有希望更新的字段的部分文档。

    // Create partial document with a dynamic

dynamic updateDoc = new System.Dynamic.ExpandoObject();

updateDoc.Title = "My new title";

var response = client.Update<ElasticsearchDocument, object>(u => u

.Index("movies")

.Id(doc.Id)

.Document(updateDoc)

);

您可以在GitHub Source的NEST Update Unit

Tests中找到发送更新的方法的更多示例。

以上是 如何使用NEST更新ElasticSearch索引内的现有文档? 的全部内容, 来源链接: utcz.com/qa/422227.html

回到顶部