`
qindongliang1922
  • 浏览: 2172626 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117135
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125459
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59570
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71046
社区版块
存档分类
最新评论

如何为logstash+elasticsearch配置索引模板?

    博客分类:
  • ELK
阅读更多

在使用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),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园



4
6
分享到:
评论

相关推荐

    springboot - 2.7.3版本 - (五)整合Elasticsearch+Logstash+Kibana(ELK)

    3. **安装Logstash**:在服务器上部署Logstash,配置输入插件(如beats或syslog)以接收Spring Boot应用的日志,以及输出插件(如elasticsearch)以将日志转发至Elasticsearch。 4. **配置Logstash配置文件**:编写...

    logstash-template模板:logstash.json

    在Logstash中,模板(Template)扮演着重要的角色,它定义了Elasticsearch如何存储和索引由Logstash发送的数据。`logstash.json` 文件就是这样一个预定义的模板,用于规定数据的结构和字段类型,确保数据在导入时...

    ElasticSearch + Logstash 自动同步mysql数据

    为了实现Logstash从MySQL同步数据到Elasticsearch,我们需要编写Logstash配置文件,包含输入、过滤和输出三部分。 1. **输入插件(Input Plugin)**:使用`jdbc`插件连接到MySQL数据库,定期执行SQL查询获取数据。 ...

    elasticsearch-7.8.0-x86_64.rpm + kibana-7.8.0-x86_64.rpm + logstash-7.8.0.rpm

    Kibana 还提供了一个强大的搜索界面,名为 Discover,允许用户查询和过滤数据,以及管理索引模板和设置监视警报。 3. **Logstash**:Logstash 是一个数据收集、转换和分发系统,专为日志管理和日志聚合设计。7.8.0...

    资料包-最全ELK+项目【Elasticsearch Logstash Kibana】

    压缩包中的“项目源码”可能包含了使用ELK Stack搭建的具体应用示例或模板,这些源码可能涉及到配置文件、脚本、代码片段等,可以帮助用户更好地理解和实践ELK Stack的使用,例如日志收集的配置、Elasticsearch索引...

    elasticsearch常用版本

    - **插件安装**:根据需求安装相应的插件,如Kibana、Logstash、Beats等,以构建完整的ELK(Elasticsearch, Logstash, Kibana)堆栈。 - **数据导入**:使用`elasticsearch-jdbc`或其他工具将数据导入Elasticsearch...

    LogStash-conf:配置LogStash(和Filebeat)以进行Analytics处理

    logstash 内容:收集所有来源,索引并将其推送到elasticsearch 2 /储存安装: elasticsearch 什么:存储所有数据并为其编制索引3 /接口安装: kibana 内容:为分析报告提供Web界面安装目标路径是通过软件包管理工具...

    elasticsearch-jdk11-ik.zip

    在"elasticsearch-jdk11-ik.zip"压缩包内,可能包含了Elasticsearch的配置文件、IK分词器的安装脚本或配置示例、Logstash的配置文件模板等,这些都是实现上述功能的关键组件。用户需要根据自身需求调整这些配置,...

    Elasticsearch Demo 读取word内容写入到Es上并展示在WebFrom页面上

    这包括安装Elasticsearch、创建索引模板、设置映射(mapping),以确定字段类型和分析器等。对于文本内容,可能会使用`standard`或`ik`分词分析器,以便正确地分词和建立倒排索引。 然后是**数据写入Elasticsearch*...

    Elasticsearch参考手册中文版高清

    **Elasticsearch** 是一个流行的开源全文搜索引擎,广泛应用于大数据分析、日志分析、...通过深入学习本手册,读者将能全面掌握Elasticsearch的原理、操作和最佳实践,为在实际项目中运用Elasticsearch打下坚实基础。

    elasticsearch-analysis-ik-7.12.0.zip

    使用IK Analysis时,你需要在Elasticsearch的索引模板或索引设置中配置分词器。例如,创建一个新的索引并指定IK分词器的配置: ```json PUT my_index { "settings": { "analysis": { "analyzer": { "my_...

    Elasticsearch 技术解析与实战.zip

    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相关安装包

    5. **配置文件**:Elasticsearch的配置主要在`elasticsearch.yml`文件中进行,包括设置节点名称、网络地址、内存分配等。务必根据实际需求进行调整,以确保最佳性能。 6. **集群设置**:如果你想让多个节点组成一个...

    Linux的elasticsearch+kibana+ik包[v6.6.1]

    - **Elasticsearch**:解压下载的es-6.6.1压缩包到指定目录,修改`config/elasticsearch.yml`配置文件,如设置集群名称、节点角色等。接着,通过`bin/elasticsearch`脚本来启动服务。 - **IK分词器**:将IK分词器...

    应用ELK堆栈-利用ElasticSearch、Logstash和Kibana的集体能力实现数据洞察和业务指标(英文版)

    本资料通过实际案例,详细阐述了如何使用Logstash收集和处理数据,如何利用Elasticsearch进行数据存储和搜索,以及如何借助Kibana实现数据可视化和分析。此外,还涵盖了ELK堆栈在生产环境中的部署考虑、监控、故障...

    elasticsearch.rar

    "foodie-dev-search" 可能是一个专门为食品开发领域定制的 Elasticsearch 集群配置或者索引模板。这可能包含了针对食品相关的元数据、属性和搜索需求进行优化的索引设置,如分词器的选择、分析器的配置、映射字段的...

    elasticsearch-2.3.3

    - 分布式:Elasticsearch 设计为分布式系统,能够自动进行数据分片和复制,确保高可用性和容错性。 - 实时:Elasticsearch 支持实时索引和搜索,一旦数据被索引,即可立即进行搜索。 - RESTful API:使用 JSON ...

    最新版windows logstash-7.10.1-windows-x86_64.zip

    4. **输出插件**:如`elasticsearch`插件可以把数据发送到Elasticsearch进行索引和搜索,`stdout`插件则会将数据打印到控制台。 5. **日志事件生命周期**:Logstash按照顺序处理输入、过滤和输出,每个事件在系统中...

    elasticsearch-7.6.1-linux-x86_64.tar.gz

    Elasticsearch拥有丰富的社区插件,如Kibana、Logstash等,它们可以帮助用户实现数据可视化、日志收集等功能。7.6.1版本可能与这些插件有更好的兼容性。 9. **数据恢复与备份** 系统崩溃或硬件故障时,数据恢复至...

    ES+ik+kibana 搭建本地ES

    搭建本地的ES( Elasticsearch )环境通常涉及到三个关键组件:Elasticsearch本身、IK分词器以及Kibana。本文将详细介绍如何在本地计算机上安装和配置这三个组件,以实现一个功能完备的日志分析和搜索解决方案。 **...

Global site tag (gtag.js) - Google Analytics