我是弹性搜索的新手。到目前为止,我已设法创建索引,映射和索引文档。
使用PHP我可以从mysql添加文档。通过循环遍历所有mysql行,我逐个添加文档。
foreach($items as $item){
$ch = curl_init();
$json_request = '{
"title": "'.$item['title'].'",
"description": "'.$item['description'].'",
"price": "'.$item['price'].'"
}';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PORT, 9200);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_request);
$result = curl_exec($ch);
curl_close($ch);
}
适用于少量数据。但是,当我将它用于50万件商品时,需要花费数天时间编制索引。
有些人可以告诉我如何做得更好吗? 感谢。
答案 0 :(得分:1)
我要做的两件事:
首先,如果你想让Elasticsearch不断更新 来自mysql的数据我来看看Elasticsearch MySQL 河:https://github.com/jprante/elasticsearch-river-jdbc
其次,我要查看Elasticsearch Bulk API: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html 这将允许您进行一次调用以插入大量的 单个API调用的文档,效率更高 加载大量文件。