开始使用Elasticsearch

关于Elasticsearch

概述

Elasticsearch 是一个 [1] 什么?

Elastic社正在开发一款具有出色可扩展性的全文搜索引擎,可实现实时数据分析、日志解析、全文搜索等多种分析。通常与日志集聚工具Logstash、fluentd以及可视化工具Kibana一起使用。此外,它还使用了针对日语的日本语形态素解析引擎kuromoji。提供跨多个数据库进行搜索的功能,可以说是再普通不过的用途。

动态环境

    • elasticsearch: 6.7.1

 

    kinaba: 6.7.1

怎么开始

导入的方式有两种。

1. 从homebrew进行安装

    1. 安装elasticsearch:

 

    1. 1. 首先,输入`brew install elasticsearch`。

 

    1. 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] 官方网站的教程

bannerAds