以低意识的感觉将维基百科的数据导入Elasticsearch
这篇文章已经过时了,现在已经不再适用于现代!有人发布了新的方法,请参考那边的内容!
这是将维基百科数据快速导入Elasticsearch的步骤。
中文:下载维基百科文章数据
通过从 http://dumps.wikimedia.org/backup-index.html 跟踪链接,可以下载一个名为 pages-articles.xml.bz2 的文件。
如果是日语版本,则为 jawiki。
在这里我们使用jawiki的20150602的数据。
$ wget http://dumps.wikimedia.org/jawiki/20150602/jawiki-20150602-pages-articles.xml.bz2
在下载完成之前可能要花一些时间,所以在此期间可以考虑同时安装elasticsearch。
安装 Elasticsearch
身份、实质、本质、核心、本源
$ brew install elasticsearch
在这里,由于使用的是Mac环境,所以我选择用Homebrew进行安装。
Elasticsearch-head:弹性搜索管理界面
elasticsearch 的网站前端。安装后,可以通过浏览器访问 http://localhost:9200/_plugin/head/ 进行各种操作。
$ /usr/local/Cellar/elasticsearch/*/libexec/bin/plugin install mobz/elasticsearch-head
将stream2es进行语义转换。
将stream2es翻译成中文。
https://github.com/elastic/stream2es 是一个能够简化将数据流动到elasticsearch的工具。
$ curl -O download.elasticsearch.org/stream2es/stream2es
$ chmod +x stream2es
$ mv stream2es /usr/local/bin/
创建索引
因为我想要使用n-gram进行搜索,所以在这里定义了分析器和映射。我将其设置为1-3克拉姆。
curl -XPUT 'localhost:9200/wiki' -d '{
"settings": {
"analysis": {
"analyzer": {
"ngram": {
"filter": [
"cjk_width",
"lowercase"
],
"char_filter": [
"html_strip"
],
"type": "custom",
"tokenizer": "ngram"
}
},
"tokenizer": {
"ngram": {
"token_chars": [
"letter",
"digit"
],
"min_gram": "1",
"type": "nGram",
"max_gram": "3"
}
}
}
},
"mappings": {
"page": {
"properties": {
"redirect": {
"type": "boolean"
},
"special": {
"type": "boolean"
},
"disambiguation": {
"type": "boolean"
},
"link": {
"type": "string"
},
"stub": {
"type": "boolean"
},
"text": {
"analyzer": "ngram",
"type": "string"
},
"category": {
"type": "string"
},
"title": {
"analyzer": "ngram",
"type": "string"
}
}
}
}
}'
我试图传输数据
随便试试5个例子。 shì shi wǔ gè .)
$ stream2es wiki --max-docs 5 --source jawiki-20150602-pages-articles.xml.bz2
只需在浏览器中打开 http://localhost:9200/_plugin/head/ 并按以下方式操作即可。
如果显示为“未分配”。
$ curl -XPUT localhost:9200/_settings -d'{"number_of_replicas":0}'
重新开始之后继续做。