首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性/巢式6+中的滚动和寻呼

弹性/巢式6+中的滚动和寻呼
EN

Stack Overflow用户
提问于 2018-06-27 02:37:33
回答 1查看 2.9K关注 0票数 1

Intro

我正在将弹性版本升级到6.3 (以前我们使用的是5.4。我们的应用程序是用C#编写的,因此我们使用NEST.NET dll与弹性服务器对话,所以我们也在将其更新到6.0.0.0版本。

用例-在之前

在第5版之前,我能够执行以下查询:

代码语言:javascript
复制
jsonStr =" 
   {
      "from": 16224,
      "size": 12,
      "query": {
        "bool": {
          "filter": [
            {
              "bool": {
                "must": [
                  {
                    "terms": {
                      "COMPANY": [
                        "AMP Services Ltd"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
}"

使用这个NEST/C#代码:

代码语言:javascript
复制
Func<SearchRequestParameters, SearchRequestParameters> requestParameters = null;
requestParameters = a => a.Scroll(new TimeSpan(0, 1, 0));
response = Connection.Client.GetInstance().LowLevel.Search<dynamic>("myindex", new PostData<dynamic>(jsonStr), requestParameters);

有了这个,我就能毫无问题地获取数据,

用例-现在是

现在,使用version 6,我尝试执行以下相同的查询:

代码语言:javascript
复制
jsonStr ="
{
  "from": 16224,
  "size": 12,
  "query": {
    "bool": {
      "filter": [
        {
          "bool": {
            "must": [
              {
                "terms": {
                  "COMPANY": [
                    "AMP Services Ltd"
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  }
}"

使用此NEST/C#代码(因为previus方法签名不再可用):

代码语言:javascript
复制
SearchRequestParameters searchRequest = new SearchRequestParameters();
searchRequest.Scroll = new TimeSpan(0, 1, 0);
response = Connection.Client.GetInstance().LowLevel.Search<StringResponse>("myindex", PostData.String(jsonStr), searchRequest);

我得到了这个错误:“验证失败: 1:在滚动上下文中不允许使用from;”

Documentation

我在这里(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html)和这里(https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/sliced-scroll-search-usage.html)找不到任何东西来帮助我替换这个逻辑。论坛上也没有。

你们对此有什么见解吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-27 03:03:37

它看起来与一个6.0.0中弹性搜索中的验证更改相关;在5.x中,滚动请求允许使用from参数,但是忽略了它。现在,在6.0.0中,Elasticsearch更加严格,并验证滚动请求是否存在from,如果存在,则返回一个错误的响应,并提供适当的验证错误。

由于from参数对滚动请求没有意义,因此解决方案是执行以下两种方法之一

  1. 使用滚动API时移除from参数
  2. 继续使用from参数,但不要使用Scroll。

另外,如果需要滚动许多文档,则可能需要使用可观察助手进行滚动。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51053776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档