2016-01-12 2 views
4

В соответствии с этим link оба scan и count устарели.Elasticsearch 2.1 - Устаревшие типы поиска

Я пытаюсь изменить свои запросы, чтобы отразить это. Таким образом, изменение 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"))))))); 

Я видел перечисление SortSpecialFieldhere, но я не знаю, как на самом деле использовать это в параметре sort.

+0

Какую версию NEST вы используете? –

+0

От nuget, elasticsearch.net и гнезда .... оба 1.7.1 –

+0

NEST и Elasticsearch.NET 1.7.1 несовместимы с ES 2.x - они могут вообще работать, но есть изменения в Elasticsearch, которые не будут, например. ошибки. Существует предварительный релиз версии 2.x для NEST на nuget –

ответ

4

Вы правы в своем понимании, что изменение (как вы документируете в своем вопросе) для сортировки по _doc заменит устаревший тип поиска Scan. Перечисление SortSpecialField - это просто синтаксический сахар для сортировки по _doc. Если вы предпочитаете использовать его, в NEST 2.0 [только], вы можете сделать это:

ElasticClient.Search<Product>(s => s 
.From(0) 
.Size(10) 
.Scroll("4s") 
.Sort(x => x.Ascending(SortSpecialField.DocumentIndexOrder)) 
    ... 
Смежные вопросы