如何使用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