【问题标题】:how to delete all documents by predicate using NEST如何使用 NEST 通过谓词删除所有文档
【发布时间】:2017-01-26 06:19:13
【问题描述】:

例如我有一张桌子:

| Col1       |        Col2 |
|:-----------|------------:|
|      1     |         one |
|      1     |         one |
|      1     |         one |
|      1     |         one |
|      2     |         two |
|      1     |         one |

我想删除Col1 == 1 所在的所有文档并获取表格:

| Col1       |        Col2 |
|:-----------|------------:|
|      2     |         two |

我尝试了一些代码,但它不能正常工作。

ElasticClient.DeleteByQuery<ElasticContent>(del => del
          .Index(ContentIndexName)
          .Query(q => q
            .Bool(b => b
              .Must(m => m
                .Term(t => t
                  .Field(f => f.Col1)
                  .Value("1"))))));

如何通过特定查询删除文档组?

【问题讨论】:

  • 你能定义“不能正常工作”吗?没有文件被删除?您使用的是哪个版本的 ES?
  • @Val,是的,没有文件被删除。我使用的是 ES 版本 5.1.1,NEST 5.0.0。
  • 序列化查询是否与预期的一样,例如查询中的字段名称是否与 Elasticsearch 中的字段名称匹配?是否需要等待查询删除完成 (.WaitForCompletion())?

标签: c# elasticsearch nest


【解决方案1】:

如果您使用的是 2.x 版本的 elasticsearch,您可以使用插件。第一个链接是他们从 2.x 版本中删除 DeleteByQuery 的原因。第二个链接是如何安装和使用。

https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/delete-by-query-plugin-reason.html

https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/delete-by-query-usage.html

如果您使用的是 5.x 版本,它已被再次添加,应该可以像平常一样使用它。我会再次检查您的版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2021-08-19
    相关资源
    最近更新 更多