根据此link,scan
和count
都已弃用。
我正在尝试更改我的查询以反映这一点。因此count
更改很简单,只需删除搜索类型并将size=0
添加到请求中,但是,我对scan
更改并非100%。
目前我有这个问题:
var result = ElasticClient.Search<Product>(s => s
.From(0)
.Size(10)
.SearchType(SearchType.Scan)
.Scroll("4s")
.Query
(qu =>
qu.Filtered
(fil =>
fil.Filter
(f =>
f.Bool(b => b.Must(m => m.Term("filedName", "abc")))))));
我的理解是,我需要更改的是删除searchtype
并添加sort
吗?即:
var result = ElasticClient.Search<Product>(s => s
.From(0)
.Size(10)
.Scroll("4s")
.Sort(x => x.OnField("_doc"))
.Query
(qu =>
qu.Filtered
(fil =>
fil.Filter
(f => f.Bool(b => b.Must(m => m.Term("filedName", "abc")))))));
我看过一个枚举SortSpecialField
here,但我不确定如何在sort
参数中实际使用它。
答案 0 :(得分:5)
根据您的理解,您认为按_doc
排序的更改(当您在问题中记录时)将替换已弃用的Scan
搜索类型。 SortSpecialField
枚举只是按_doc
排序的语法糖。如果您更喜欢使用它,在NEST 2.0 [仅]中,您可以这样做:
ElasticClient.Search<Product>(s => s
.From(0)
.Size(10)
.Scroll("4s")
.Sort(x => x.Ascending(SortSpecialField.DocumentIndexOrder))
...