注意:如果es中mappring是自己手动创建的那就没问题了,如果es中mappring自己不创建,需要es根据导入的数据自动创建,那么要检查要导入的数据是不是包含了所有字段了,如果这些数据中有一个字段,一个值也没有,那么es在mappring中不会创建该字段。如果出现这个情况,建议自己手动插入一条每个字段都有值的测试数据,然后在es中再删掉该条测试数据。
1、手动全量导入数据:
(1)创建*.conf格式配置文件:
在logstash安装目录下config文件夹中,创建一个test.conf文件,然后用notepad++打开,编写input、output相关内容即可:
注意:output中输出到es时,选择document_id为mysql数据中对应主键ID值,这样方便以后对es数据实现更新效果。
(2)修改*.conf文件格式:
在windows中创建编辑的test.conf文件格式为windows,服务器为linux,因此需要修改test.conf格式为linux的格式:
(3)部署*.conf文件到服务器:
将创建好的test.conf文件上传到服务器的logstash安装目录下config文件夹中,一般配置型文件都是放到此位置的。
(4)后台运行*.conf文件迁移数据:
进入服务端logstash安装根目录的bin中,然后执行命令:
./logstash -f ../config/test.conf &
(5)查看es中导入的数据:
Logstash命令执行完毕后或者执行中,就可以通过es-head或kibana链接到es查看es中的数据了。
2、创建索引别名:
对es中使用的每一个索引都创建对应的一个索引别名,java连接es访问的时候也就是访问别名了。这样以后如果索引需要修改,就可以先使用旧索引,手动创建新索引,并将就索引中的数据迁移到新索引,等待新索引创建完毕并且数据导入完毕,没有问题的情况下,只需要删除别名对应的旧索引映射关系,同时创建别名与新索引的映射关系。这样可以做到修改es索引平滑过渡。
修改索引别名的dsl语言命令:
http://192.168.99.164:9200/_aliases POST
{
"actions": [
{
"add": {
"index": "t_b_company_info_list",
"alias": "t_b_company_info"
}
}
]
}
查看索引是否有别名的dsl语言命令:
http://192.168.99.164:9200/t_b_company_info_list/_alias/* GET