Агрегирование Nest возвращает ошибку {Неверный ответ NEST, созданный из-за неудачного низкоуровневого вызова на POST: / people / _search? Typed_keys = true} - PullRequest
0 голосов
/ 10 мая 2019

Я выполняю простой запрос агрегации для упругого поиска, используя гнездо asp в соответствии с документацией по началу работы. Однако я получаю ошибку {Invalid NEST response built from a unsuccessful low level call on POST: /people/_search?typed_keys=true}. Я использую гнездо 7.0.0. с сервисомasticsearch cloud с эластичным поиском 7.0.0. Приведенный ниже код иллюстрирует, как я настроил эластичный клиент и как я выполняю запрос.

Я использовал то же соединение для выполнения успешной операции запроса, поэтому я думаю, что мое соединение в порядке, и настройка индекса также в порядке.

var settings = new ConnectionSettings("my_elasticsearch_url").DefaultIndex("people");

ElasticClient elasticClient = new ElasticClient(settings);

Person person = new Person()
            {
                FirstName = "George",
                LastName = "Ouma"
            };

            var indexResponse = elasticClient.IndexDocument(person);

            var searchResponse = elasticClient.SearchAsync<Person>(s =>
                s.Size(0)

                .Query(q => q
                    .Match(m=>m
                        .Field(f=>f.FirstName)
                        .Query("George")
                    )
                )
                .Aggregations(a => a
                    .Terms("first_names", ta => ta
                        .Field(f => f.FirstName)
                    )
                )
            ).GetAwaiter().GetResult();            

var aggregations = searchResponse.Aggregations.Terms("first_names");

Я ожидаю агрегированных результатов, но я получаю null, а при проверке объекта searchResponse я получаю сообщение об ошибке {Invalid NEST response built from a unsuccessful low level call on POST: /people/_search?typed_keys=true}

1 Ответ

0 голосов
/ 10 мая 2019

Все кредиты @Rob, решение этой проблемы заключается в добавлении суффикса keyword в поле следующим образом: .Field(f => f.FirstName.Suffix("keyword"))

...