怎么又是你

Kibana全文搜索问题

Kibana | 作者 haohao | 发布于2017年08月03日 | 阅读数:7406

Kibana不支持全文搜索吗?在Discover内直接输入要查询的字符串搜不到结果,字符中包含/字符。比如有如下一条日志:
03/Aug/2017:00:26:47 -0700|52.9.101.47|GET /admin/email/markedAsRead?uuid=3211755339325447&type=2&tag= HTTP/1.1|200|-|66.102.8.56|Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)|-|chime.me|845|0.018|0.018|172.31.21.87:28080|29917549|1|a2904ffe-29a8-471a-825c-6d03fbe745f8
 
我想搜"/admin/em",这样是搜不出来的,但是日志中是有这个字符串的。请问怎么才能搜出来呢?
已邀请:

haohao

赞同来自:

木人么

hubiao

赞同来自:

你别分词就可以

kennywu76 - Wood

赞同来自:

Kibana搜索的能力取决于底层数据是如何被处理的。对于你给的日志范例,是如何写入到ES里的? 是否有做字段切分? mapping怎么设置的?这些都影响搜索结果。
 
假设你对原始数据什么处理都没有做,mapping也没有定义过,整条数据写入到一个字段,那么这个字段默认是text类型,搜/admin/em是可以match的。 用你给的数据很容易演示:
 1. 将数据写入一个新索引myindex:
PUT myindex/logs/1
{
"msg": "03/Aug/2017:00:26:47 -0700|52.9.101.47|GET /admin/email/markedAsRead?uuid=3211755339325447&type=2&tag= HTTP/1.1|200|-|66.102.8.56|Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)|-|chime.me|845|0.018|0.018|172.31.21.87:28080|29917549|1|a2904ffe-29a8-471a-825c-6d03fbe745f8"
}
​2. 查看mapping,可以看到msg默认是text类型,并有一个额外的msg.keyword是keyword类型
GET myindex/_mappings
{
"myindex": {
"mappings": {
"logs": {
"properties": {
"msg": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
3. 在kibana上设置好这个索引的pattern,discover的搜索框输入/admin/em, 可以看到match这条数据:

屏幕快照_2017-08-04_11.09_.48_.png

 
并且match的文本被高亮显示。  至于为什么搜索的关键字是/admin/em,而结果里高亮的只有admin,需要你去思考一下。 
 
Kibana不是一个想象中的,将任意文本扔给他就可以智能处理,随意搜索匹配到自己脑子里结果的魔法应用。它的前端功能都要依靠后端的Elasticsearch来提供,在对ES没有基本理解的情况下, 顺畅的使用Kibana是不太可能的。
 
 

haohao

赞同来自:

@kennywu76:
     下图是Kibana的一条查询结果:

要回复问题请先登录注册