一尘不染

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

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客户端执行此操作的正确方法?


阅读 580

收藏
2020-06-22

共1个答案

一尘不染

我已使用以下方法通过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 SourceNEST Update Unit
Tests中
找到发送更新的方法的更多示例。

2020-06-22