Intro
我正在将弹性版本升级到6.3 (以前我们使用的是5.4。我们的应用程序是用C#编写的,因此我们使用NEST.NET dll与弹性服务器对话,所以我们也在将其更新到6.0.0.0版本。
用例-在之前
在第5版之前,我能够执行以下查询:
jsonStr ="
{
"from": 16224,
"size": 12,
"query": {
"bool": {
"filter": [
{
"bool": {
"must": [
{
"terms": {
"COMPANY": [
"AMP Services Ltd"
]
}
}
]
}
}
]
}
}
}
}"使用这个NEST/C#代码:
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,我尝试执行以下相同的查询:
jsonStr ="
{
"from": 16224,
"size": 12,
"query": {
"bool": {
"filter": [
{
"bool": {
"must": [
{
"terms": {
"COMPANY": [
"AMP Services Ltd"
]
}
}
]
}
}
]
}
}
}"使用此NEST/C#代码(因为previus方法签名不再可用):
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)找不到任何东西来帮助我替换这个逻辑。论坛上也没有。
你们对此有什么见解吗?
谢谢
发布于 2018-06-27 03:03:37
它看起来与一个6.0.0中弹性搜索中的验证更改相关;在5.x中,滚动请求允许使用from参数,但是忽略了它。现在,在6.0.0中,Elasticsearch更加严格,并验证滚动请求是否存在from,如果存在,则返回一个错误的响应,并提供适当的验证错误。
由于from参数对滚动请求没有意义,因此解决方案是执行以下两种方法之一
from参数from参数,但不要使用Scroll。另外,如果需要滚动许多文档,则可能需要使用可观察助手进行滚动。
https://stackoverflow.com/questions/51053776
复制相似问题