首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程
Kibana最吸引我的地方莫过于可视化(visualize),结合桶(buckets)与指标(metrics)能创造出无穷无尽的图形,但是在实践中发现text字段无法进行聚合操作,如果用DSL语句操作,提示如下错误:
"root_cause": [ { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [dept] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." }]
- 1
- 2
- 3
- 4
- 5
- 6
于是仔细搜索了Fielddata的相关知识,启用倒是简单,但无论是elasticsearch还是运行中的kibana都提示不建议启用fielddata,原因是不仅耗费大量的内存(一旦被载入到内存中,相关的数据段销毁之前,它都一直待在内存中),而且检索数据的延迟会非常严重,用户体验较差,所以默认的映射中会自动关闭此功能,启用的方法如下:
# 改变映射信息,强烈不推荐此方法PUT my_index/_mapping/my_type{ "properties": { "my_field": { "type": "text", "fielddata": true } }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
推荐的方法为创建额外的关键字映射,如下:
PUT my_index{ "mappings": { "my_type": { "properties": { "my_field": { "type": "text", "fields": { "keyword": { "type": "keyword" } } } } } }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
改变映射关系后,现在就可以对相关字段建立通关系了,只不过建立桶字段已由“my_field”改为“my_field.keyword”。【注:在添加数据时,不需要对my_field.keyword进行设值。】
结论
可视化的关键是对桶的划分,所以在可视化之前,最好是在创建映射之前,就充分考虑字段是否要进行聚合操作。