ASN*_*ASN 7 c# elasticsearch nest
我在文件夹中的文档很少,我想检查此文件夹中的所有文档是否已编入索引.为此,对于文件夹中的每个文档名称,我想为ES中索引的文档运行循环并进行比较.所以我想要检索所有文件.
有同样的问题的一些其他可能的重复就像检索一个(ElasticSearch)NEST查询所有记录,并在此处输入链接的描述,但他们没有帮助我的文档已经从那个时候改变了.(有什么关于扫描当前文档中)
我试过用client.search<T>()
.但根据文档,检索默认数量为10的结果.我想在不提及记录大小的情况下获取所有记录?(因为索引的大小会发生变化)
或者是否可以先获取索引的大小,然后将此数字作为输入发送到大小以获取所有文档并循环?
这是我如何解决我的问题.希望这可以帮助.(参考https://www.elastic.co/guide/en/elasticsearch/client/net-api/1.x/scroll.html,https://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);
}
Run Code Online (Sandbox Code Playgroud)
var response = client.Search<Document>(s => s
.From(fromNum)
.Size(PageSize)
.Query(q => q ....
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11482 次 |
最近记录: |