以低意识的感觉将维基百科的数据导入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/ 并按以下方式操作即可。

Screen Shot 2015-08-04 at 17.59.00.png

如果显示为“未分配”。


$ curl -XPUT localhost:9200/_settings -d'{"number_of_replicas":0}'

重新开始之后继续做。

日本語Wikipediaの全記事をElasticsearchにいれた
广告
将在 10 秒后关闭
bannerAds