我正在尝试更新现有的索引文档。我已经索引了标签,标题和所有者字段。现在,当用户更改标题时,我需要在索引中查找并更新文档。
我应该更新和替换整个文档还是仅替换标题字段?
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中找到发送更新的方法的更多示例。