Crowiで検索を有効化する(CentOS 6.8)


Crowiで検索を有効化する

Crowiシリーズの3本目である。

  1. Crowiをセットアップする(CentOS 6.8)
  2. CrowiでGoogleAppsでのログインを有効化する

version1.5.0から実装された検索機能を使用する。

環境

  • CentOS 6.8
  • Java 1.7 (1.6で動かそうとして失敗した)
  • Crowi v1.5.0

Elasticsearchを導入する

検索機能を使用するにはElasticserachが必要だそうなのでこれを導入する。

レポジトリの設定

  1. yumレポジトリの設定
    $ rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

  2. レポジトリの設定を書き換える

/etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
  • イントール
    $ yum install elasticsearch

  • 日本語対応するためにanalysis-kuromojiをいれる ここでつまる

$ cd /usr/share/elasticsearch
$ bin/plugin install analysis-kuromoji
  • javaが1.7以上じゃないと動かないらしい
    $ yum install java-1.7.0-openjdk

  • もっかいkuromojiをいれる
    $ bin/plugin install analysis-kuromoji

  • Elasticsearchを再起動
    $ /etc/init.d/elasticsearch start

  • 自動起動を設定する
    $ chkconfig --add elasticsearch

  • 設定を変更する
    /etc/elasticsearch/elasticsearch.ymlを書き換える

/etc/elasticsearch/elasticsearch.yml
 # network.host: 192.168.0.1
network.host: YOURIP
  • 書き換えたらリスタートを忘れずに
    $ /etc/init.d/elasticsearch restart

  • Elasticsearchとkuromojiの動作確認をする
    Elasticsearch

Elasticsearch
$ curl 'http://YOURIP:9200/'      
{
  "name" : "Gosamyr",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "RT6I6Z3JSliJ_UZdSkvcnQ",
  "version" : {
    "number" : "2.4.1",
    "build_hash" : "c67dc32e24162035d18d6fe1e952c4cbcbe79d16",
    "build_timestamp" : "2016-09-27T18:57:55Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.2"
  },
  "tagline" : "You Know, for Search"
}

kuromoji

kuromoji
 $ curl -X GET 'http://YOURIP:9200/_nodes/plugins?pretty'
{
  "cluster_name" : "elasticsearch",
  "nodes" : {
    "q7PccHeCTLGVDhJ5Pd34Gg" : {
      "name" : "Gosamyr",
      "transport_address" : "160.16.125.226:9300",
      "host" : "160.16.125.226",
      "ip" : "160.16.125.226",
      "version" : "2.4.1",
      "build" : "c67dc32",
      "http_address" : "160.16.125.226:9200",
      "plugins" : [ {
        "name" : "analysis-kuromoji",
        "version" : "2.4.1",
        "description" : "The Japanese (kuromoji) Analysis plugin integrates Lucene kuromoji analysis module into elasticsearch.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.analysis.kuromoji.AnalysisKuromojiPlugin",
        "isolated" : true,
        "site" : false
      } ],
      "modules" : [ {
        "name" : "lang-expression",
        "version" : "2.4.1",
        "description" : "Lucene expressions integration for Elasticsearch",
        "jvm" : true,
        "classname" : "org.elasticsearch.script.expression.ExpressionPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "lang-groovy",
        "version" : "2.4.1",
        "description" : "Groovy scripting integration for Elasticsearch",
        "jvm" : true,
        "classname" : "org.elasticsearch.script.groovy.GroovyPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "reindex",
        "version" : "2.4.1",
        "description" : "_reindex and _update_by_query APIs",
        "jvm" : true,
        "classname" : "org.elasticsearch.index.reindex.ReindexPlugin",
        "isolated" : true,
        "site" : false
      } ]
    }
  }
}
  • crowi側で読ませる
/etc/sysconfig/crowi
ELASTICSEARCH_URI=http://YOURIP:9200

Crowi側の設定

秒でおわる
1. forever start app.js
2. CrowiのGUIから"管理" -> "検索管理" -> "Build Now"

完成

参考

Elasticsearch を yumでインストール (CentOS)
Crowi v1.5.0 にアップデートしてみた