30代SEのメモ

主に技術系のメモを忘れないように記していこうと思います。

Elasticsearch6.3に日本語analyzerをインストール

前回まででelasticとkibanaのインストールは終わったので、analyzerを入れていきます。 入れるのは以下の3つ

  • kuromoji  基本的な日本語の形態素解析
  • analysis-icu 国際的に規約されてる文字の解析器
  • kuromoji-neologd kuromojiより流行りの固有名詞の辞書がとかが充実してる形態素解析

個人的な所感としては上記の3つを入れておけば充分かと思ってます。

Analyzerの説明をざっくりと。
elasticsearchはデータを登録・検索するときに以下の処理をAnalyzerを通して順番に行います。

  1. char filterによる文字列の正規化
  2. tokenizerによる文字列の形態素分割
  3. token filterによる分割された単語に対する処理

最終的に分割された単語に対して、検索ワードと、入稿されてるデータが一致するかしないかでelasticsearchは検索を行っています。
この辺の設定はindexのフィールド単位で行えるんですが、詳しい説明は割愛。

とりあえずanalyzerを以下のコマンドでインストール。

$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-kuromoji-neologd:6.3.1

※neologd:6.3.0だとエラーになるようです。

Remove the intermediate "elasticsearch" directory within the plugin zip · Issue #9 · codelibs/elasticsearch-analysis-kuromoji-neologd · GitHub

  • elasticsearch再起動
 $ sudo -i service elasticsearch start
  • 確認
 $ curl -XGET localhost:9200/_nodes/plugins?pretty
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      "plugins" : [
        {
          "name" : "analysis-icu",
          "version" : "6.3.2",
          "elasticsearch_version" : "6.3.2",
          "java_version" : "1.8",
          "description" : "The ICU Analysis plugin integrates Lucene ICU module into elasticsearch, adding ICU relates anal
ysis components.",
          "classname" : "org.elasticsear00 1ch.plugin.analysis.icu.AnalysisICUPlugin",
          "extended_plugins" : [ ],
          "has_native_controller" : false
        },
        {
          "name" : "analysis-kuromoji",
          "version" : "6.3.2",
          "elasticsearch_version" : "6.3.2",
          "java_version" : "1.8",
          "description" : "The Japanese (kuromoji) Analysis plugin integrates Lucene kuromoji analysis module into elastics
earch.",
          "classname" : "org.elasticsearch.plugin.analysis.kuromoji.AnalysisKuromojiPlugin",
          "extended_plugins" : [ ],
:2481  100 12481    0     0   580k      0 --:--:-- --:--:-- --:--:--  580k
          "has_native_controller" : false
        },
        {
          "name" : "analysis-kuromoji-neologd",
          "version" : "6.3.1",
          "elasticsearch_version" : "6.3.2",
          "java_version" : "1.8",
          "description" : "Kuromoji with Neologd analysis support",
          "classname" : "org.codelibs.elasticsearch.kuromoji.neologd.KuromojiNeologdPlugin",
          "extended_plugins" : [ ],
          "has_native_controller" : false
        }
      ],

ちゃんとインストールできてますね。 次は実際にmappingを定義して、データを登録してみます。