Elasticsearch+Kettle spoon:实现索引自动按月创建,数据插入到指定路由

背景

    随着时间的推进,es里面的索引文件越来越大。要想保住系统的效率,就必须要分索引、分路由。那么问题来了,目前项目上采用的是Spoon7.1进行数据更新,这样就存在以下问题:

    1、利用spoon连es时,索引的名称不支持动态变量?

    2、抽取数据时,对es里不存在的索引,spoon会自动生成,但不能生成我想要的mapping?

    3、抽取到es,spoon不能指定文档插入的路由?

分析

    针对第二点:可以利用es的template功能,设定模板,利用spoon往es里抽取时,不存在的索引会自动生成。生成索引的时候会按照我们设置的模板进行生成,包括mapping。

    针对第一点:利用现有的功能,没有找到怎么实现。

    针对第三点:对于es2.0之前的版本,可以设置按照文档的某个字段进行自动路由,但之后的版本不支持。

    结论:要么不用工具,要么改造工具。比较了以下,后者工作量较小一点,确定这个为最终目标。

插件改造

    1、kettle spoon整个项目都是开源的,可以去github上下载你想改造的版本。然后就是漫长的本地部署,一定要注意下载的源码版本号要和安装版的版本号一致。这个过程可以参考:https://blog.csdn.net/tj_java/article/details/78765158

    2、分析plugins/elasticsearch-bulk-insert-plugin下的源代码,如果改造的话,这里会涉及到改造

ElasticSearchBulkDialog.java和ElasticSearchBulk.java文件。具体细节就不详述了。

    3、修改后编译整个目录,然后将这两个文件的编译文件替换到elasticsearch-bulk-insert-plugin-7.0.0.0-25.jar下

    4、改造的结果如下:

        Elasticsearch+Kettle spoon:实现索引自动按月创建,数据插入到指定路由_第1张图片

工程实施(简单示例)

1、创建索引模板template_user,创建userindex开头的索引都会采取以下配置。

请求地址:localhost:9200/_template/template_user
请求类型:put
请求参数:
{
    "template" : "userindex*",
    "settings" : {
        "number_of_shards" : 1,
	"number_of_replicas": 0
    },
    "mappings" : {  
        "usertype": {
		  "properties": {
			"date": {
			  "format": "strict_date_optional_time||epoch_millis",
			  "type": "date"
			},
			"sfzh": {
			  "index": "not_analyzed",
			  "type": "string"
			},
			"ryxm": {
			  "index": "not_analyzed",
			  "type": "string"
			},
			"type": {
			  "type": "string"
			}
		  }
		}
    }  
}

2、创建spoon转换,每个月的数据都存放在“userindex+年月”索引,user路由下。

       Elasticsearch+Kettle spoon:实现索引自动按月创建,数据插入到指定路由_第2张图片

3、建立job,每隔10s抽取一次数据

    Elasticsearch+Kettle spoon:实现索引自动按月创建,数据插入到指定路由_第3张图片

4、点击执行。修改计算机的时间,调整月份,会发现会自动创建索引,数据也全部在user路由下面。如图:

Elasticsearch+Kettle spoon:实现索引自动按月创建,数据插入到指定路由_第4张图片     Elasticsearch+Kettle spoon:实现索引自动按月创建,数据插入到指定路由_第5张图片

备注

    1、es版本:2.3.2      spoon版本:7.1 ,下载地址请点击此处。

    2、es插件改造后的jar包下载地址。链接:https://pan.baidu.com/s/1Sgiue867Rxro1cFAdMWEtQ 密码:ejnj

    3、想看我其他关于es总结的,可以查看我的其他文章。如果喜欢的,记得点赞。QQ:614774796,欢迎相互交流!



    

你可能感兴趣的:(Elasticsearch)