Эластичный запрос для поиска по термину и в диапазоне дат - PullRequest
0 голосов
/ 11 января 2019
GET _search
{
  "query": {
    "bool":{
      "filter":{
        "and":[
        {
          "term":{
            "Server": "XYZ"
          },
          "range": {
            "DateTime":{
              "from": "2018-12-13T00:20:48.782Z",
              "to":"2018-12-14T00:20:48.782Z"
            }
          }
        }
      ]
    }}
  }
} 

Выше мой эластичный запрос на выборку всех записей, принадлежащих XYZ Серверу, и в пределах временного диапазона у меня есть наборы Server и DateTime в моем наборе данных, но выдает ошибку ниже:

{"ошибка": { "первопричина": [ { "type": "parsing_exception", "причина": "[термин] неправильно сформированный запрос, ожидается [END_OBJECT], но найден [FIELD_NAME]", «линия»: 9, "Кол": 11 } ], "type": "parsing_exception", "причина": "[термин] неправильно сформированный запрос, ожидается [END_OBJECT], но найден [FIELD_NAME]", «линия»: 9, "col": 11}, "status": 400}

Что мне здесь не хватает!

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Вы не можете иметь and в своем предложении фильтра. В запросе ES нет предложения and. По сути, вам нужно объединить фильтр в предложениях term и range. Пожалуйста, прочитайте объединить фильтры в ES для получения дополнительной информации об этом.

Поскольку ваш запрос использует недопустимое предложение, ES не может проанализировать ваш запрос.

Пожалуйста, используйте правильный запрос, и вы сможете получить результаты от ES.

Пожалуйста, попробуйте запрос ниже, который должен нормально работать, и дайте мне знать, если он не работает.

{
  "query": {
    "constant_score": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "Server": "XYZ"
              }
            },
            {
              "bool": {
                "must": [
                  {
                    "range": {
                      "DateTime": {
                        "from": "2018-12-13T00:20:48.782Z",
                        "to": "2018-12-14T00:20:48.782Z"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}
0 голосов
/ 11 января 2019

В сообщении об ошибке четко указано, что запрос неверен.

Вы можете проверить официальные документы для запроса диапазона и для запроса bool , чтобы убедиться, что в запросах bool нет фильтра, а в запросах диапазона нет от to до.

Пожалуйста, проверьте этот запрос.

GET _search
{
 "query": {
   "bool": {
     "must": [ 
      {
        "term": { 
          "Server": "XYZ"
        }
      },
      { 
        "range": {
          "DateTime":{
            "gt": "2018-12-13T00:20:48.782Z",
            "lte": "2018-12-14T00:20:48.782Z"
          }
        }
      }
    ]
  }
 }
}
0 голосов
/ 11 января 2019

Ваш запрос искажен, используйте вместо него следующий запрос:

GET _search
{
 "query": {
   "bool": {
     "filter": [ 
      {
        "term": { 
          "Server": "XYZ"
        }
      },
      { 
        "range": {
          "DateTime":{
            "from": "2018-12-13T00:20:48.782Z",
            "to": "2018-12-14T00:20:48.782Z"
          }
        }
      }
    ]
  }
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...