OSS紹介

Elasticsearch

Elasticsearch最新情報

NRIのOpenStandiaが提供するElasticsearch最新情報

Elasticsearchの保守サポートサービスの内容はこちら Elasticsearchの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Elasticsearchバージョンアップ情報

■2019-12-05
[VerUP]Elasticsearch 7.5.0(リリース日:2019/12/03)
■2019-11-01
[VerUP]Elasticsearch 7.4.2(リリース日:2019/11/01)
■2019-10-25
[VerUP]Elasticsearch 7.4.1(リリース日:2019/10/24)
■2019-09-13
[VerUP]Elasticsearch 7.3.2(リリース日:2019/09/13)
■2019-09-13
[VerUP]Elasticsearch 6.8.3(リリース日:2019/09/06)
■2019-08-23
[VerUP]Elasticsearch 7.3.1(リリース日:2019/08/23)
■2019-08-08
[VerUP]Elasticsearch 6.8.2(リリース日:2019/07/30)
■2019-06-28
[VerUP]Elasticsearch 7.2.0(リリース日:2019/06/26)
■2019-06-21
[VerUP]Elasticsearch 6.8.1(リリース日:2019/06/21)
■2019-06-02
[VerUP]Elasticsearch 7.1.1(リリース日:2019/05/29)

すべてを見る

更新日:2019-12-05

Elasticsearchの概要

ElasticsearchはElastic社が開発するオープンソースの分散型全文検索エンジンです。Elasticsearchの元となるソフトウェアは「Compass」という名前で2004年にShay Banon氏によって開発されました。
その後、スケーラブルな検索ソリューションへの対応のため、クラスタリング機能やAPIなど多くの機能が改良、追加され2010年にElasticsearchとして初めてのバージョンがリリースされました。
現在は、Shay Banon氏らが設立したElastic社が引き続き開発をおこなっています。 ElasticsearchはJavaで記述された検索ライブラリ「Lucene」をベースに作られており、同様にLuceneをベースに作られたSolrとともにオープンソースの全文検索エンジンとして高い人気を誇っています。(*1)

 Elasticseachはスケーラビリティと高可用性に優れていることから、ソーシャルネットワークやGithub、e-bay、Ciscoなど多くの大規模サービスにおいて検索システムの中核となるソフトウェアとして採用されています。

また、近年は全文検索の分野以外でもElastic社が提供するKibana(*2)やLogstash(*3)、Beats(*4)などのプロダクト(Elastic Stack)と連携して大量のログを分析する基盤、あるいはサービスやサーバの監視基盤など、幅広く利用されるようになってきています。こういった用途に対してElastic社はX-Packと呼ばれる、Elastic Stackでのセキュリティ確保やアラート設定、レポート出力などを簡便且つ効率的に行う有償のプラグイン群を提供しています(*5)。

2017年3月に行われた公式カンファレンスであるElastic{ON}では、クエリのSQL対応や、容易なElasticsearch&Kibanaクラスタ構築を可能とするクラウドサービスであるElastic Cloudの公式リリースが発表されました。このように機能追加やサービス展開も継続して行われている他、活用事例なども豊富でコミュニティが活性化していることから、Elasticsearchは今後さらなる発展が期待されます。

現在の最新バージョンはElasticsearch 6.8.3、7.1.1、7.2.0、7.3.2、7.4.2 、7.5.0です。(2019年12月現在)

*1 DB-ENGINES :Trend of Search Engines Popularity
https://db-engines.com/en/ranking_trend/search+engine
*2 集積されたデータの視覚化を行なうツール
https://www.elastic.co/jp/products/kibana
*3 データの取り込み、保存場所への送信を行なうツール
https://www.elastic.co/jp/products/logstash
*4 サーバのメトリクスや、ログの内容を取得して送信するツール
https://www.elastic.co/jp/products/beats
*5 データモニタリングや、アラート通知、グラフ等の機能を拡張
https://www.elastic.co/jp/products/x-pack

TOPに戻る

Elasticsearchの特徴

スキーマレスであること

Elasticsearchはスキーマレスであると表現されますが、それはデータのインデキシング時に自動的に各フィールドのデータ型を判別してマッピング定義(*6)を自動生成することで、ユーザがスキーマ定義作業をすることなく利用を開始できるためです。ただし、自動マッピング定義機能は汎用的であるため、すべてのデータに対して適切なマッピング定義が生成されるわけではありません。そういった場合には、データをインデキシングする前に、特定のフィールドに対してデータ型や、アナライズ(どのようにデータを解析するか)の方法を定義することで、ユーザの任意の形でデータをインデキシングすることが可能です。

*6 マッピング定義とは、スキーマをElasticsearchのデータとしてどのように保存するか定義したものでRDBでのテーブル定義と同等の役割を果たします。

Elasticsearchのもう1つの特徴である、JSON over HTTPによるアクセスの一貫性ですがElasticsearchでは、すべてがJSONで表現されています。これは、インデキシングされたデータ構造から、マッピング定義にいたります。ElasticsearchのREST APIに対してHTTPリクエストを送ってマッピング定義を表示するようにリクエストを送るとマッピング定義がJSONドキュメントとして返ってきます。
(例)マッピング定義を表示するためにRESTエンドポイントにリクエスト送る

curl -XGET 'http://192.168.193.128:9200/_mapping?pretty'

上記リクエストに対してのレスポンスは次のようなJSONで返されます。

