Альтернатива Nest Client для AddSortField в 2.x

В настоящее время мы используем клиент NEST для всех операций индексации, где «AddSortField» использовалось для сортировки анализируемого поля (вместе с анализатором сортировки). Похоже, эта опция больше не доступна в 2.X. Есть ли альтернативы этому? Или любые рекомендации по сортировке анализируемых полей в 2.X были бы очень признательны.

Примечание. Текущая используемая версия NEST и Elasticsearch - 1.X

Спасибо,

Паван


person Pavan    schedule 07.04.2016    source источник
comment
Я надеюсь, что этот ответ прольет на это некоторый свет.   -  person Rob    schedule 07.04.2016


Ответы (1)


AddSortField в NEST 1.x - это просто удобный метод сопоставления свойства как multi_field с подполем sort для использования при сортировке; для полей string, где не указано SortAnalyzer, это поле not_analyzed .

Чтобы добиться того же в NEST 2.x, вы можете использовать плавное сопоставление, чтобы сопоставить свойство как multi_field, добавив sort подполе

var descriptor = new CreateIndexDescriptor("myindex")
    .Mappings(ms => ms
        .Map<Company>(m => m
            .Properties(ps => ps
                .String(s => s
                    .Name(n => n.Name)
                    // map as multi_field
                    .Fields(fs => fs
                        .String(ss => ss
                            .Name("sort")
                            .Index("sortAnalyzer")
                        )
                    )
                )
            )
        )
    );

При сортировке, вы затем отсортируете по name.sort

var response = client.Search<Company>(s => s
    .Query(q => q.MatchAll())
    .Sort(ss => ss
        .Ascending(p => p.Name.Suffix("sort"))
    )
);
person Russ Cam    schedule 08.04.2016
comment
Спасибо за ответ. - person Pavan; 11.04.2016
comment
Не стоит беспокоиться. Если он отвечает на ваш вопрос, проголосуйте и примите ответ - person Russ Cam; 11.04.2016