在Oracle Cloud Infrastructure环境中安装Elasticsearch和Sudachi插件

这是安装了Elasticsearch和Kibana以及Sudachi作为形态分析引擎的日志。
参考如下。

    • Elasticsearch で Sudachi 使う

 

    • Elasticsearchのための新しい形態素解析器 「Sudachi」

 

    Install Elasticsearch with RPM

由于这是一个试用环境,所以不考虑可用性和安全性。

使用过的环境

参考 Oracle Cloud Infrastructure 的 “创建实例-尝试使用 Oracle Cloud Infrastructure(第三节)”,创建虚拟云网络 (VCN),并创建计算实例 (VM)。

操作系统:选择最新版本的Oracle Linux 7.x。

创建实例后,请确认公网IP地址和私有IP地址。
(计算 >> 实例 >> 实例详情)

安装

安装Java。下载rpm文件并运行以下操作。

# mkdir /usr/java
# cd /usr/java/
# rpm -ivh jre-8u191-linux-x64.rpm

请按照以下内容创建 /etc/yum.repos.d/elasticsearch.repo 文件。

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安装Elasticsearch 6.2.0。
由于Sudachi插件不支持最新版本的Elasticsearch,安装失败了。因此,需要明确指定Elasticsearch的版本并使用yum进行安装。

# yum --showduplicates search elasticsearch (※install可能なバージョンを確認)
# yum install elasticsearch-6.2.0-1.noarch

安装Sudachi插件

# yum install maven
# yum install git
# git clone https://github.com/WorksApplications/elasticsearch-sudachi.git
# cd elasticsearch-sudachi/
# mvn package
# /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///root/elasticsearch-sudachi/target/releases/analysis-sudachi-elasticsearch6.2-1.1.0-SNAPSHOT.zip

安装 Kibana(版本与 6.2.0 相匹配)。

# yum --showduplicates search kibana 
# yum install kibana-6.2.0-1.x86_64

开启

经过以下确认,使用systemctl进行启动

$ ps -p 1
  PID TTY          TIME CMD
    1 ?        00:00:02 systemd

启动 Elasticsearch

# /bin/systemctl daemon-reload
# /bin/systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
# systemctl start elasticsearch.service

启动Kibana

# /bin/systemctl daemon-reload
# /bin/systemctl enable kibana.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
# systemctl start kibana.service

确认行动 (Confirm action)

确认Elasticsearch的启动

