我想在Kibana 5中添加scritpted字段以从消息中获取存储的proc名称。能够可视化每个SP的错误数量。 我有字段"消息"我在哪里可以看到错误文本:
"[2017-02-03 05:04:51,087] @ MyApp.Common.Server.Logging.ExceptionLogger [ERROR]: XmlWebServices Exception
User:
Name: XXXXXXXXXXXXXXXXXXXXXXX
Email: 926715@test.com
User ID: 926715 (PAID)
Web Server: PERFTESTSRV
Exception:
Type: MyApp.Common.Server.DatabaseException
Message: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Source: MyApp.Common.Server
Database: MyDB
Cmd Type: StoredProcedure
Cmd Text: spGetData
Trans: YES
Trans Lvl: Unspecified"
指南:https://www.elastic.co/blog/using-painless-kibana-scripted-fields
我的计划是添加类似无痛脚本的内容:
def m = /(?:Cmd\sText:\s*)[a-zA-Z]{1,}/.matcher(doc['message'].value);
if ( m.matches() ) {
return m.group(1)
} else {
return "no match"
}
我也尝试过
def tst = doc['message'].value;
if (tst != null)
{
def m = /(?:User\sID:\s*)[0-9]{1,}/.matcher(tst);
if ( m.matches() ) {
return m.group(1)
}
} else {
return "no match"
}
我如何处理doc [' message']。value? 当我尝试这样做时,我收到错误" Courier Fetch:5个分片中的5个失败。" 当我尝试doc [' message.keyword']。value时,我内部没有完整的消息。我不明白我在哪里可以了解内部消息的结构以及如何引用它?
答案 0 :(得分:1)
我认为这个问题与长度有关。输入“关键字”太长了。它应该是“文本”类型,不受无痛支持。
https://www.elastic.co/blog/using-painless-kibana-scripted-fields
无痛和Lucene表达式都对doc_values中存储的字段进行操作。因此,对于字符串数据,您需要将字符串存储在数据类型>关键字中。基于Painless的脚本字段也无法直接在> _source。
上运行
https://www.elastic.co/guide/en/elasticsearch/reference/master/keyword.html_italic_
索引结构化内容的字段,例如电子邮件地址,主机名,状态>代码,邮政编码或标签。 如果您需要索引电子邮件正文或产品>说明等全文内容,则可能应该使用文本字段。