使用 shuf 来打乱一个文件中的行或是选择文件中一个随机的行。

[求助]kibana-discovery页面排序dub及搜关键字bug

Elasticsearch | 作者 Lincoln | 发布于2017年05月24日 | 阅读数:9596

业务系统日志经 filebeat->logstash->es->kibana使用发现如下2个bug
1)message无法排序,见下图
2) 搜索关键字“SYSTEM_ERROR”无信息,搜索“aop.ACQ.SYSTEM_ERROR”返回日志明细
output_2017-05-17_22:05.log:2017-05-18 02:56:06.582  INFO [citymain,,,] 439942 --- [skExecutor-3140] c.p.m.s.payment.service.AliPayService    : refreshStatus Ö§¸¶±¦²éѯ·µ»Ø==>{"alipay_trade_query_response":{"code":"20000","msg":"Service Currently Unavailable","sub_code":"aop.ACQ.SYSTEM_ERROR","sub_msg":"ϵͳÒì³£","buyer_pay_amount":"0.00","invoice_amount":"0.00","point_amount":"0.00","receipt_amount":"0.00"},"sign":"JuCeU1Y1AfhDxMPk7QEAYM0PKEixhCSPQHngtyS64Oo+K1NoRNiNgXGKVnQx1S400zMI7oi00Uq0pMzApAnKKvg9DsH7zt8zHjO+PDsl1lqLb7gRj3/HB/Ye7Y5ReO4oBqKmOIdDohs+un4giwyT3QigHX/954zhre5w+evxlcuafP/0UbNro5n5MmUT3s733jMpv0aaayPW6mu7ruU8jH0/kXEmSYIyACOIWsHBfPngnJ4IUy0VxdvPF5H7maXbfYNfDoIwKQP6WMAI/Jv3t1nNUTMYd6cPtuDsBnggwWE0mdFrOVgfnoZWFZ5YAzup5Z21OKbX15odQnPp7muJ1A=="}
排序问题:

排序.png

 
 
 
 
 
 
已邀请:

kennywu76 - Wood

赞同来自: medcl

这些都不是bug,而是因为你对ES缺乏了解。
 1.) 如果你没有事先设计过索引的mapping,使用默认的字段类型,那么message字段应该是text类型,也意味着是一个分词字段。 当对一个分词字段进行排序的时候,排序对象是这个字段的词典,所以结果不是你想要的。排序应用在keyword类型字段上才能达到预期效果。 
 
2.)同样的问题,因为message被分词了,而且用的默认的分词器aop.ACQ.SYSTEM_ERROR会被分成一个词存放到词典, 也就是说词典里并不存在SYSTEM_ERROR这样一个东西,所以搜索他搜不到,而搜索aop.ACQ.SYSTEM_ERROR可以成功。
分词效果可以用analyze api进行测试:
POST _analyze
{
"text": "aop.ACQ.SYSTEM_ERROR"
}



{
"tokens": [
{
"token": "aop.acq.system_error",
"start_offset": 0,
"end_offset": 20,
"type": "<ALPHANUM>",
"position": 0
}
]
}

 
你需要稍微深入一点理解ES 里keyword和text数据类型的分别,特别是text类型的含义及对应的match query是如何匹配数据的。
 

Lincoln - 80s

赞同来自:

input {
beats {
port => 5044
}
}
output{
elasticsearh {
hosts => ["30.40.50.60:9200","30.40.50.61:9200"]
index => "citymain-%{ YYYY.MM.dd}"
manage_template => false
document_type => "log"
}
}

要回复问题请先登录注册