Графический запрос Lucene: разница между fields.someFieldname = xxx и fields.someFieldname: xxx - PullRequest
0 голосов
/ 11 октября 2019

Я пишу запрос Grafana lucene, и при построении fields.statusCode = xxx и fields.statusCode: xxx я получаю два разных результата, первый fx равен 1200, а второй 24. 24. 1001 *

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

В чем разница между ':' и '='?

ОБНОВЛЕНИЕ предоставление скриншотов Вот снимок экрана с использованием ":"

query using

Вот снимок экрана с использованием "= "

query using

, как вы можете видеть, изменилось только одно: vs =.

Я выделил некоторые частикартинок (что не влияет на вопрос).

Первым знаком в запросе является просто URL.

1 Ответ

0 голосов
/ 11 октября 2019

В запросе Lucene правильный оператор для использования - :, а не =, поэтому fields.statusCode:xxx, который дает 24 результата, является правильным способом сделать это.

Более подробную информацию можно найти на синтаксический анализатор запросов Lucene документация.

Все, что вы напишете в поле Query в Grafana, в итоге будет отображаться в query_string ниже:

{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "1571221609944",
              "lte": "1571223409944",
              "format": "epoch_millis"
            }
          }
        },
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": "fields.requestPath:\"bla bla bla\" AND XYZ AND method:POST"
          }
        }
      ]
    }
  },
  "aggs": {
    ...
  }
}

Как вы можетесм. в синтаксисе query_string запроса (семантически эквивалентном тому, который я указывал выше), : - это символ, который необходимо использовать для разделения имени и значений поля.

...