Вероятно, это просто я полностью наблюдаю за очевидным «недостающим звеном». В любом случае, здесь: у меня есть конечная точка elasticsearch http://distribution.virk.dk/cvr-permanent/virksomhed/_search, и я хотел бы запросить эту конечную точку. Довольно просто.
Насколько я понимаю, NEST дает вам возможность строго типизировать взаимодействие с индексом elasticsearch, почти так же, как Visual Studio создает типы для asmx/svc, когда вы добавляете ссылку на соответствующий сервис.
Итак, мой вопрос: как, черт возьми, мне перейти от знания конечной точки для индекса elasticsearch к тому, чтобы типы соответствовали индексу и выполняли запросы по индексу? Я полагаю, что ответ: «Используйте NEST!», Но все учебные пособия, которые мне удалось найти, предполагают, что у вас есть локальный индекс, который вы создаете из типа С#, который затем даст вам тип для использования в ваших запросах. Но что делать, когда это «удаленный» индекс, из которого вы должны строить свои типы?
Заранее спасибо за любой ответ, указывающий в правильном направлении!
ОБНОВЛЕНИЕ:
Я получил сопоставления в индексе, который я сократил только до поля «cvrNummer» в следующем:
{
"cvr-permanent-prod-20170205" : {
"mappings" : {
"virksomhed" : {
"_size" : {
"enabled" : true
},
"properties" : {
"Vrvirksomhed" : {
"properties" : {
"type" : "long"
},
"cvrNummer" : {
"type" : "string"
},
}
}
},
}
}
}
}
}
Затем я сделал следующий класс:
[ElasticsearchType(Name = "virksomhed")]
public class Company
{
[Text(Name = "cvrNummer")]
public string cvrNumber { get; set; }
}
Теперь все, что я хочу сделать (для начала), это найти документы, имеющие cvrNummer с определенным значением, f. бывший. "12883404". У меня есть следующий код в простом консольном приложении:
var node = new Uri("http://distribution.virk.dk/cvr-
permanent/virksomhed/_search");
var settings = new ConnectionSettings(node).DefaultIndex("defaultindex");
settings.BasicAuthentication("username", "password");
var client = new ElasticClient(settings);
Затем я пробую следующий очень простой запрос:
var searchResponse = client.Search<Company>(s => s
.Type<Company>()
.Query(q => q
.Match(m => m
.Field(f => f.cvrNumber)
.Query("12883404")
И я получаю «400 неверных запросов». Что я делаю не так?