Elasticsearch: считать документы из запроса на совпадение - PullRequest
0 голосов
/ 15 октября 2018

Я хотел бы получить количество документов, которое соответствует определенной строке в пределах временного диапазона.

Как мне указать временной диапазон из этого запроса?

GET myindex/_count
{
  "query": {
            "match" : {
            "log" : "ERROR"
        }
  }
}

Чтобы получитьдиапазон времени:

{
  "query": {
    "range": {
      "msgSubmissionTime": {
        "gte": "now-10m",
        "lt": "now"
      }
    }
  }
}

Есть ли способ объединить оба запроса?

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

попробуйте это.

{
  "query": {
    "bool": {
      "filter": {
        "range": {
          "msgSubmissionTime": {
            "gte": "now-10m",
            "lt": "now"
          }
        }
      },
      "must": [
        {
          "term": {
            "log" : "ERROR"
          }
        }
      ]
    }
  }
}
0 голосов
/ 15 октября 2018

Ребята выше меня правы, но они оба добавили избыточные [, ] для must, что подразумевает запрос больше, чем в поле соответствия.

GET _search
{
  "query": {
    "bool" : {
      "must" : {
        "match" : {  "log": "ERROR" }
      },
     "filter": 
        {
          "range": {
            "msgSubmissionTime": {
               "gte": "now-10m",
               "lte": "now"
            }
          }
        }
    }
  }
}
0 голосов
/ 15 октября 2018

Конечно, вы можете.Это можно сделать двумя способами: с фильтрацией и логическим запросом.

Elastic рекомендует использовать фильтры для предварительной фильтрации результатов - они быстрее, чем запросы.

Булевы запросы могут собирать различные запросы с помощью операторов AND, OR, NOT.

В официальных документах Elastic вы можете найти пример, который почти соответствует вашему вопросу - документация эластичного поиска

Таким образом, ваш запрос будет выглядеть так:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "log": "ERROR"
          }
        }
      ],
      "filter": {
        "range": {
          "msgSubmissionTime": {
            "gte": "now-10m",
            "lte": "now"
          }
        }
      }
    }
  }
}
...