- 浏览: 2187989 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
在使用logstash收集日志的时候,我们一般会使用logstash自带的动态索引模板,虽然无须我们做任何定制操作,就能把我们的日志数据推送到elasticsearch索引集群中,但是在我们查询的时候,就会发现,默认的索引模板常常把我们不需要分词的字段,给分词了,这样以来,我们的比较重要的聚合统计就不准确了:
举个例子,假如有10台需要的监控的机器,他们的机器名如下:
search-0-170 search-1-171 search-2-172 search-3-173 search-4-174 search-5-175 search-6-176 search-7-177 search-8-178 search-9-179
如果使用的是logstash的默认模板,它会按-切分机器名,这样以来想统计那台机器上的收集日志最多就有问题了,所以这时候,就需要我们自定义一些索引模板了:
在logstash与elasticsearch集成的时候,总共有如下几种使用模板的方式:
(1)使用默认自带的索引模板 ,大部分的字段都会分词,适合开发和时候快速验证使用
(2)在logstash收集端自定义配置模板,因为分散在收集机器上,维护比较麻烦
(3)在elasticsearc服务端自定义配置模板,由elasticsearch负责加载模板,可动态更改,全局生效,维护比较容易
以上几种方式:
使用第一种,最简单,无须任何配置
使用第二种,适合小规模集群的日志收集,需要在logstash的output插件中使用template指定本机器上的一个模板json路径, 例如 template => "/tmp/logstash.json"
使用第三种,适合大规模集群的日志收集,如何配置,主要配置logstash的output插件中两个参数:
manage_template => false//关闭logstash自动管理模板功能 template_name => "crawl"//映射模板的名字
如果使用了,第三种需要在elasticsearch的集群中的config/templates路径下配置模板json,在elasticsearch中索引模板可分为两种:
(一):静态模板
适合索引字段数据固定的场景,一旦配置完成,不能向里面加入多余的字段,否则会报错
优点:scheam已知,业务场景明确,不容易出现因字段随便映射从而造成元数据撑爆es内存,从而导致es集群全部宕机
缺点:字段数多的情况下配置稍繁琐
一个静态索引模板配置例子如下:
{ "crawl" : { "template": "crawl-*", "settings": { "index.number_of_shards": 3, "number_of_replicas": 0 }, "mappings" : { "logs" : { "properties" : { "@timestamp" : { "type" : "date", "format" : "dateOptionalTime", "doc_values" : true }, "@version" : { "type" : "string", "index" : "not_analyzed", "doc_values" : true }, "cid" : { "type" : "string", "index" : "not_analyzed" }, "crow" : { "type" : "string", "index" : "not_analyzed" }, "erow" : { "type" : "string", "index" : "not_analyzed" }, "host" : { "type" : "string", "index" : "not_analyzed" }, "httpcode" : { "type" : "string", "index" : "not_analyzed" }, "message" : { "type" : "string" }, "path" : { "type" : "string" }, "pcode" : { "type" : "string", "index" : "not_analyzed" }, "pro" : { "type" : "string", "index" : "not_analyzed" }, "ptype" : { "type" : "string", "index" : "not_analyzed" }, "save" : { "type" : "string", "index" : "not_analyzed" }, "t1" : { "type" : "string", "index" : "not_analyzed" }, "t2" : { "type" : "string", "index" : "not_analyzed" }, "t3" : { "type" : "string", "index" : "not_analyzed" }, "url" : { "type" : "string" } } } } } }
(二):动态模板
适合字段数不明确,大量字段的配置类型相同的场景,多加字段不会报错
优点:可动态添加任意字段,无须改动scheaml,
缺点:如果添加的字段非常多,有可能造成es集群宕机
如下的一个logstash的动态索引模板,只设置message字段分词,其他的字段默认都不分词
{ "template" : "crawl-*", "settings" : { "index.number_of_shards": 5, "number_of_replicas": 0 }, "mappings" : { "_default_" : { "_all" : {"enabled" : true, "omit_norms" : true}, "dynamic_templates" : [ { "message_field" : { "match" : "message", "match_mapping_type" : "string", "mapping" : { "type" : "string", "index" : "analyzed", "omit_norms" : true, "fielddata" : { "format" : "disabled" } } } }, { "string_fields" : { "match" : "*", "match_mapping_type" : "string", "mapping" : { "type" : "string", "index" : "not_analyzed", "doc_values" : true } } } ], "properties" : { "@timestamp": { "type": "date" }, "@version": { "type": "string", "index": "not_analyzed" }, "geoip" : { "dynamic": true, "properties" : { "ip": { "type": "ip" }, "location" : { "type" : "geo_point" }, "latitude" : { "type" : "float" }, "longitude" : { "type" : "float" } } } } } } }
总结:
定制索引模板,是搜索业务中一项比较重要的步骤,需要注意的地方有很多,比如:
(1)字段数固定吗
(2)字段类型是什么
(3)分不分词
(4)索引不索引
(5)存储不存储
(6)排不排序
(7)是否加权
除了这些还有其他的一些因素,比如,词库的维护改动,搜索架构的变化等等。
如果前提没有充分的规划好,后期改变的话,改动其中任何一项,都需要重建索引,这个代价是非常大和耗时的,尤其是在一些数据量大的场景中。
有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园
发表评论
-
复盘一个Elasticsearch排序问题的剖析
2019-07-15 21:12 1192最近线上的es查询的 ... -
elasticsearch里面bulk的用法
2018-04-09 20:23 1426上篇文章介绍了在es里 ... -
elasticsearch里面的关于批量读取mget的用法
2018-04-04 16:01 1837es的api除了提供了基本 ... -
elasticsearch的查询流程分析
2018-04-02 20:29 1331我们都知道es是一个分 ... -
如何在elasticsearch里面使用深度分页功能
2018-03-28 18:13 2028前面的文章提到过es默认的from+size的分页方式返回的结 ... -
如何在Elasticsearch里面使用索引别名
2018-03-27 20:37 1682在elasticsearch里面给index起一个alias ... -
如何优雅的全量读取Elasticsearch索引里面的数据
2018-03-26 20:27 7659### (一)scroll的介绍 有时候我们可能想要读取整个 ... -
关于elaticsearch中更新数据的几种方式
2018-03-21 19:00 970作为一个成熟的框架, ... -
Elasticsearch里面的segment合并
2018-03-20 17:50 2100通过前面的文章,我 ... -
Elasticsearch如何保证数据不丢失?
2018-03-19 20:52 2145上篇文章提到过,在elasticsearch和磁盘之间还有一层 ... -
为什么说Elasticsearch搜索是近实时的?
2018-03-16 19:41 9471通过前面两篇文章的介绍,我们大概已经知道了 Elasticse ... -
Elasticsearch如何动态维护一个不可变的倒排索引
2018-03-15 21:34 1143上一篇文章中介绍了Elasticsearch中是如何搜索文本 ... -
Elasticsearch如何检索数据
2018-03-14 20:11 1093我们都知道Elasticsearch是一个全文检索引擎,那么它 ... -
如何备份ElasticSearch索引数据到HDFS上
2018-02-09 18:19 2427在ElasticSearch里面备份策略已经比较成熟了 ... -
Elasticsearch5.6.4集群搭建
2018-02-07 20:13 1344本次搭建的是一个三节点的集群 (一)es的安装 (1)下 ... -
如何使log4j生成json格式的log
2017-09-15 17:44 3851使用java开发项目时,log日志一般都是应用程序必不可少的一 ... -
理解elasticsearch的parent-child关系
2017-09-04 18:43 2845前面文章介绍了,在es里面的几种数据组织关系,包括array ... -
简述ElasticSearch里面复杂关系数据的存储方式
2017-08-18 20:10 2417在传统的数据库里面,对数据关系描述无外乎三种,一对一,一对多和 ... -
使用Java Rest Client操作Elasticsearch
2017-08-09 19:42 2273Elasticsearch作为一个成熟的开源框架,对主流的多种 ... -
ElasticSearch里面的偏好查询
2017-06-22 17:17 1307在es查询的时候我们可 ...
相关推荐
3. **安装Logstash**:在服务器上部署Logstash,配置输入插件(如beats或syslog)以接收Spring Boot应用的日志,以及输出插件(如elasticsearch)以将日志转发至Elasticsearch。 4. **配置Logstash配置文件**:编写...
在Logstash中,模板(Template)扮演着重要的角色,它定义了Elasticsearch如何存储和索引由Logstash发送的数据。`logstash.json` 文件就是这样一个预定义的模板,用于规定数据的结构和字段类型,确保数据在导入时...
为了实现Logstash从MySQL同步数据到Elasticsearch,我们需要编写Logstash配置文件,包含输入、过滤和输出三部分。 1. **输入插件(Input Plugin)**:使用`jdbc`插件连接到MySQL数据库,定期执行SQL查询获取数据。 ...
Kibana 还提供了一个强大的搜索界面,名为 Discover,允许用户查询和过滤数据,以及管理索引模板和设置监视警报。 3. **Logstash**:Logstash 是一个数据收集、转换和分发系统,专为日志管理和日志聚合设计。7.8.0...
压缩包中的“项目源码”可能包含了使用ELK Stack搭建的具体应用示例或模板,这些源码可能涉及到配置文件、脚本、代码片段等,可以帮助用户更好地理解和实践ELK Stack的使用,例如日志收集的配置、Elasticsearch索引...
- **插件安装**:根据需求安装相应的插件,如Kibana、Logstash、Beats等,以构建完整的ELK(Elasticsearch, Logstash, Kibana)堆栈。 - **数据导入**:使用`elasticsearch-jdbc`或其他工具将数据导入Elasticsearch...
logstash 内容:收集所有来源,索引并将其推送到elasticsearch 2 /储存安装: elasticsearch 什么:存储所有数据并为其编制索引3 /接口安装: kibana 内容:为分析报告提供Web界面安装目标路径是通过软件包管理工具...
在"elasticsearch-jdk11-ik.zip"压缩包内,可能包含了Elasticsearch的配置文件、IK分词器的安装脚本或配置示例、Logstash的配置文件模板等,这些都是实现上述功能的关键组件。用户需要根据自身需求调整这些配置,...
这包括安装Elasticsearch、创建索引模板、设置映射(mapping),以确定字段类型和分析器等。对于文本内容,可能会使用`standard`或`ik`分词分析器,以便正确地分词和建立倒排索引。 然后是**数据写入Elasticsearch*...
使用IK Analysis时,你需要在Elasticsearch的索引模板或索引设置中配置分词器。例如,创建一个新的索引并指定IK分词器的配置: ```json PUT my_index { "settings": { "analysis": { "analyzer": { "my_...
41 2.2.2 获取映射 44 2.2.3 获取字段映射 45 2.2.4 判断类型是否存在 46 2.3 索引别名 46 2.4 索引配置 51 2.4.1 更新索引配置 51 2.4.2 获取配置 52 2.4.3 索引分析 52 2.4.4 索引模板 54 2.4.5 复制配置 55 2.4.6...
**Elasticsearch** 是一个流行的开源全文搜索引擎,广泛应用于大数据分析、日志分析、...通过深入学习本手册,读者将能全面掌握Elasticsearch的原理、操作和最佳实践,为在实际项目中运用Elasticsearch打下坚实基础。
5. **配置文件**:Elasticsearch的配置主要在`elasticsearch.yml`文件中进行,包括设置节点名称、网络地址、内存分配等。务必根据实际需求进行调整,以确保最佳性能。 6. **集群设置**:如果你想让多个节点组成一个...
- **Elasticsearch**:解压下载的es-6.6.1压缩包到指定目录,修改`config/elasticsearch.yml`配置文件,如设置集群名称、节点角色等。接着,通过`bin/elasticsearch`脚本来启动服务。 - **IK分词器**:将IK分词器...
本资料通过实际案例,详细阐述了如何使用Logstash收集和处理数据,如何利用Elasticsearch进行数据存储和搜索,以及如何借助Kibana实现数据可视化和分析。此外,还涵盖了ELK堆栈在生产环境中的部署考虑、监控、故障...
"foodie-dev-search" 可能是一个专门为食品开发领域定制的 Elasticsearch 集群配置或者索引模板。这可能包含了针对食品相关的元数据、属性和搜索需求进行优化的索引设置,如分词器的选择、分析器的配置、映射字段的...
4. **输出插件**:如`elasticsearch`插件可以把数据发送到Elasticsearch进行索引和搜索,`stdout`插件则会将数据打印到控制台。 5. **日志事件生命周期**:Logstash按照顺序处理输入、过滤和输出,每个事件在系统中...
- 分布式:Elasticsearch 设计为分布式系统,能够自动进行数据分片和复制,确保高可用性和容错性。 - 实时:Elasticsearch 支持实时索引和搜索,一旦数据被索引,即可立即进行搜索。 - RESTful API:使用 JSON ...
- 设计合理的索引模板,优化分片策略。 - 定期进行健康检查,及时处理警告和错误。 总之,Elasticsearch是一个强大的搜索和分析引擎,通过理解其核心概念、配置方法、API使用以及分布式特性,可以充分利用其功能...
8. **索引管理**:Elasticsearch支持创建、删除、更新索引,以及索引模板,方便批量操作。通过JSON文档形式的数据,可以轻松实现全文搜索、聚合查询等功能。 9. **数据导入导出**:使用`bin/elasticsearch-...