# curl -X GET "localhost:9200/"
{
  "name" : "RTk9yAi",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "PtV0gqoQQsGjMa-fBZ1Uhw",
  "version" : {
    "number" : "6.2.0",
    "build_hash" : "37cdac1",
    "build_date" : "2018-02-01T17:31:12.527918Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

确认Sudachi插件

# curl -X GET 'http://localhost:9200/_nodes/plugins?pretty'
{
  "_nodes" : {
    "total" : 1,
..(中略)..
      "plugins" : [        {
          "name" : "analysis-sudachi",
          "version" : "1.1.0-SNAPSHOT",
          "description" : "The Japanese (Sudachi) Analysis plugin integrates Lucene Sudachi analysis module into elasticsearch.",
          "classname" : "com.worksap.nlp.elasticsearch.sudachi.plugin.AnalysisSudachiPlugin",
          "extended_plugins" : [ ],
          "has_native_controller" : false,
          "requires_keystore" : false
        }
      ],

Sudachi的词典文件下载和部署

# wget https://oss.sonatype.org/content/repositories/snapshots/com/worksap/nlp/sudachi/0.1.1-SNAPSHOT/sudachi-0.1.1-20181108.091011-45-dictionary-core.zip
# mkdir /etc/elasticsearch/sudachi_tokenizer/
# unzip sudachi-0.1.1-20181108.091011-45-dictionary-core.zip
# mv system_core.dic /etc/elasticsearch/sudachi_tokenizer/

首先创建一个名为sudachi_test的索引(首先使用以下内容创建sudachi.json文件)。

{
  "settings": {
    "index": {
      "analysis": {
        "tokenizer": {
          "sudachi_tokenizer": {
            "type": "sudachi_tokenizer",
            "mode": "search",
            "discard_punctuation": true
          }
        },
        "analyzer": {
          "sudachi_analyzer": {
            "filter": [
            ],
            "tokenizer": "sudachi_tokenizer",
            "type": "custom"
          }
        }
      }
    }
  }
}

创建一个名为sudachi_test的索引。

$ curl -X PUT -H "Content-Type: application/json" http://localhost:9200/sudachi_test/ -d @sudachi.json
{"acknowledged":true,"shards_acknowledged":true,"index":"sudachi_test"}

观察一下Sudachi的运行情况。

請輸入「すももももももももものうち」這個字串。

如果使用Sudachi的话

$ curl -X POST -H "Content-Type: application/json" 'localhost:9200/sudachi_test/_analyze?pretty' -d '{"analyzer": "sudachi_analyzer", "text": "すもももももももものうち"}'

结果 (jié guǒ)

完璧

{
  "tokens" : [
    {
      "token" : "すもも",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "も",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "もも",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : "も",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "word",
      "position" : 3
    },
    {
      "token" : "もも",
      "start_offset" : 7,
      "end_offset" : 9,
      "type" : "word",
      "position" : 4
    },
    {
      "token" : "の",
      "start_offset" : 9,
      "end_offset" : 10,
      "type" : "word",
      "position" : 5
    },
    {
      "token" : "うち",
      "start_offset" : 10,
      "end_offset" : 12,
      "type" : "word",
      "position" : 6
    }
  ]
}

如果不使用Sudachi(使用标准分析器)

$ curl -X POST -H "Content-Type: application/json" 'localhost:9200/sudachi_test/_analyze?pretty' -d '{"analyzer": "standard", "text": "すもももももももものうち"}'

结果

每个文字都被分割开来

{
  "tokens" : [
    {
      "token" : "す",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<HIRAGANA>",
      "position" : 0
    },
    {
      "token" : "も",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<HIRAGANA>",
      "position" : 1
    },
    {
      "token" : "も",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "<HIRAGANA>",
      "position" : 2
    },
    {
      "token" : "も",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "<HIRAGANA>",
      "position" : 3
    },
    {
      "token" : "も",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "<HIRAGANA>",
      "position" : 4
    },
    {
      "token" : "も",
      "start_offset" : 5,
      "end_offset" : 6,
      "type" : "<HIRAGANA>",
      "position" : 5
    },
    {
      "token" : "も",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "<HIRAGANA>",
      "position" : 6
    },
    {
      "token" : "も",
      "start_offset" : 7,
      "end_offset" : 8,
      "type" : "<HIRAGANA>",
      "position" : 7
    },
    {
      "token" : "も",
      "start_offset" : 8,
      "end_offset" : 9,
      "type" : "<HIRAGANA>",
      "position" : 8
    },
    {
      "token" : "も",
      "start_offset" : 9,
      "end_offset" : 10,
      "type" : "<HIRAGANA>",
      "position" : 9
    },
    {
      "token" : "の",
      "start_offset" : 10,
      "end_offset" : 11,
      "type" : "<HIRAGANA>",
      "position" : 10
    },
    {
      "token" : "う",
      "start_offset" : 11,
      "end_offset" : 12,
      "type" : "<HIRAGANA>",
      "position" : 11
    },
    {
      "token" : "ち",
      "start_offset" : 12,
      "end_offset" : 13,
      "type" : "<HIRAGANA>",
      "position" : 12
    }
  ]
}

将设置进行更改,以便可以从远程连接。

Elasticsearch(ポート:9200)とKibana(ポート:5601)の初期設定では、両者ともlocalhostにバインドされており、localhostからのみアクセス可能な状態になっていました。

修改Elasticsearch和Kibana的配置文件后重新启动。

根据需要修改配置文件(可以选择将原始文件复制并保留原始版本)。

network.host: 0.0.0.0
server.host: "0.0.0.0"
elasticsearch.url: "http://<PUBLIC_IP_ADDRESS>:9200"
# systemctl restart elasticsearch.service
# systemctl restart kibana.service

这个特定的云环境配置更改

计算实例的防火墙设置 in Mandarin Chinese

默认情况下,除了SSH服务之外,其余所有服务都关闭,因此需要允许使用特定的端口。

# firewall-cmd --list-ports (※現状確認:何も無い)

# firewall-cmd --permanent --add-port=5601/tcp
success
# firewall-cmd --permanent --add-port=9200/tcp
success
# firewall-cmd --reload
success
# firewall-cmd --list-ports
5601/tcp 9200/tcp

在Oracle Cloud的VCN配置中,允许对特定端口的访问。

    • KibanaへのPORT(5601)を開放

 

    ElasticsearchのPORT(9200)も一緒に開放

点击“网络” >> “虚拟云网络” >> “虚拟云网络详细信息”,进入以下界面。

image.png

点击「查看安全列表详情」。

image.png

点击「编辑所有规则」,然后点击Ingress规则底部的「+ 添加另一个Ingress规则」,并添加从IP地址为0.0.0.0到端口:5601的所有IP地址。
(※如果您知道要访问的IP地址,请进行精确指定)

image.png

最后,不要忘记点击并保存位于最底部的“保存安全列表规则”,然后同样添加 PORT:9200。

从远程访问Kibana

从手边的个人电脑上,访问 http://PUBLIC_IP_ADDRESS:5601/

image.png

成功进入。
开发工具 → 尝试输入”すもももももももものうち”。

补充记录

在使用Elasticsearch + Logstash + Kibana + Sudachi插件来可视化Twitter时的模板设置。

广告
将在 10 秒后关闭
bannerAds