我得到了一个15 gb的.txt文件,格式如下:
{
"_score": 1.0,
"_index": "newsvit",
"_source": {
"content": " \u0641\u0647\u06cc\u0645\u0647 \u062d\u0633\u0646\u200c\u0645\u06cc\u0631\u06cc: ",
"title": "\u06a9\u0627\u0631\u0647\u0627\u06cc \u0642\u0627\u0644\u06cc\u0628\u0627\u0641 ",
"lead": "\u062c\u0627\u0645\u0639\u0647 > \u0634\u0647\u0631\u06cc -
\u0645\u06cc\u0632\u06af\u0631\u062f\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 .",
"agency": "13",
"date_created": 1494518193,
"url": "http://www.khabaronline.ir/(X(1)S(bud4wg3ebzbxv51mj45iwjtp))/detail/663749/society/urban",
"image": "uploads/2017/05/11/1589793661.jpg",
"category": "15"
},
"_type": "news",
"_id": "2981643"
}
{
"_score": 1.0,
"_index": "newsvit",
"_source": {
"content": "\u0645/\u0630",
"title": "\u0645\u0639\u0646\u0648\u06cc\u062a \u062f\u0631 \u0639\u0635\u0631 ",
"lead": "\u0645\u062f\u06cc\u0631 \u0645\u0624\u0633\u0633\u0647 \u0639\u0644\u0645\u06cc \u0648 \u067e\u0698\u0648\u0647\u0634\u06cc \u0627\u0628\u0646\u200c\u0633\u06cc\u0646\u0627 \u062f\u0631 .",
"agency": "1",
"date_created": 1494521817,
"url": "http://www.farsnews.com/13960221001386",
"image": "uploads/2017/05/11/1713799235.jpg",
"category": "20"
},
"_type": "news",
"_id": "2981951"
}
....
我想把它导入elasticsearch。我尝试过bulkapi,但由于它只接受特定样式的json,所以我无法将整个15gbfle转换为bulk格式。我也试过用logstash但是后来 content
不会被搜索和查询。
将此文件导入elasticsearch最有效的方法是什么?
1条答案
按热度按时间dsekswqp1#
首先,这似乎是从名为
news
. 因此,如果您仍然有权/能够访问该索引,就可以从远程集群重新索引到您自己的集群。话虽如此,我还是建议编写一个脚本(以python为例,也可以是bash)将其转换为json。你的文件已经和json差不多了——只是缺少了 Package 括号
[{}, {}, {}]
以及分隔各个对象的逗号。你可以预先准备好
[
和附加]
到任何文本文件都很容易。另外,还有一些文本编辑器可以奇迹般地打开如此大的文件——例如,对于mac来说,就是hexfeind。可能还有一个windows的替代品。一旦你完成了,你就可以编写一个脚本,用正则表达式分割文本文件,比如说
/^\}$/gm
--这里可以测试。一旦你把它分开,你就可以用逗号字符把它连接起来,
和另存为
.json
然后使用bulk@data binary选项或者使用bulkdslapi——同样是python中的示例
python加载程序脚本入门: