6
5

More than 3 years have passed since last update.

記事を読みながら理解する!Elasticsearch入門者が抑えておきたい内容まとめ

Last updated at Posted at 2020-09-03

分散型でオープンソースの検索・分析エンジン、Elasticsearch。
最近、興味がある、これから業務で使う予定、なんて人もいるのではないでしょうか。
そんな時は、

を見ておけばオッケ~!!

・・・といえば(公式のだし)間違いなくそうなんですが、

  • とっかかりが英語だとハードルが高い
  • とりあえず要点だけ把握してガンガン使ってみたい

となる人も多いと思うので、入門者向けにいい感じの記事をピックアップ&実際に動かしてみることを想定して、まとめてみました。

前提条件

  • OS:Windows10
  • プログラミング言語:Java

環境作って実際に動かしてみる、というところに重きを置いてます。
自分のメイン環境、言語が上述の通りなのでその点はご堪忍。
それ以外の環境の人は、「本題」の3, 4辺りを参考程度にご覧くださいませ。
※一部公式サイト参照(=英語)しておりますが、ご了承を。

本題

1. curlのダウンロードと設定

サーバとデータをやりとりするためのツール、curl。
Elasticsearchやのに、なんでイチバンにcurlやねんっ!ってなりそうですが、コマンドベースで操作を行うには必須。
で、Windowsには、残念ながらデフォルトではcurlは入ってない。
ダウンロードが必要なわけです。

より、ダウンロード→解凍して、binフォルダまでのパスを環境変数(ユーザー環境変数)に設定しておきましょう。
そして、コマンドプロンプトで、以下のコマンドを実行して、日本語でも文字化けないようにしておきましょう。

文字コードをUTF-8に変更
> chcp 65001

curlがそもそもよくわからへんから、基本的な使い方を押さえておきたい、という方は、

がとても参考になりますので、一読しておくとよいでしょう。

2. Elasticsearch(とKibana)環境の準備

ではいよいよ、Elasticsearch環境を構築していきましょう!
Kibanaはなくてもいいのですが、

  • Elasticsearchの操作を簡単にしたり、
  • データを可視化したりできる

便利なツールなのでぜひこちらも入れておきましょう。

を参考にすればWindowsでの環境が準備できちゃいます♪
・・なんですが、ダウンロードにめっっっちゃ!!!時間がかかる(自分は3.5時間ほどかかった:Kibanaはそれほどでもない)ので、Dockerまあまあ使えるよって人は

あたりを参考にサクッと環境構築してしまってもよいですね。
(こちらは設定内容の見直し込みでも1時間かかりませんでした。)

公式サイトだと、

に記載がありますので、こちらもご参考に。

3. 基本的な概念を理解する

それでは!早速動かしてみましょう!
と、その前に、基本的な概念を理解しておくのが大切ですね。
そもそも、環境うんぬんの前にまずそこやろ~っていうのは置いておいて、最低限押さえておきたい内容を以下に。

よく出てくる用語については、RDBと比較するとイメージがつきやすいと思います。
調べると諸説でてきますが、一番しっくりきた組み合わせが以下の通り。

RDB Elasticsearch
データベース Cluster
テーブル Index
テーブル定義 Mapping
レコード(行) Document
カラム(列) Fields
プライマリーキー(主キー) Document ID

もちろん異なる部分もあるので、詳しくは

をご覧ください。

続いて、analyzer。
analyzerとは、テキスト分析といって、検索するのに最適なフォーマットに変換するプロセスを行ってくれるものになります。
analyzerは、大きく分けて以下の3つから構成されています。

名称 内容
Character filters 文字列に対し、Tokenizerで分割する前に必要な処理(追加、削除、変更)を行う。
前処理的ポジションで、使用は任意。
Tokenizer 文字列を単語レベルに分割する役割を持つ。
必須項目。
Token filters Tokenizerで分割された内容に対し、必要な処理(追加、削除、変更)を行う。
後処理的ポジションで、使用は任意。

公式サイトでは、

に記載がありますので一度確認しておきましょう。

最後に、aggregations。
検索クエリに基づいて、データを集計します。

公式サイトの

辺りを参考に。

4. コマンドベースで動かしてみよう

ではいよいよ、Elasticsearchを操作してみましょう~!

全般的な内容については、

あたりを参考に。

SQLとの比較、という観点では、

あたりがとてもわかりやすくまとまってます♪

まずは上記の記事たちを参考に、コマンドベースで、

  • インデックスの作成
  • データ投入&更新
  • クエリ実行

あたりを一通りやってみるとよいですね。

余力があれば、analyzer, aggregationsについても一通りやっておくとよいでしょう。

analyzer(日本語使用)については、

あたりを参考に。

aggregationsについては、

辺りが参考になります。

5. プログラミング言語(Java)で動かしてみよう

プログラミング言語を使っても操作できます!

によれば、ElasticsearchはJava、JavaScript、Go、.NET、PHP、Perl、Python、Rubyと8種類ものプログラミング言語に対応している、とのことなんですが、冒頭でも述べた通り自身のメイン環境がJavaなので、今回はJavaで。

日本語記事なら、

がとてもよくまとまってます。

本家本元のトップページは以下。

うち個人的にココは押さえておきたいなと思ったのが以下のページ。

こちらも実際にコードを書いてみて、動きを見てみるのがいいですね。

所感

最初はとっつきにくく、Elasticsearchコノヤロー!!ってなっていたのですが、使っていくうちに随分理解ができてきて、愛着がわくようになってきました。
カスタマイズの幅が大きく、育てがいがありそうなのもいいところ。

自分自身もこの記事執筆時点の2020/09/03の時点で触り始めて約2週間。
まだまだこれからですが、習うより慣れろ、で進めていきたいと思います!

更新履歴

日付 内容
2020/09/03 初版投稿
2020/09/04 analyzer, aggregationsに関する内容を追加

参考

本文には載せてないけど、大いに参考にさせていただいた記事たちです。

1. curl

3. 基本的な概念を理解する

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5