如果elasticsearch-sudachi无法加载sudachi.json或system_full.dic,可以采取以下对策

在安装elasticsearch-sudachi并创建索引时,按照以下方式进行指定:

curl -X PUT 'localhost:9200/shop' -H 'Content-Type: application/json' -d'
{
    "settings": {
        "index": {
            "analysis": {
                "tokenizer": {
                    "sudachi_tokenizer": {
                        "type": "sudachi_tokenizer",
                        "mode": "search",
                "discard_punctuation": true,
                        "resources_path": "/****/elasticsearch-5.6.1/sudachi",
                        "settings_path": "/****/elasticsearch-5.6.1/sudachi/sudachi.json"
                    }
                },
                "analyzer": {
                    "sudachi_analyzer": {
                        "filter": [
                        ],
                        "tokenizer": "sudachi_tokenizer",
                        "type": "custom"
                    }
                }
            }
        }
    }
}'

由于访问权限的问题,可能会导致无法正常运行。

{
  "error": {
    "root_cause": [
      {
        "type": "access_control_exception",
        "reason": "access denied (\"java.io.FilePermission\" \"/****/elasticsearch-5.6.1/sudachi/sudachi.json\" \"read\")"
      }
    ],
    "type": "access_control_exception",
    "reason": "access denied (\"java.io.FilePermission\" \"/****/elasticsearch-5.6.1/sudachi/sudachi.json\" \"read\")"
  },
  "status": 500
}

在这种情况下,将sudachi.json和system_full.dic这两个文件放在config文件夹的根目录下并执行,就可以成功创建索引并进行解析。

发生了一些事情(2018.4.17 更新)

如果是从tar文件安装Elasticsearch时,将会发生这种情况,而从包里安装则不会发生。

有用的文章參考

500错误:无法读取同义词文件

bannerAds