Elasticsearch搜索查询以检索所有记录NEST

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch搜索查询以检索所有记录NEST相关的知识,希望对你有一定的参考价值。

我在文件夹中的文档很少,我想检查此文件夹中的所有文档是否已编入索引。为此,对于文件夹中的每个文档名称,我想为ES中索引的文档运行循环并进行比较。所以我想要检索所有文件。

retrieve all records in a (ElasticSearch) NEST queryenter link description here这样的问题几乎没有其他可能的重复,但它们没有帮助我,因为文档从那时起发生了变化。(当前文档中没有关于扫描的内容)

我尝试使用client.search<T>()。但根据文档,检索默认数量为10的结果。我想在不提及记录大小的情况下获取所有记录? (因为索引的大小会发生变化)

或者是否可以先获取索引的大小,然后将此数字作为输入发送到大小以获取所有文档并循环?

答案

这是我如何解决我的问题。希望这可以帮助。 (参考文献https://www.elastic.co/guide/en/elasticsearch/client/net-api/1.x/scroll.htmlhttps://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html#scroll-search-context

List<string> indexedList = new List<string>();
var scanResults = client.Search<ClassName>(s => s
                .From(0)
                .Size(2000)
                .MatchAll()
                .Fields(f=>f.Field(fi=>fi.propertyName)) //I used field to get only the value I needed rather than getting the whole document
                .SearchType(Elasticsearch.Net.SearchType.Scan)
                .Scroll("5m")
            );

        var results = client.Scroll<ClassName>("10m", scanResults.ScrollId);
        while (results.Documents.Any())
        {
            foreach(var doc in results.Fields)
            {
                indexedList.Add(doc.Value<string>("propertyName"));
            }

            results = client.Scroll<ClassName>("10m", results.ScrollId);
        }

EDIT

var response = client.Search<Document>(s => s
                         .From(fromNum)
                         .Size(PageSize)
                         .Query(q => q ....
另一答案

您可以轻松执行以下操作以获取索引中的所有记录:

var searchResponse = client.Search<T>(s => s
                                    .Index("IndexName")
                                    .Query(q => q.MatchAll()
                                           )
                                     );

var documents = searchResponse.Documents.Select(f => f.fieldName).ToList();

以上是关于Elasticsearch搜索查询以检索所有记录NEST的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 检索相关

如何记录所有已执行的弹性搜索查询

四.全文检索ElasticSearch经典入门-ElasticSearch DSL查询

日志搜集分析-- 自定义elasticsearch数据查询

elasticSearch - 高级检索

美多商城之商品