我是elasticsearch的新手,并且拥有巨大的数据( mysql表中超过16k的大行)。我需要将此数据推送到elasticsearch中,但在将其编入索引时遇到问题。有没有办法让索引数据更快?如何处理海量数据?
发布于 2014-05-30 04:25:06
在Bulk API上扩展
您将向/_bulk发出POST请求
您的有效负载将遵循以下格式,其中\n是换行符。
action_and_meta_data\n
optional_source\n
action_and_meta_data\n
optional_source\n
...确保您的json不是打印得很好的
可用的操作有index、create、update和delete。
大容量加载示例
回答您的问题,如果您只想将数据大容量加载到您的索引中。
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "field1" : "value3" }第一行包含操作和元数据。在本例中,我们调用create。我们将把一个type1类型的文档插入到名为test的索引中,并手动分配一个id为3 (而不是elasticsearch自动生成的id)。
第二行包含映射中的所有字段,在本例中只是值为value3的field1。
您只需连接想要插入到索引中的任意数量的内容。
发布于 2013-08-19 20:24:24
这可能是一个老帖子,但我想我无论如何都会对任何正在寻找解决这个问题的解决方案的人发表评论。用于弹性搜索的JDBC river插件对于从大量受支持的数据库中导入数据非常有用。
Link to JDBC' River source here..使用Git Bash的curl命令I将放入以下配置文档,以实现ES实例和MySQL实例之间的通信-
curl -XPUT 'localhost:9200/_river/uber/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"strategy" : "simple",
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/elastic",
"user" : "root",
"password" : "root",
"sql" : "select * from tbl_indexed",
"poll" : "24h",
"max_retries": 3,
"max_retries_wait" : "10s"
},
"index": {
"index": "uber",
"type" : "uber",
"bulk_size" : 100
}
}'确保您的mysql-connector-java-VERSION-bin位于river jdbc插件目录中,其中包含jdbc-river所需的JAR文件。
发布于 2012-05-24 16:44:13
试用批量api
http://www.elasticsearch.org/guide/reference/api/bulk.html
https://stackoverflow.com/questions/10681203
复制相似问题