Я создал индекс в смысле, который я доволен и пытаюсь реализовать набранный запрос в клиенте НЕСТА следующим образом:гнездо упругой search.net не возвращает никаких результатов с помощью любого запроса
var node = new Uri("http://elasticsearch-blablablamrfreeman");
var settings = new ConnectionSettings(node) .SetTimeout(300000) .SetDefaultIndex("films") .MapDefaultTypeIndices(d => d .Add(typeof(film), "films")) .SetDefaultPropertyNameInferrer(p=>p);
Вводить его (среди поисковика и индексатор) с моей DI:
builder.Register(c => new ElasticClient(settings)).Named<ElasticClient>("esclient");
Поиск с использованием любого запроса, такие, как показано ниже:
var result = _client.Search<film>(s => s
.AllIndices() .С (0) .Size (10) .Query (д => д .Term (р => р .Title, query) ));
Индексатор работает нормально, поэтому код не включен в этот список. Я поменял местами любые параметры параметров, поэтому я знаю, что в приведенном выше коде есть избыточность (или, по крайней мере, индекс по умолчанию был бы достаточным).
Результат var не содержит ничего, с большим количеством жира 0 по всем его свойствам, несмотря на то, что у меня есть множество данных по моим показателям (включая индекс «фильмы»).
Я даже попробовал необработанный метод QueryRaw с matchall и nada!
EDIT (Крис Пратт в правильном направлении здесь)
Продолжительность:
var result = _client.Search<film>(s => s
.From(0)
.Size(10)
.QueryRaw(@"{ ""match_all"": {} }"));
И имея:
var settings = new ConnectionSettings(node)
.SetTimeout(300000)
.MapDefaultTypeIndices(d => d
.Add(typeof (film), "chosen_index"))
.MapDefaultTypeNames(t => t
.Add(typeof (film), "en"));
Возвращает отладочная информация, как:
[Elasticsearch.Net.ElasticsearchResponse<Nest.SearchResponse<film>>] = {StatusCode: 200,
Method: POST,
Url: http://elasticsearch-blablablamrfreeman/chosen_index/film/_search,
Request: {
"from": 0,
"size": 10,
"query": { "match_all": {} }
},
Response: <Response stream not captured or already read...
Мой вопрос: : Кажется, я на самом деле запрашивал неправильный URL-адрес в комментарии Криса Пратта, но почему не тип вывода работает для типа, но он для индекса?
/chosen_index/фильм/_search
следует читать
/chosen_index/ен/_search
Если мой логический вывод является правильным.
Должно ли оно ПОЧТОВИТЬСЯ ИЛИ ПОЛУЧИТЬ? Я обычно получаю через API поиска по смыслу. И, наконец, что, если я хочу писать свои запросы против моего родного типа фильма, но в некоторых случаях он переопределяет ES-тип в URL.
Например, если я добавляю другой параметр языка и теперь хочу запросить один и тот же индекс, но как «en», так и «de» ES-типы и т. Д. (Которые являются действительными типами под тем же индексом, что и уже построенный с помощью смысла) ,
Заранее благодарен!
Что мне помогает в этих сценариях - получить фактический запрос NEST, который генерирует и запускает это прямо против вашего индекса. Чтобы получить запрос, вы можете отлаживать и проверять 'ConnectionStatus.Request' на своем объекте результата (он слегка похоронен под' [Nest.SearchResponse <...>] '>' base'). Кроме того, вы можете использовать Glimpse вместе с плагином Elasticsearch, чтобы просмотреть все ваши запросы. Основываясь на сгенерированном запросе и исходных результатах, полученных непосредственно из Elasticsearch, вы обычно можете определить проблему. –
Также, пока вы отлаживаете, проверьте значение 'RequestUrl' (в тех же местах, что и' Request'). Если он запрашивает неверный индекс или что-то еще, вы можете сразу увидеть его. –
@ChrisPratt Отправлено на ваши комментарии, пожалуйста, посмотрите, когда сможете, благодаря кучу! – notsoobvious