Elasticsearch Nest SDK принимает запрос с неверным JSON? - PullRequest
1 голос
/ 01 октября 2019

Я использую 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, она заявляет, что это неверный запрос.

...