[Crowi] Elasticsearch5から6にバージョンアップ

Crowiで使ってるElasticsearchのバージョンを6.2.3にした際のメモ
(全然公式じゃないしやる人もいないと思いますが

環境

Crowi1.6.3
Elasticsearch5→6

エラー画面

そのままBuild nowしてもダメでした。

そもそもindexが作られていないみたいだったので、mappings.jsonを修正して解決としました。

mappings.jsonの修正

resource/search/mappings.json を修正します。
このファイルでindexを作成してるぽいのですが、
stringやinclude_in_allなどがElasticsearch6では許可されていないので以下のように修正しました。

{
  "settings": {
    "analysis": {
      "filter": {
        "english_stop": {
          "type":       "stop",
          "stopwords":  "_english_"
        },
        "english_stemmer": {
          "type":       "stemmer",
          "language":   "english"
        },
        "english_possessive_stemmer": {
          "type":       "stemmer",
          "language":   "possessive_english"
        }
      },
      "analyzer": {
        "autocomplete": {
          "tokenizer":  "keyword",
          "filter": [
            "lowercase",
            "nGram"
          ]
        },
        "english": {
          "tokenizer":  "standard",
          "filter": [
            "english_possessive_stemmer",
            "lowercase",
            "english_stop",
            "english_stemmer"
          ]
        }
      }
    }
  },
  "mappings": {
    "pages": {
      "properties" : {
        "path": {
          "type": "text",
          "copy_to": ["path_raw", "path_ja", "path_en"]
        },
        "path_raw": {
          "type": "text",
          "analyzer": "standard"
        },
        "path_ja": {
          "type": "text",
          "analyzer": "kuromoji"
        },
        "path_en": {
          "type": "text",
          "analyzer": "english"
        },
        "body": {
          "type": "text",
          "copy_to": ["body_raw", "body_ja", "body_en"]
        },
        "body_raw": {
          "type": "text",
          "analyzer": "standard"
        },
        "body_ja": {
          "type": "text",
          "analyzer": "kuromoji"
        },
        "body_en": {
          "type": "text",
          "analyzer": "english"
        },
        "username": {
          "type": "text"
        },
        "comment_count": {
          "type": "integer"
        },
        "bookmark_count": {
          "type": "integer"
        },
        "like_count": {
          "type": "integer"
        },
        "created_at": {
          "type": "date",
          "format": "dateOptionalTime"
        },
        "updated_at": {
          "type": "date",
          "format": "dateOptionalTime"
        }
      }
    }
  }
}

再起動

ElasticsearchのURIなどは環境に合わせる感じで

PASSWORD_SEED=hoge123 MONGO_URI=mongodb://localhost:27017 ELASTICSEARCH_URI=http://localhost:9200 npm start

管理画面からBuild Nowして検索試すと無事検索できました

おしまい

久しぶりのCrowi記事でした(まだ開発続いてるのかな?

サーバサイドエンジニア。オムライスが好物

シェアする

  • このエントリーをはてなブックマークに追加

フォローする