我正在尝试根据出现的消息从elasticsearch检索所有数据,我发现如果使用Scroll,我可以循环直到文档搜索结束,但是以下查询返回Documents
= 0但Total = 1954:
var response = client.Search<Log4Net>(s => s
.Query(q => q.QueryString(qs => qs
.DefaultField(m => m.Message).Query("\"" + message + "\"")))
.SearchType(SearchType.Scan)
.Scroll("60s"));
while (response.Documents.Any())
{
var request = new BulkRequest();
request.Refresh = true;
request.Consistency = Consistency.One;
request.Operations = new List<IBulkOperation>();
foreach (var item in response.Documents)
{
request.Operations.Add(new BulkIndexOperation<Log4Net>(item));
}
var result = client.Bulk(request);
response = client.Scroll<Log4Net>("60s", response.ScrollId);
}
如果我使用滚动条,则文档为空,如果我删除并获得前1000条消息,则可以获取数据,我使用滚动条的方式有什么问题吗?
如果指定.SearchType(SearchType.Scan)
,则第一个响应不包含任何文档。它将为您提供.Total
属性中的全部文档,这些属性将通过.ScrollId
在滚动请求中使用on响应滚动来返回。
如果 未指定 .SearchType(SearchType.Scan)
,则第一个响应将包含第一组文档。
这是Elasticsearch的差异,不是NEST。SearchType.Scan
实际上在2.1.0中已弃用,但仍在NEST 2.x中,因为它支持Elasticsearch 2.x的所有次要版本。
我遇到了一些实际的问题,比如使用字段增强来处理ElasticSearch。我已经看过关于这个主题的Nest文档,但它们没有特别大的帮助,所以我的代码实际上是基于这个问题的解决方案:使用Nest Field Boosting进行弹性搜索。 如果运行以下查询,我会得到一个结果,正如预期的那样: 然而,如果我尝试使用场增强,使用以下方法,我没有得到匹配: .OnFieldsWithBoost(d=>d.
我如何告诉Panache查询的结果将是而不是? 谢谢你的回答 编辑:回购代码:
问题内容: 我有一个运行中的elasticsearch的内存实例,并做了一些探索性的编码来学习搜索Java API。我能够将文档提交到索引并使用GET检索它们,但是当我尝试简单的搜索查询时,没有得到任何结果。 经过一些测试后,我认为问题出在我如何设置节点和关联的客户端(在内存中): 问题答案: Googleelasticsearch小组中的某个人很友好,可以在这里帮助我。将文档提交到内存节点后,我
嗨,我是elasticsearch的新手,现在我索引了一个网站,我想用我的查询的单词获得文本摘录, 示例I索引 Lorem ipsum dolor sit amet,consectetur adipiscing Elit。Morbi nec odio在magna blandit porta quis a Nibh。整数sodales ex ut sagittis venenatis。Duis ef
我正在玩mongob,并将一些测试数据{name:"david"}输入到“用户”集合中。我通过键入mongoshell验证了数据在MongoDB中 结果: 在 node.js 脚本中,使用以下代码: 不返回任何结果 我没有发现任何错误,也没有错误。请告知
问题内容: 我在Elasticsearch中有一个小型数据库,出于测试目的,我想拉回所有记录。我正在尝试使用以下形式的网址… 有人可以给我您用来完成此操作的URL吗? 问题答案: 我认为支持lucene语法是这样的: 大小默认为10,因此您可能还需要获取10个以上的商品。(其中BIGNUMBER等于您认为大于数据集的数字) 但是,elasticsearch文档建议使用扫描搜索类型针对大型结果集。