我计划使用一个ElasticSearch索引来存储一个拥有290万条记录的巨大城市数据库,并在我的laravel应用程序中将其用作搜索引擎。问题是:我都有mysql数据库和csv文件的城市。文件大小约为300mb。如何以最快的速度将其导入索引?
2eafrhcq1#
我用logstash解决了这个问题。我的导入脚本如下:
input { file { path => ["/home/user/location_cities.txt"] type => "city" start_position => "beginning" } } filter { csv { columns => ["region", "subregion", "ufi", "uni", "dsg", "cc_fips", "cc_iso", "full_name", "full_name_nd", "sort_name", "adm1", "adm1_full_name", "adm2", "adm2_full_name"] separator => " " remove_field => [ "host", "message", "path" ] } } output { elasticsearch { action => "index" protocol => "http" host => "127.0.0.1" port => "9200" index => "location" workers => 4 } }
此脚本将不带分隔符的制表符分隔文件导入名为 location 带类型 city .要运行脚本,需要运行 bin/logstash -f import_script_file 在您安装/提取日志的文件夹中。
location
city
bin/logstash -f import_script_file
yhived7q2#
为了提高效率,您需要使用bulkapi并试验数据的块大小。链接到elasticsearch有关批量文档索引(导入)的文档如果您使用python,请看https://pypi.python.org/pypi/esimport/0.1.9
2条答案
按热度按时间2eafrhcq1#
我用logstash解决了这个问题。
我的导入脚本如下:
此脚本将不带分隔符的制表符分隔文件导入名为
location
带类型city
.要运行脚本,需要运行
bin/logstash -f import_script_file
在您安装/提取日志的文件夹中。yhived7q2#
为了提高效率,您需要使用bulkapi并试验数据的块大小。
链接到elasticsearch有关批量文档索引(导入)的文档
如果您使用python,请看https://pypi.python.org/pypi/esimport/0.1.9