{
  "dstat_v2" : {
     "mappings" : {
       "_default_" : {
         "dynamic_templates" : [ {
           "templeate_double" : {
             "mapping" : {
               "type" : "double"
             },
             "match" : "dstat-*",
             "match_mapping_type" : "string"
           }
         } ]
       },
      :
      :

また、マッピング定義を変更する際にもElasticsearchのREST APIに対してHTTPリクエストのボディにJSONで定義を記述したリクエストを送信します。

curl -XPUT http://localhost:9200/_template/dynamic_string -d '{
    "template": "serverlog*",
    "mappings": {
       "_default_": {
        "dynamic_templates": [
           {
           "strings" : {
           "match_mapping_type" : "string",
           "mapping": {
           "type": "string",
             "fields": {
               "raw": {
                 "type": "string",
                 "index" : "not_analyzed",
                 "ignore_above":256
               }
             }
           }
         }
       }
     ],
     "properties" : {
        "@timestamp" : { "type" : "date", "index" : "not_analyzed" }
           }
         }
       }
     ],


プラグインが豊富且つ、開発可能であること

Elasticseachはプラグインが豊富であるという特徴もあります。プラグインはElasticsearch認定であり、Elastic社の社員が開発に携わっているCore Pluginsと、それ以外のCommunity contributedの二つに大別することができます。前述のX-PackはCore Pluginsに分類されます。
プラグインの種別としては言語解析用途やElasticsearchそのものの管理用途など様々なものが存在します。日本語の形態素解析器としては、kuromoji(*7)というプラグインがElasticsearchのCore Pluginとして提供されています。
また、elasticsearch-head(*8)やelasticsearch-HQ(*9)など、Community製のプラグインも充実しています。こういったプラグインは形態素解析や、フィルタのカスタマイズなど、要件に併せて自作することも可能(*10)です。
(*7) Japanese (kuromoji) Analysis plugin
https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-kuromoji.html
(*8) mobz/elasticsearch-head: A web front end for an elastic search cluster
https://github.com/mobz/elasticsearch-head
(*9) royrusso/elasticsearch-HQ: Monitoring and Management Web Application for ElasticSearch instances and clusters
https://github.com/royrusso/elasticsearch-HQ
(*10) https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugin-authors.html

TOPに戻る

Elasticsearchの主な機能

Elasticsearchの主な機能は、以下となります。

機能 ElasticSearch 7.0
フォーマット JSON
HTTP REST API あり
オフィシャルな
クライアントライブラリ
Java, JavaScript, Go, .NET, PHP, Perl, Python, Ruby
コミュニティー提供のクライアントライブラリ B4j, C++, Clojure, ColdFusion, Erlang, Go, Groovy, Haskell, Java, JavaScript, Kotlin, Iua, .NET, OCaml, Perl, PHP, Python, R, Ruby, Rust, Scala, Smalltalk, Vert.x
出力形式 JSON(プラグインによりXML/HTMLで出力することも可能)
レプリケーション デフォルトで5台のシャード構成データは各ノードにレプリケートされる。(1台構成でも稼働させることは可能).
バックアップ&レストア スナップショットを作成し、リストアAPIを介してリストア
データのインポート ActiveMQ, CouchDB, DynamoDB, FileSystem, Git, Hazelcast, JDBC, JMS, Kafka, LDAP, MongoDB, neo4j, OAI, RabbitMQ, Redis, RSS, Solr, Subversion, Twitter
ドキュメントの部分アップデート _source fieldを使って可能
カスタムのアナライザーやトークナイザーの使用
類義語登録 Solrと同じフォーマットで類義語登録可能
Multiple indexes
リアルタイムインデックシング/サーチ インデックシングされた後、すぐに検索結果に反映される(ほぼリアルタイム)
スキーマレス
Apache Tikaの利用
(Tikaは、MS-wordやPDFなどをテキストとして解析するライブラリ)
Dynamic fields
Fieldのコピー ○(multi-fieldsで可能)
Lucene Query parsing
空間/地理 検索
ファセット検索
もしかして検索
スコアリング機能のカスタマイズ
Scrip言語でのスコアリング機能のカスタマイズ
スペルチェック
オートコンプリート
ジョイン ○ (has_children と top_children クエリを使用)
複数のインデックスに対しての横断検索
検索結果のハイライト
自動フェイルオーバー機能
自動リーダーノード選出機能
シャード間レプリケーション
シャーディング
Webインターフェイス elasticsearch-head, bigdesk, elasticsearch-HQ, などのプラグインにより提供される
可視化ツール Kibana

TOPに戻る

Elasticsearchの動作環境

Elasticsearchのバージョン5~7系はJava8で動作します。Oracle又は、OpenJDKがサポートされています。また、7系はJava11、12でも動作します。
各OSやブラウザでのElasticsearchの各バージョンの動作実績に関しては下記URLを参照ください。
https://www.elastic.co/support/matrix

TOPに戻る

Elasticsearchのドキュメント

Elasticsearchの各種ドキュメントは下記URLから参照ください。
https://www.elastic.co/guide/index.html

TOPに戻る

Elasticsearchのダウンロード

各種OSの向けのElasticsearchのパッケージは下記URLに取得方法が記載されています。
https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • Corosync
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • BIND
  • PostgreSQL
  • Apache Struts
  • Pentaho
  • Spring Framework
  • Apache Tomcat
  • Solr
  • Dovecot
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • BIND
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO
<--!-->