Запрос, чтобы увидеть, содержит ли поле строку, используя Query DSL - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь отфильтровать Kibana для поля, содержащего строку «pH». Поле называется extra.monitor_value_name. Примерами возможных значений являются Temperature_ABC01, DO_ABC01 или pH_ABC01.

В DSL-запросе Elasticsearch от Kibana, похоже, нет строки "содержит", поэтому мне нужно сделать запрос на заказ.

Я новичок в Query DSL, можете ли вы помочь мне создать запрос?

Кроме того, правильно ли называть это Query DSL? Я даже не уверен в правильности формулировки.

1 Ответ

0 голосов
/ 16 марта 2019

Хорошо! Возвращаясь к ответу на мой вопрос.

Моя первоначальная проблема возникла из-за незнания field_name против field_name.keyword. Прочтите здесь информацию о ключевом слове здесь: В чем разница между полями 'field' и 'field.keyword' в Kibana?

Раствор 1

Вот запрос, который я в итоге использовал. Я использовал запрос регулярного выражения. Я нашел эту статью полезной для определения синтаксиса регулярного выражения:

{
  "query": {
    "regexp": {
      "extra.monitor_value_name.keyword": "pH.*"
    }
  }
}

Решение 2

Другой способ, которым я мог бы фильтровать, без Query DSL печатал в поле поиска: extra.monitor_value_name.keyword:pH*. Одна интересная вещь, которую стоит отметить, это то, что .keyword не требуется в этом методе. Я не уверен почему.

...