2016-05-23 9 views
-1

У меня есть два вида журналов в ES (rtmp и apache), apache имеет clientip.raw и rtmp имеет ipclient.raw. Проблема заключается в следующем: как я могу увидеть на моей панели Kibana только данные, которые имеют это условие «ipclient» = «clientip»?Как сравнить значение двух полей в Kibana

Я пытался писать это в моей строке поиска, но это не распространяется работа:

{ 
"query": { 
    "filtered": { 
     "filter": { 
      "script": {"script": "doc['clientip.raw'].value == doc['ipclient.raw'].value"} 
      } 
     } 
    } 
} 

ответ

0

Вы можете написать ниже запрос: -

{"constant_score":{"filter":{"script" : { "script" : "doc['clientip.raw'].value == doc['ipclient.raw'].value"}}}} 

Вы можете увидеть сообщение об ошибке при использовании выше запроса таких как: -

ScriptException [сценарии типа [встроенные], работа [поиск] и языки [заводной] отключены]

Чтобы решить эту ошибку, отредактируйте файл elasticsearch.yml и введите следующее свойство в конце: -

script.inline:on 

Затем вы можете перезапустить узел Elasticsearch или кластер, а затем запрос на тот же Kibana который вы получите нужные записи.

+0

Hi! Первое спасибо за ваш ответ, но он не работает, появляется ошибка и в моем elasticsearch.yml я поместил эту конфигурацию: script.groovy.sandbox.enabled: true script.engine.groovy.file.search: true script.engine.groovy.inline.aggs: на script.engine.groovy.inline.search: на script.search: на script.indexed: на script.inline: на –

+0

Просто положить script.inline: по крайней конец, удалите все другие свойства, упомянутые вами, и перезапустите свой сайт elasticsearch. Также проверьте после перезапуска, если elasticsearch работает или нет. Если поиск elasticsearch начнется должным образом после добавления этого свойства, то он будет работать и в Kibana. –

+0

Сценарий работает, но я не получаю записи, которые отвечают условию ... = S –

Смежные вопросы