当前位置: 首页 > 知识库问答 >
问题:

如何使用NEST在Easticsearch中按索引获取所有文档?

王泓
2023-03-14

我想按索引获取我的所有文档。我尝试了以下方法:

VAR 响应 = 客户端。搜索(s =

响应返回“成功操作”,但它未命中任何文档,尽管该索引下有许多文档。

共有1个答案

公孙弘图
2023-03-14

若要获取索引中的所有文档,需要使用滚动 API。请注意,根据我们正在谈论的文档数量,您很可能会通过多个 HTTP 请求/响应批量接收它们。

NEST中有一个帮助程序可以简化此操作,ScrollAll()

Time processTimePerScroll = "20s";
int numberOfSlices = Environment.ProcessorCount;

var scrollAllObservable = client.ScrollAll<Person>(processTimePerScroll, numberOfSlices, sc => sc
    .MaxDegreeOfParallelism(numberOfSlices)
    .Search(s => s
        .Query(q => q
            .MatchAll()
        )
    )
)

var waitHandle = new ManualResetEvent(false);
Exception exception = null;

var scrollAllObserver = new ScrollAllObserver<Person>(
    onNext: response => 
    {
        // do something with the documents
        var documents = response.SearchResponse.Documents;
    },
    onError: e =>
    {
        exception = e;
        waitHandle.Set();
    },
    onCompleted: () => waitHandle.Set()
);


scrollAllObservable.Subscribe(scrollAllObserver);

waitHandle.WaitOne();

if (exception != null) 
{
    throw exception;    
}
 类似资料:
  • 问题内容: 我知道如何删除整个ElasticSearch索引,但是如何从索引中清除所有文档? 我的动机:我想拥有一个“ ReIndex”方法,该方法可以清除索引的全部内容,以便可以重新加载所有文档。 ElasticSearch语法非常有用。NEST语法会更好。 问题答案: 我在Nest中寻找类似的东西,我想将语法放在这里,以便任何人查看:

  • 问题内容: 我正在尝试更新现有的索引文档。我已经索引了标签,标题和所有者字段。现在,当用户更改标题时,我需要在索引中查找并更新文档。 我应该更新和替换整个文档还是仅替换标题字段? 就是行不通。上面的代码生成语法错误。有谁知道使用ElasticSearch的C#NEST客户端执行此操作的正确方法? 问题答案: 我已使用以下方法通过NEST成功更新了Elasticsearch索引中的现有项目。请注意,

  • 问题内容: 我想从Elasticsearch集群中的完全匹配查询中获取所有结果。我不在乎结果是否是最新的,我不在乎订单,我只想稳定地浏览所有结果,然后从头开始。滚动和扫描最适合此操作,似乎不需要我拍摄快照就很受欢迎。我将要处理数以千万计的文档。 问题答案: 某种程度上与Elasticsearch查询重复,以返回所有记录。但是我们可以添加更多细节来解决开销问题。(即,“拍摄不需要的快照似乎有点受欢迎

  • 问题内容: 如何获得Python中索引名称的列表?这是我到目前为止的内容: 问题答案: 搜索有关使用库进行检索的信息时,会出现此问题。接受的答案说可以使用,但该方法已删除(截至2017年)。要获取,您可以使用以下代码:

  • 问题内容: 我有两个具有以下映射的索引(我将简化它们的映射): 1)AccountType映射: 2)ProductType映射: 现在,我有几件事需要弄清楚: 1)首先,有一个索引是一个好主意,在我的情况下是帐户,并且产品是嵌套对象,但是在这里每次我要更新/添加新产品时,我都必须重新索引(更新)整个帐户文件? 2)我的第二个问题是:我想具有搜索功能,因此,如果用户通过在文本框中键入内容进行搜索,

  • 问题内容: 我想要一个很好的,快速且容易的方法,使用它们的Java REST客户端 在elasticsearch中获取所有索引。我目前能够通过抓住他们的较低级别的客户端来做到这一点,如下所示: 本质上,我只是按照其文档中的建议将其称为端点。这可以正常工作,但是我想知道是否有使用Java API的更好的方法。我似乎无法在他们当前的API中找到方法,但想知道是否有人知道我不知道的东西。必须使用s和各个

  • 问题内容: 我有一个已创建的公司类型。在该公司类型的内部,我有一个名为“摘要”的字段。如何在此字段中添加多个索引分析器? 我简要地研究了使用Yakaz插件,但似乎无法与NEST一起使用。 其背后的原因是,有时用户会在查询中搜索带有句点的公司名称,而其他时候则不包括句点。我想在公司名称上使用ngram进行部分匹配,带标点和不带标点。我目前正在使用停用词过滤器来删除标点符号。 摘要字段的属性(具有多个

  • 问题内容: 我创建了这个功能: 该函数在2个索引中查找搜索词。Visual Studio向我显示以下消息: “已弃用。您可以在查询中指定_index以定位特定索引” 但是我该怎么办呢? 问题答案: 由于不建议使用indexs查询,因此它目前仍可以使用,但不推荐使用该警告是可能在将来的主要版本中将其删除。 您可以通过以下方式实现与索引查询相同的功能: 产生以下查询JSON