私たちは、つまり、インデックスはMySQLデータベースに相当し、Elasticsearchデータをインデックスに格納され、前に述べました。最も基本的な概念です。今日は、インデックスにいくつかの一般的な操作を共有しています。
インデックスを作成します
curl -X PUT "localhost:9200/jackey?pretty"
上記の方法を使用してインデックスを作成するためのPUTリクエストが新しいインデックスの最も単純であるES、加えて、あなたも指定できます。
- 設定
- マッピング
- エイリアス
インデックス名は、次の制限があります。
- 小文字でなければなりません
- 含めることはできません:
\
、/
、*
、?
、"
、<
、>
、|
、 `(空格),
、,
#` - ES7.0前のインデックス名にコロンが含まれていてもよいが、以下の7.0をサポートしていません。
- ことはできない
-
、_
と+
始まります - することはできません
.
か..
- 長さが255バイトを超えることはできません。
サポートリクエストのいくつかのパラメータは次のとおりです。
- wait_for_active_shards:フラグメントの継続回数がアクティブ状態でなければならない前に、デフォルトは1であり、全てまたは片の任意の数を設けることができる総合スコアの正の整数より大きくありません
- タイムアウト:応答のタイムアウト間隔を設定するには、デフォルトは30秒です
- master_timeout:応答タイムアウトにマスターノードを接続すると、デフォルトは30秒です
あなたは、インデックスを作成するときに、我々は前述の3つの属性を指定することができ、これらの3つの属性は、体内に配置する必要があります。
エイリアス
インデックスのエイリアスは、エイリアスは複数のインデックスに割り当てることができます。
インデックスは、他のは、既存の方法を更新し、インデックスを増加させることであり、体内の別名を増加させたときの別名からのインデックスへの道は、2があり、1が作成されます。
一つの方法:
curl -X PUT "localhost:9200/jackey?pretty" -H 'Content-Type: application/json' -d'
{
"aliases" : {
"alias_1" : {},
"alias_2" : {
"filter" : {
"term" : {"user" : "kimchy" }
},
"routing" : "kimchy"
}
}
}
'
第二の方法:
curl -X POST "localhost:9200/_aliases?pretty" -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "add" : { "index" : "jackey", "alias" : "alias1" } }
]
}
'
ように、我々は身体に残っているフィルタとルーティングを高めます。これは主に条件の別名を指定するために使用されます。alias_2て、フィルタを指定した後、あなただけのユーザーがドキュメントkimchyでアクセスすることができます。およびルーティングの値は、指定されたalias_2スライスに、すなわち唯一のルート、ルートに使用されます。また、ここで説明するのはあまりをしない、彼らは類似しており、ルーティングされ、そこindex_routingとsearch_routingされています。より重要な属性は、このプロパティはデフォルトでfalse is_write_indexですあり、trueに設定されている場合、インデックスは別名によって書き込み可能であることを示し、デフォルトでは、ソフトリンクとしてエイリアスが元のインデックスを変更することはできません。
また、ワイルドカードは同じエイリアスによって指標の複数としても使用することができます
curl -X POST "localhost:9200/_aliases?pretty" -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "add" : { "index" : "test*", "alias" : "all_test_indices" } }
]
}
'
追加に加えて、削除もエイリアスを削除するために使用することができます
curl -X POST "localhost:9200/_aliases?pretty" -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "remove" : { "index" : "test1", "alias" : "alias1" } }
]
}
'
設定
例を見てください:
curl -X PUT "localhost:9200/twitter?pretty" -H 'Content-Type: application/json' -d'
{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
}
'
インデックスは、静的および動的な設定に分割されています。静的またはインデックスが設定され、閉じたときにのみ作成することができます。あなたは、リアルタイムで動的に更新インデックスの設定のAPI設定を使用することができます。上記の例では、静的なセットをnumber_of_shards、number_of_replicas動的集合です。
設定インデックスが公式文書に設定することができインデックスモジュールが参照、ここで私は、私はより多くの重要な導入を考えて、いくつかをピックアップします。
静的なスタートを開始します。
- index.number_of_shards:インデックスを作成するときにインデックスを指定したフラグメントの数だけ設定することができます。デフォルトは1で、最大値は1024に設定することができます。これはセキュリティ上の配慮のための安全装置です。「 - Des.index.max_number_of_shards = 128システム変数輸出ES_JAVA_OPTS =の最大値を設定することによって制御することができます 」
- index.routing_partition_size:ルーティングできる断片の数、同じインデックスを作成が指定された場合にのみ、デフォルト値(値がnumber_of_shards 1ない限り)1。この値はnumber_of_shards未満でなければなりませんで
動的な設定:
- index.number_of_replicas:各スライスの部数、デフォルト1
- index.auto_expand_replicas:コピーの数に基づいて、データノードが自動的にfalseで、デフォルトでは、拡張することができます。例えば、「0-5」のように、短期で区切って、範囲に設定することができ、それはまた、すべてに設定することができます。コピーの自動拡張が他の割り当て規則を考慮していないことに留意すべきです。クラスタの状態を引き起こすことがありますが、これは黄色に変わります
- index.search.idle.after:フラグメントはアイドル検索要求や検索の時間の前に受信されないと考えられています。30秒デフォルト。
- index.refresh_interval:実行の動作周波数を更新し、デフォルトは1秒です。リフレッシュされないことを意味-1に設定されている場合。明示的に設定されていない場合は、バックグラウンドのリフレッシュスライスは、少なくともindex.search.idle.after秒前に検索要求内に受信されません
- index.max_result_window:返される結果の最大数は、デフォルトでは10000(1万)です。検索返された結果メモリと時間がの値によって制限されています
- index.routing.rebalance.enable:自己均衡スライスを許可するかどうか。デフォルトでは、すべてのフラグメントのリバランスを許可し、すべてのです。また、予備選挙、唯一のプライマリスライスのリバランスとして提供することができます。リバランススライスからレプリカのみ。なしの断片化は、再バランスをすることはできません。
静的および動的な設定を設定し、上記に加えて、設定はまた、いくつかの詳細を行うこと等単語、のようないくつかの他の値は、将来の米国のものを設定することができます。
マッピング
curl -X PUT "localhost:9200/test?pretty" -H 'Content-Type: application/json' -d'
{
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"properties" : {
"field1" : { "type" : "text" }
}
}
}
'
マッピングは、主にElasticsearchは、各ドメイン内のデータの種類を理解するために使用されています。マッピング定義の前に7.0.0は、通常タイプの名前が含まれています。シンプルなデータ比較コアタイプが含まれている複数のデータ型をサポートしElasticsearch:
- 文字列:テキストとキーワード
- 整数:長いバイト、ショート、整数、
- フロート:float型、ダブル
- ブール:ブール
- 日付:日付
他のタイプは、将来的にはより詳細な紹介を行います。
インデックスの削除
DELETE要求を使用してインデックスを削除します。
curl -X DELETE "localhost:9200/jackey?pretty"
あなたは、複数のインデックスを削除する必要がカンマで区切ることができたときにも、ワイルドカードを使用でき、パス内の特定のインデックスを指定することができます。あなたは、インデックスのすべてを削除したい場合は、(行わない)_allまたは*のインデックスを指定することができます。本番環境では、我々は真action.destructive_requires_name設定ファイルでelasticsearch.ymlでこれらの危険な操作を禁止します。
サポートされるパラメータは以下の通りの操作を削除します。
- allow_no_indices trueに設定すると、エラーなしで、_allワイルドカードまたはインデックスと一致しません。
- expand_wildcards:ワイルドカード型のインデックスを制御するために拡張することができます。すべて:それはすべてのインデックスに拡張することができます。オープン:オープンは唯一のインデックスに拡張すること。クローズ:インデックスのみをシャットダウンするように拡張します。どれも:ワイルドカード表現を受け入れません。デフォルトでは、開いています
- ignore_unavailable:trueに設定すると、インデックスが存在しないか、またはリターンを閉じません。デフォルトはfalseです
- タイムアウトは:返される応答を待つ最大時間を指定します。デフォルトは30秒です
- master_timeout:応答タイムアウトにマスターノードを接続すると、デフォルトは30秒です
オープン/クローズ指数
我々はすでにオープン/クローズのインデックスを述べました。インデックスは、それはデータのみを保持するために使用され、ほとんど何もすることはできません閉じられています。開閉インデックスは通常、断片化の効果を再起動する作業が必要です。次のように具体的な動作は以下のとおりです。
curl -X POST "localhost:9200/jackey/_open?pretty"
curl -X POST "localhost:9200/jackey/_close?pretty"
サポートされているパラメータは次のとおりです。
- allow_no_indices
- expand_wildcards
- ignore_unavailable
- wait_for_active_shards
- タイムアウト
- master_timeout
これらのパラメータの前には導入されています。私はここでそれらを繰り返すことはしません。
スプリットインデックス
より多くのデータとして、我々は需要インデックスを分割する必要があり、ESのおかげで私たちのために便利を提供します。
curl -X POST "localhost:9200/twitter/_split/split-twitter-index?pretty" -H 'Content-Type: application/json' -d'
{
"settings": {
"index.number_of_shards": 2
}
}
'
インデックスを分割する前に、インデックスは読み取り専用であることと、クラスタの健康状態が緑色であることを確認します。読み取り専用の方法が提供されます。
curl -X PUT "localhost:9200/my_source_index/_settings?pretty" -H 'Content-Type: application/json' -d'
{
"settings": {
"index.blocks.write": true
}
}
'
具体的な動作は、スプリット指標であります:
- ソースインデックス、及び同じターゲットインデックスを作成し、メインソースインデックスは、スライスよりも大きいです
- ソースからターゲット・インデックス・インデックスにハードリンクを確立
- 下のインデックスを作成した後、その後、文書は、ハッシュ演算を行います。これは、文書が別のスライスに属する削除することです
- 復旧対象のインデックス、インデックスは同じようにリニューアルオープン閉鎖します
概要
ここで紹介する最初のインデックスの使用について。多くの欠陥は、今後追加していきます、があります。学生の詳細については見ることができます公式ドキュメントを。