Я использую Nest SDK для создания запросов к Elasticsearch, и меня смущает то, что, по-видимому, недопустимый JSON, принимаемый сервером Elasticsearch.
Мой код генерации запроса выглядит следующим образом:
protected SearchRequest testSearchRequest()
{
QueryContainer MyFilter = new QueryContainer();
List<string> strings = new List<string>() { "a", "b", "c", "d", "e" };
foreach (string s in strings)
{
MyFilter = MyFilter || new TermQuery { Field = s, Value = "value_" + s };
}
return new SearchRequest("index-1,index-2")
{
From = 0,
Size = 10,
Query = new TermQuery { Field = "test", Value = "testvalue" } && MyFilter
};
}
Я отлаживаю Запрос двумя способами, так как считал, что, возможно, возникла проблема с получением данных запроса, и свойство DebugInformation
в Результате поиска, и значение result.ApiCall.RequestBodyInBytes
показывают одинаковый результат:
{
"from": 0,
"query": {
"bool": {
"must": [
{
"term": {
"test": {
"value": "testvalue"
}
},
{
"bool": {
"should": [
{
"term": {
"a": {
"value": "value_a"
}
},
{
"term": {
"b": {
"value": "value_b"
}
},
{
"term": {
"c": {
"value": "value_c"
}
},
{
"term": {
"d": {
"value": "value_d"
}
},
{
"term": {
"e": {
"value": "value_e"
}
}
]
}
]
},
"size": 10
}
}
Мне кажется, что термины, сгенерированные моим циклом, неправильно анализируются с помощью дополнительных квадратных скобок и неправильных скобок?
Что странного в том, что я получаю HealthyResponse
от Elasticsearch.
Если я пытаюсь использовать эту строку в консоли Kibana, она заявляет, что это неверный запрос.