Elasticsearch入門チュートリアルのインストールと基本的な使用
10193 ワード
ubuntu16.04+elasticsearch6.5を例に、公式サイトのドキュメントを参照https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html
Javaのインストール
参考記事:https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
Elasticsearch
インストール(6.5.4)
開始
起動時にvmを間違って報告する場合.maxmapcount[65530]is toolow実行は以下の通りです.
curlテストでは、起動に成功し、正常にインストールされたことを示すメッセージが表示されます.
基礎概念
Elasticは現在の全文検索エンジンの第一選択であり、本質的に非関係型データベースであり、mysqlのいくつかの概念と比較すると以下の通りである.
Mysql
Elastic
database(データベース)
index(インデックス)
テーブル
type(タイプ、7.xは廃棄)
row(記録)
ドキュメント
column(フィールド)
fileds(フィールド)
きほんそうさ
Elasticの操作はrest apiで完了し、以下の操作は
操作インデックス
customerというindexを新規作成します.prettyは友好的なjsonに戻る
すべてのインデックスを表示
索引の削除
操作ドキュメント
新しいidが1のdocumentは、typeが廃止されるため、indexごとに1つのtypeのみが含まれ、統一は_doc
postを使用し、idを空にするとランダムなidが生成されます.
ドキュメントの更新は新規作成と同じで、データを変更するか、
簡単なスクリプト更新を使用して、ここのctx.sourceは、変更されるドキュメントを指します.
クエリidが1のドキュメント
ドキュメントの削除
一括操作、idが1と2のドキュメントを一括更新し、postmanでbodyが最後に1行空になる必要があることに注意します.
idが1のドキュメントを更新し、idが2のドキュメントを削除します.
バッチ操作の1つが失敗した場合、他の操作は任意に実行され、終了時に実行順序に従ってステータスが返されます.
データの参照
仮想銀行の顧客アカウント情報データセットを準備します.このようなフォーマットのように、右クリックしてデータセットをダウンロードし、
データセットのインポート
match_allクエリー
URI検索を使用すると、
jsonリクエストボディ検索を使用して、上記と同じ効果を取得します.
結果バーの数をsizeとfromで制限し、mysqlのlimitとfromに似ています.使用_sourceクエリー指定フィールド
matchクエリー
クエリーaccount_numberが20のすべての口座
クエリーaddressに
クエリーaddressに
match_phraseクエリー、matchの変種、クエリーaddressに
boolクエリー
クエリーaddressには
年齢が40歳で
boolフィルタ
残高が20000~30000(含む)の顧客アカウントの照会
Elasticsearchは簡単で複雑なツールです.以上、その基礎知識と、いくつかのREST APIを使用してそれを処理する方法を理解してから、もっと高度な知識点を徐々に理解します.
転載先:https://www.cnblogs.com/luke44/p/elasticsearch-doc.html
Javaのインストール
参考記事:https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
$ sudo apt-get update
$ sudo apt-get install -y default-jre
$ sudo add-apt-repository ppa:webupd8team/java && sudo apt-get update
$ sudo apt-get install oracle-java8-installer
$ export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
$ java -version # java
$ echo $JAVA_HOME # java_home
Elasticsearch
インストール(6.5.4)
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.zip
$ unzip elasticsearch-6.5.4.zip
開始
$ cd elasticsearch-6.5.4/bin
$ ./elasticsearch
起動時にvmを間違って報告する場合.maxmapcount[65530]is toolow実行は以下の通りです.
$ sudo sysctl -w vm.max_map_count=262144
curlテストでは、起動に成功し、正常にインストールされたことを示すメッセージが表示されます.
$ curl 127.0.0.1:9200
{
"name" : "c5skAub",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "bdkUuVtQSvWOiY_vXEFnvw",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
基礎概念
Elasticは現在の全文検索エンジンの第一選択であり、本質的に非関係型データベースであり、mysqlのいくつかの概念と比較すると以下の通りである.
Mysql
Elastic
database(データベース)
index(インデックス)
テーブル
type(タイプ、7.xは廃棄)
row(記録)
ドキュメント
column(フィールド)
fileds(フィールド)
きほんそうさ
Elasticの操作はrest apiで完了し、以下の操作は
curl -XMETHOD "http://localhost:9200" -H 'Content-Type: application/json' [-d 'request body']
を省き、リモートアクセスをしたい場合は/path-to-elastic/config/elasticsearch.yml
のnetwork.host: 0.0.0.0
を修正して再起動すればよい.操作インデックス
customerというindexを新規作成します.prettyは友好的なjsonに戻る
$ PUT /customer?pretty
すべてのインデックスを表示
$ GET /_cat/indices?v
索引の削除
$ DELETE /customer
操作ドキュメント
新しいidが1のdocumentは、typeが廃止されるため、indexごとに1つのtypeのみが含まれ、統一は_doc
$ PUT /customer/_doc/1?pretty
{
"name": "luke"
}
postを使用し、idを空にするとランダムなidが生成されます.
$ POST /customer/_doc?pretty {"name": "php"}
{
"_index": "customer",
"_type": "_doc",
"_id": "hIkkLGgBFVhvdLuiNNGD", ## id
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 3
}
ドキュメントの更新は新規作成と同じで、データを変更するか、
$ POST /customer/_doc/1/_update?pretty
{
"doc": { "name": "luke44", "age": 24 }
}
簡単なスクリプト更新を使用して、ここのctx.sourceは、変更されるドキュメントを指します.
$ POST /customer/_doc/1/_update?pretty
{
"script" : "ctx._source.age += 5"
}
クエリidが1のドキュメント
$ GET /customer/_doc/1?pretty
{
"_index": "customer",
"_type": "_doc",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"name": "luke"
}
}
ドキュメントの削除
$ DELETE /customer/_doc/2?pretty
一括操作、idが1と2のドキュメントを一括更新し、postmanでbodyが最後に1行空になる必要があることに注意します.
$ POST /customer/_doc/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "luke" }
{"index":{"_id":"2"}}
{"name": "php", "age": "20" }
idが1のドキュメントを更新し、idが2のドキュメントを削除します.
$ POST /customer/_doc/_bulk?pretty
{"update":{"_id":"1"}}
{"doc":{"name":"php best"}}
{"delete":{"_id":"2"}}
バッチ操作の1つが失敗した場合、他の操作は任意に実行され、終了時に実行順序に従ってステータスが返されます.
データの参照
仮想銀行の顧客アカウント情報データセットを準備します.このようなフォーマットのように、右クリックしてデータセットをダウンロードし、
accounts.json
として保存してください.{
"account_number": 0,
"balance": 16623,
"firstname": "Bradshaw",
"lastname": "Mckenzie",
"age": 29,
"gender": "F",
"address": "244 Columbus Place",
"employer": "Euron",
"email": "[email protected]",
"city": "Hobucken",
"state": "CO"
}
データセットのインポート
$ POST /bank/_doc/_bulk?pretty&refresh --data-binary "@accounts.json"
$ GET /_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open bank 3inMmuQzRqaTpMkzfh07_A 5 1 1000 0 95.9kb 95.9kb
yellow open customer gSRgPG9cScKHcuycJE2drw 5 1 2 0 7.7kb 7.7kb
match_allクエリー
URI検索を使用すると、
q=*
はすべて一致し、sort=account_number:asc
はaccount_number
昇順に配列されていることを示します.$ GET /bank/_search?q=*&sort=account_number:asc&pretty
{
"took" : 63, // ,
"timed_out" : false, //
"_shards" : { //
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : { //
"total" : 1000,
"max_score" : null,
"hits" : [ {
"_index" : "bank",
"_type" : "_doc",
"_id" : "0",
"sort": [0],
"_score" : null,
"_source" : {"account_number":0,"balance":16623,"firstname":"Bradshaw","lastname":"Mckenzie","age":29,"gender":"F","address":"244 Columbus Place","employer":"Euron","email":"[email protected]","city":"Hobucken","state":"CO"}
}, {
"_index" : "bank",
"_type" : "_doc",
"_id" : "1",
"sort": [1],
"_score" : null,
"_source" : {"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"[email protected]","city":"Brogan","state":"IL"}
}, ...
]
}
}
jsonリクエストボディ検索を使用して、上記と同じ効果を取得します.
$ GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
結果バーの数をsizeとfromで制限し、mysqlのlimitとfromに似ています.使用_sourceクエリー指定フィールド
$ GET /bank/_search
{
"query": { "match_all": {} },
"sort": { "balance": { "order": "desc" } },
"from": 10,
"size": 15, // 10
"_source": ["account_number", "balance"]
}
matchクエリー
クエリーaccount_numberが20のすべての口座
$ GET /bank/_search
{
"query": { "match": { "account_number": 20 } }
}
クエリーaddressに
mill
単語が含まれているすべてのアカウント$ GET /bank/_search
{
"query": { "match": { "address": "mill" } }
}
クエリーaddressに
mill
またはlane
単語が含まれているすべてのアカウント$ GET /bank/_search
{
"query": { "match": { "address": "mill lane" } }
}
match_phraseクエリー、matchの変種、クエリーaddressに
mill lane
を含むすべてのアカウント$ GET /bank/_search
{
"query": { "match_phrase": { "address": "mill lane" } }
}
boolクエリー
クエリーaddressには
mill
とlane
の単語を含むすべてのアカウントが含まれています.bool must
句は、ドキュメントを一致と見なすためにtrueでなければならないすべてのクエリーを指定します.$ GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
//"should": [...]
//"must_not": [...]
}
}
}
年齢が40歳で
ID
省に住んでいない顧客口座を検索する組み合わせ$ GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
boolフィルタ
残高が20000~30000(含む)の顧客アカウントの照会
$ GET /bank/_search
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}
Elasticsearchは簡単で複雑なツールです.以上、その基礎知識と、いくつかのREST APIを使用してそれを処理する方法を理解してから、もっと高度な知識点を徐々に理解します.
転載先:https://www.cnblogs.com/luke44/p/elasticsearch-doc.html