Elasticsearch 2.1 - 弃用的搜索类型

标签 elasticsearch nest

根据这个link , scancount 都被弃用了。

我正在尝试更改我的查询以反射(reflect)这一点。所以 count 的改变很简单,只需删除搜索类型并在请求中添加 size=0,但是,我不是 100% 在 scan更改。

目前我有这个查询:

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 参数中实际使用它。

最佳答案

您的理解是正确的,即按 _doc 排序的更改(如您在问题中记录的那样)将替换已弃用的 Scan 搜索类型。 SortSpecialField 枚举只是按 _doc 排序的语法糖。如果您更喜欢使用它,在 NEST 2.0 [仅] 中,您可以这样做:

ElasticClient.Search<Product>(s => s
.From(0)
.Size(10)
.Scroll("4s")
.Sort(x => x.Ascending(SortSpecialField.DocumentIndexOrder))
    ...

关于Elasticsearch 2.1 - 弃用的搜索类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34754518/

相关文章:

nest - 使用 Elasticsearch 客户端发布原始 json

c# - NEST Elasticsearch查询值在2个字段名之间

elasticsearch - 是否可以在不将特定数据加载到索引的情况下检查特定数据是否与查询匹配?

c# - 我怎样才能 "pass through"来自 NEST Elasticsearch 查询的原始 json 响应?

c# - 新的NEST dll版本NEST.1.1.2中缺少BaseQuery类

c# - 使用 NEST Field Boosting 的 Elasticsearch

Elasticsearch、Nest 和 Lucene.net

sorting - ElasticSearch按多个脚本排序

security - Logstash:logstash输入中的多个插件

elasticsearch - 比较两个数值字段elasticsearch