开始使用Elasticsearch
关于Elasticsearch
概述
Elasticsearch 是一个 [1] 什么?
Elastic社正在开发一款具有出色可扩展性的全文搜索引擎,可实现实时数据分析、日志解析、全文搜索等多种分析。通常与日志集聚工具Logstash、fluentd以及可视化工具Kibana一起使用。此外,它还使用了针对日语的日本语形态素解析引擎kuromoji。提供跨多个数据库进行搜索的功能,可以说是再普通不过的用途。
动态环境
-
- elasticsearch: 6.7.1
- kinaba: 6.7.1
怎么开始
导入的方式有两种。
1. 从homebrew进行安装
-
- 安装elasticsearch:
-
- 1. 首先,输入`brew install elasticsearch`。
-
- 2. 接下来安装插件。根据所需的分析器不同,对于日语,通常使用kuromoji。
- 输入`/bin/elasticsearch-plugin install analysis-kuromoji`。
2. 推荐使用Docker。
通常情况下,使用Elasticsearch进行分析和数据可视化时,最好使用docker-compose同时安装Kibana应用程序。这样做比较方便,并且对主机环境的影响较小。
文件结构
|--- docker-compose.yml
|--- es
| |--- Dockerfile
|
|---kibana
|--- Dockerfile
docker-compose.yml 文件
version: '2'
services:
elasticsearch:
build: es
volumes:
- es-data:/usr/share/elasticsearch/data
ports:
- 9200:9200
expose:
- 9300
ulimits:
nofile:
soft: 65536
hard: 65536
# https://github.com/docker-library/elasticsearch/issues/111
# uliimit: リソースの制限を拡大させている。
kibana:
build: kibana
links:
- elasticsearch:elasticsearch
ports:
- 5601:5601
volumes:
es-data:
driver: local
es/Dockerfile 可以用以下方式进行翻译成中文:“es/Dockerfile”
FROM elasticsearch:6.7.1
# kuromojiをインストール
RUN elasticsearch-plugin install analysis-kuromoji
基于Kibana的Docker文件
FROM kibana:6.7.1
项目的进展流程
这次我们在参考网站[3]上进行了教程。根据这个教程,我考虑了一个流程图。
1. 首先,创建或找到要分析的数据。
2. 创建索引模板。
也就是说,使用该模板创建索引。
3. 创建映射模板。
也就是说,使用该模板预先创建映射。
映射是将索引按类型进行清晰分割的规定。
4. 注册数据。
由于elasticsearch仅支持json格式,所以需要进行适当的格式化。使用方便的API可以轻松注册大量数据。
5. 进行搜索和数据分析。
*(注意)关于开发方法
如果习惯于开发,使用curl会更容易理解。
然而,由于查询会变得很长,所以使用’kibana’的开发工具更方便。
请注意
-
- shardとreplica[1]
-
- 実際に動かしてみないとわからない。というのが本音。
-
- 一応、開発時点ではコピーを作らなくすることで解決。つまり、replica数を0にする。
バージョンの違い
参考サイトのelasticsearchのversionは大体がver.2であるが、最新はver.6
その差がかなりのエラーを出すことがわかった。
参考サイト[2]を参照してエラーを処理すること。
Content-Type の指定が必須
> Elasticsearch への API は Transport通信を除いて、HTTP(s) リクエストによって操作します。Elasticsearch 5系までは自動検出していた Content-Type ヘッダですが、Elasticsearch 6系より指定が必須となりました。[2]
フィールドタイプにstringが指定できない
> Elasticsearch 5系から文字列を扱うフィールドタイプがstringからtext、keywordに変更しました。5系ではstringタイプは非推奨となり指定することができました。6系ではstringタイプを指定するとエラーになるように変更となりました。[2]
mappingについて
注意点として、一度定義したマッピングは変更することができない!!
変更する場合はインデックスごと削除して再作成する必要がある・・・
逆にフィールドの追加はできる。
参考网站
[1] Elasticsearch的分片和副本
[2] 在使用Elasticsearch 6之前需要了解的事项
请参考以下网站。
[1] 仅用3分钟就能明白的是,什么是Elasticsearch?
[2] 尝试在Docker环境中运行Elasticsearch和Kibana
[3] 使用Elasticsearch 6进行数据验证的第一部分(使用Docker创建和确认容器)
[4] 官方网站的教程