Elasticsearch チュートリアル
Elasticsearchを使い始める
サーチ…
備考
Elasticsearchは、Luceneに基づいてJavaで書かれた高度なオープンソース検索サーバーです。
これは、HTTP REST APIを介してアクセス可能な、テキスト全体、部分的なテキスト、クエリベースおよびジオロケーションベースの検索機能を分散して提供します。
バージョン
| バージョン | 発売日 |
|---|---|
| 5.2.1 | 2017-02-14 |
| 5.2.0 | 2017-01-31 |
| 5.1.2 | 2017-01-12 |
| 5.1.1 | 2016-12-08 |
| 5.0.2 | 2016-11-29 |
| 5.0.1 | 2016-11-15 |
| 5.0.0 | 2016-10-26 |
| 2.4.0 | 2016-08-31 |
| 2.3.0 | 2016-03-30 |
| 2.2.0 | 2016-02-02 |
| 2.1.0 | 2015-11-24 |
| 2.0.0 | 2015-10-28 |
| 1.7.0 | 2015-07-16 |
| 1.6.0 | 2015-06-09 |
| 1.5.0 | 2015-03-06 |
| 1.4.0 | 2014-11-05 |
| 1.3.0 | 2014-07-23 |
| 1.2.0 | 2014-05-22 |
| 1.1.0 | 2014-03-25 |
| 1.0.0 | 2014-02-14 |
Ubuntu 14.04でのElasticsearchのインストール
前提条件
Elasticsearchを実行するには、マシン上にJava Runtime Environment(JRE)が必要です。 ElasticsearchにはJava 7以上が必要であり、 Oracle JDK version 1.8.0_73を推奨しOracle JDK version 1.8.0_73 。
Oracle Java 8をインストールする
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer
Javaバージョンを確認する
java -version
パッケージのダウンロードとインストール
バイナリの使用
Linux:
$ bin/elasticsearch
apt-getを使う
ウェブサイトからelasticsearchをダウンロードする代わりに、 apt-getを使用してそれをインストールしapt-get 。
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo /etc/init.d/elasticsearch start
elasticsearchバージョン5.xのインストール
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update && sudo apt-get install elasticsearch
Linux上でサービスとして実行:
インストール後、上記は起動しません。サービスとして開始する必要があります。 Elasticsearchを起動または停止する方法は、システムがSysV initを使用するかsystemdを使用するかによって異なります。次のコマンドで確認できます。
ps -p 1
あなたのディストリビューションがSysV initを使用している場合は、以下を実行する必要があります:
sudo update-rc.d elasticsearch defaults 95 10
sudo /etc/init.d/elasticsearch start
それ以外の場合は、あなたの配布物がsystemdを使用しています:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
ブラウザまたはRESTクライアントからCURLコマンドを実行して、Elasticsearchが正しくインストールされているかどうかを確認します。
curl -X GET http://localhost:9200/
WindowsでのElasticsearchのインストール
前提条件
Windows版のElasticsearchは、このリンクから入手できます: https : //www.elastic.co/downloads/elasticsearch 。最新の安定リリースは常に最上位にあります。
Windowsにインストールするときには、 .ZIPアーカイブが必要です。 [ Downloads:セクションのリンクをクリックし、ファイルをコンピュータに保存します。
このバージョンの弾性は「ポータブル」です。つまり、プログラムを使用するためにインストーラを実行する必要はありません。ファイルの内容を簡単に覚えている場所に解凍します。デモンストレーションのために、すべてをC:\elasticsearch解凍したと仮定します。
アーカイブにはデフォルトでelasticsearch-<version>という名前のフォルダがあり、そのフォルダをC:\に展開してelasticsearch名前を変更するか、 C:\elasticsearch自分で作成してアーカイブ内のフォルダの内容のみを解凍することができますそこへ。
ElasticsearchはJavaで書かれているため、Java Runtime Environmentが機能する必要があります。したがって、サーバーを実行する前に、コマンド・プロンプトを開いて次のように入力して、Javaが使用可能かどうかを確認してください。
java -version
次のような応答が得られるはずです。
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) Client VM (build 25.91-b14, mixed mode)
代わりに次のように表示された場合
'java'は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
Javaがシステムにインストールされていないか、または正しく構成されていません。 このチュートリアルに従うと、 Javaを(再)インストールできます。また、これらの環境変数が同様の値に設定されていることを確認してください。
| 変数 | 値 |
|---|---|
| JAVA_HOME | C:\ Program Files \ Java \ jre |
| パス | ...; C:\ Program Files \ Java \ jre |
これらの変数を調べる方法がわからない場合は、 このチュートリアルを参照してください 。
バッチファイルから実行
Javaをインストールしたら、 binフォルダを開きます。すべてを解凍したフォルダ内で直接見つけることができるので、 c:\elasticsearch\binはずです。このフォルダ内には、コマンドウィンドウでElasticsearchを起動するために使用できるelasticsearch.batというファイルがあります。これは、プロセスによって記録された情報がコマンドプロンプトウィンドウに表示されることを意味します。サーバーを停止するには、 CTRL Cを押すか、単にウィンドウを閉じます。
Windowsサービスとして実行する
理想的には、開発中に削除できない余分なウィンドウを持つことは望ましくないため、Elasticsearchをサービスとして実行するように設定することができます。
Elasticsearchをサービスとしてインストールする前に、 C:\elasticsearch\config\jvm.optionsファイルに行を追加する必要があります。
サービスインストーラは、サービスをインストールする前に、スレッドスタックサイズの設定を
jvm.options設定する必要があります。 32ビットWindowsでは-Xss320k[...]を追加し、64ビットWindowsでは-Xss1mをjvm.optionsファイルに追加する-Xss1mがあります。 [ソース]
変更を加えたら、コマンドプロンプトを開き、次のコマンドを実行してbinディレクトリに移動します。
C:\Users\user> cd c:\elasticsearch\bin
サービス管理はelasticsearch-service.batによって処理されます。古いバージョンでは、このファイルは単にservice.batと呼ばれることがあります。使用可能なすべての引数を表示するには、以下を実行します。
C:\elasticsearch\bin> elasticsearch-service.bat
Usage: elasticsearch-service.bat install|remove|start|stop|manager [SERVICE_ID]
また、オプションのSERVICE_ID引数があることがわかりますが、現在は無視できます。サービスをインストールするには、次のコマンドを実行します。
C:\elasticsearch\bin> elasticsearch-service.bat install
サービスをインストールした後、それぞれの引数を使用してサービスを開始および停止できます。サービスを開始するには、
C:\elasticsearch\bin> elasticsearch-service.bat start
それを停止するには、実行する
C:\elasticsearch\bin> elasticsearch-service.bat stop
代わりにGUIを使用してサービスを管理する場合は、次のコマンドを使用できます。
C:\elasticsearch\bin> elasticsearch-service.bat manager
これによりElastic Service Managerが開きます。これにより、サービス関連の設定をカスタマイズし、最初のタブの下部にあるボタンを使用してサービスを停止/開始することができます。
ドキュメントの索引付けと取得
ElasticsearchはHTTP REST APIを介してアクセスされます。通常はcURLライブラリを使用します。検索サーバーとクライアント(ユーザーまたはアプリケーション)との間のメッセージは、JSON文字列の形式で送信されます。デフォルトでは、Elasticsearchはポート9200で動作します。
以下の例では、ElasticsearchにJSONレスポンスをあらかじめ確認するように指示するために?prettyが追加されています。アプリケーション内でこれらのエンドポイントを使用する場合は、このクエリパラメータを追加する必要はありません。
ドキュメントのインデックス作成
後で索引内の情報を更新する場合は、索引付けする文書に一意のIDを割り当てることをお勧めします。 megacorpという名前の索引に文書を追加するには、 employeeとID 1タイプを実行します。
curl -XPUT "http://localhost:9200/megacorp/employee/1?pretty" -d'
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}'
応答:
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_version": 1,
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
インデックスは、PUT呼び出しを送信するときに存在しない場合に作成されます。
IDなしのインデックス作成
POST /megacorp/employee?pretty
{
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests": [ "music" ]
}
応答:
{
"_index": "megacorp",
"_type": "employee",
"_id": "AVYg2mBJYy9ijdngfeGa",
"_version": 1,
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"created": true
}
ドキュメントの取得
curl -XGET "http://localhost:9200/megacorp/employee/1?pretty"
応答:
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [
"sports",
"music"
]
}
}
megacorpインデックスからemployeeという型の10個のドキュメントを取得します。
curl -XGET "http://localhost:9200/megacorp/employee/_search?pretty"
応答:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 1,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [
"sports",
"music"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "AVYg2mBJYy9ijdngfeGa",
"_score": 1,
"_source": {
"first_name": "Jane",
"last_name": "Smith",
"age": 32,
"about": "I like to collect rock albums",
"interests": [
"music"
]
}
}
]
}
}
提供されたフィールドで正確に一致するものを探すmatchクエリを使用した簡単な検索:
curl -XGET "http://localhost:9200/megacorp/employee/_search" -d'
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}'
応答:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.6931472,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 0.6931472,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [
"sports",
"music"
]
}
}
]
}
}
例を用いた基本検索パラメータ:
既定では、すべての検索の一部として完全なインデックス付きドキュメントが返されます。これは、ソース(検索ヒットの_sourceフィールド)と呼ばれます。ソース文書全体を返すことを望まない場合、返されるソース内のいくつかのフィールドだけを要求するか、 _sourceをfalseに設定してフィールドを完全に省略することができます。
次の例は、 account_numberとbalance ( _source内部)の2つのフィールドをaccount_numberから戻す方法を示しています。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_all": {} },
"_source": ["account_number", "balance"]
}'
上記の例は、単に_sourceフィールドで返される情報を減らすことに注意してください。 _sourceという1つのフィールドだけを返しますが、 account_numberフィールドとbalanceフィールドのみが含まれます。
あなたがSQLのバックグラウンドから来たのであれば、上記はSQLのクエリと概念が多少似ています
SELECT account_number, balance FROM bank;
では、クエリ部分に移りましょう。以前は、 match_allクエリを使用してすべてのドキュメントを照合する方法を見てきました。ここでは、マッチクエリと呼ばれる新しいクエリを紹介します。これは、基本的なフィールド検索クエリ(つまり、特定のフィールドまたはフィールドセットに対して行われた検索)と考えることができます。
この例では、 account_numberが20設定されたアカウントが返されます。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "account_number": 20 } }
}'
この例では、 address 「ミル」という用語を含むすべての勘定科目を返しaddress 。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "address": "mill" } }
}'
この例では、 address 「mill」または「lane」という用語を含むすべてのアカウントを返しaddress 。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "address": "mill lane" } }
}'
この例は、クエリを用語に分割し、お互いに同じ位置にあるaddress内のすべての用語を含むドキュメントのみを返すmatch ( match_phrase )の変形です[1] 。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_phrase": { "address": "mill lane" } }
}'
bool(ean)クエリを紹介しましょう。 boolクエリを使用すると、ブール論理を使用して、より小さいクエリをより大きなクエリに構成することができます。
この例では、2つの一致クエリを作成し、アドレスに「mill」と「lane」を含むすべてのアカウントを返します。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
上記の例では、bool must句は、ドキュメントが一致とみなされるために真でなければならないすべてのクエリを指定します。
対照的に、この例では、2つの一致クエリを作成し、 address 「mill」または「lane」を含むすべてのアカウントを返しaddress 。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"should": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
上の例では、bool should節は、文書が一致するとみなされるためには真でなければならない問合せのリストを指定します。
この例では、2つの一致クエリを作成し、 address 「ミル」も「レーン」も含まないすべてのアカウントを返しaddress 。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must_not": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
上記の例では、bool must_not句は、ドキュメントが一致とみなされるためには真でなければならないクエリのリストを指定します。
boolクエリの中でmust、should、must_not節を同時に組み合わせることができます。さらに、これらのブール句のいずれかの内部でブールクエリを作成して、複雑なマルチレベルブール論理を模倣することができます。
この例では、正確に40歳で、ワシントンに住んでいない人に属するすべてのアカウントを返します( WAは短い)。
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "WA" } }
]
}
}
}'
CentOS 7にElasticsearchとKibanaをインストールする
Elasticsearchを実行するには、マシン上にJava Runtime Environment(JRE)が必要です。 ElasticsearchにはJava 7以上が必要であり、 Oracle JDK version 1.8.0_73を推奨しOracle JDK version 1.8.0_73 。
したがって、システムにJavaがあるかどうかを確認してください。そうでない場合は、次の手順に従います。
# Install wget with yum
yum -y install wget
# Download the rpm jre-8u60-linux-x64.rpm for 64 bit
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jre-8u60-linux-x64.rpm"
# Download the rpm jre-8u101-linux-i586.rpm for 32 bit
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jre-8u101-linux-i586.rpm"
# Install jre-.*.rpm
rpm -ivh jre-.*.rpm
JavaはCentOSシステムに今インストールする必要があります。あなたはそれをチェックすることができます:
java -version
elasticsearchのダウンロードとインストール
# Download elasticsearch-2.3.5.rpm
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.5/elasticsearch-2.3.5.rpm
# Install elasticsearch-.*.rpm
rpm -ivh elasticsearch-.*.rpm
起動時にシステムサーチとしてelasticsearchを実行する
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
# check the current status to ensure everything is okay.
systemctl status elasticsearch
木場を設置する
rpmで最初にGPGキーをインポートする
sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
次に、ローカルリポジトリkibana.repo作成しますkibana.repo
sudo vi /etc/yum.repos.d/kibana.repo
そして次のコンテンツを追加します:
[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
次のコマンドでkibanaをインストールします。
yum -y install kibana
それを始める:
systemctl start kibana
ステータスを確認するには:
systemctl status kibana
スタートアップサービスとして実行することができます。
systemctl enable kibana