2016-03-23 5 views
2

Есть ли способ запросить значение определенной длины в Kibana?Kibana запрос длины строки

К примеру, учитывая следующие две пары KV:

key: "some" 
key: "something" 

Я хотел бы искать key.length> 5 и получить "нечто" только.

Другой вариант, который я вижу, это добавить тег из logstash, но тогда мне придется перезагрузить пару сотен GB.

ответ

2

Вы можете использовать запрос скрипта, чтобы сделать это в Kibana. Script Query in Kibana, Существует пример для запроса сценария с длиной ключа более чем 5:

{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "script": { 
        "script": "doc['key'].getValue().length() > 5" 
       } 
      } 
     } 
    } 
} 

А также вам нужно включить поиск сценария в elasticsearch, вам нужно добавить ниже конфигурации в elasticsearch.yml:

script.engine.groovy.inline.search: on 
+0

Спасибо! Документы приводят к возможности поиска groovy: ОБНОВЛЕНИЕ: В качестве меры предосторожности, начиная с версии 4.0.0-RC1, поля сценариев Kibana по умолчанию соответствуют выражениям Lucene, а не Groovy ... Lucene Expressions поддерживает только операции с числовыми полями ... –

1

Вы можете сделать это путем создания сценарного поля непосредственно в Kibana.

  • В Kibana, нажмите на вкладку Настройка и нажмите указательным шаблон

  • Вы должны увидеть 2 вкладки «Поля» и «Подготовленные поля».

  • Перейдите на вкладку «Сценарий». Затем «Добавить скриптовое поле».

  • Введите "Имя" в поле Script и введите следующие данные: -

    документ [ 'ключ'] value.length> 5

  • Нажмите кнопку "Создать поле" в нижней части.. Теперь будет добавлено ваше поле сценария. & можно просмотреть на странице «Открой».

0

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

PUT test_index 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "character_analyzer": { 
      "type": "custom", 
      "tokenizer": "character_tokenizer" 
     } 
     }, 
     "tokenizer": { 
     "character_tokenizer": { 
      "type": "nGram", 
      "min_gram": 1, 
      "max_gram": 1 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "person": { 
     "properties": { 
     "name": { 
      "type": "text", 
      "fields": { 
      "keyword": { 
       "type": "keyword" 
      }, 
      "words_count": { 
       "type": "token_count", 
       "analyzer": "standard" 
      }, 
      "length": { 
       "type": "token_count", 
       "analyzer": "character_analyzer" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

PUT test_index/person/1 
{ 
    "name": "John Smith" 
} 

PUT test_index/person/2 
{ 
    "name": "Rachel Alice Williams" 
} 

GET test_index/person/_search 
{ 
    "query": { 
    "term": { 
     "name.length": 10 
    } 
    } 
} 
Смежные вопросы