Elasticsearchが飛んでみよう - パフォーマンスの最適化の実践ドライ

0、碑文

究極の目標のElasticsearchパフォーマンスの最適化:クールなユーザー体験。

クールの定義 - よく知られている製品寧梁は、かつて人々が喜びの状態と呼ばれて会うとき、人が不快に満足されることはありません、それは中を見た人は、一度に即座に満足を得れば模索し始めます」、と述べました。この気持ちはクールです!」

Elasticsearchクールなポイントは次のとおりです。速く、正確かつ完全な!

などElasticsearchのパフォーマンスの最適化、アリ、テンセント、Jingdongは、Ctripの、ディディ、58、についての詳細な実用的な作業の多くを持っていた、非常に良い参考です。この双Elasticsearchベース思考の電車のための記事、およびパフォーマンスの最適化に関連する議論。

1、クラスタの計画と最適化の実践

データプランの目標量に基づいて1.1クラスタ

早期の事業では、頻繁にSSDために、いくつかのクラスタのノード、メモリ、どのくらいのCP​​U、またはしないように、質問をしましたか?

考慮すべき主なポイントは以下のとおりです。データ・ストレージの量は、あなたの目標はどのくらいですか?逆推力装置のノード番号を標的とすることができるデータの量。

バッファ容量はさておき1.2を設定します

注:Elasticsearch警告レベル3のライン、ディスク使用率が85%、90%、95%に達します。

異なる行が異なる警報レベル緊急対応戦略を持っています。

あなたが望む選択を含むこのポイント、ディスク容量計画、。85%の制御下で合理的です。

もちろん、それはまた、設定によって調整することができます。

1.3 ESクラスタノードと他のビジネス機能は、マシンを再利用しないようにしてください。

メモリが非常に大きい場合を除き。

例:普通のサーバは、メモリやその他の問題のうち、バインド業務データ、大量の後には、MySQL +のRedisのES +をインストールします。

SSDディスク1.4を選択するようにしてください

Elasticsearch公式文書には、確かに、アカウントの費用の理由を考慮して、SSDをお勧めします。これは、ビジネス・シナリオの組み合わせを必要とし、

ビジネスは書くためにならば、あなたは、検索レート要件の高いレートを持つSSDディスクを使用することをお勧めします。

アリのビジネスシーンでは、SSDディスクは機械的なハードディスクのレートよりも5倍高速昇進しました。

しかし、ビジネスシーンに別のが原因。

1.5メモリ構成が合理的であると

公式推奨:ヒープメモリのサイズは、公式のアドバイスがあるさ:最小(32ギガバイト、インストールRAM / 2)。

Medclと木が明確に叔父がとても大きく32/31ギガバイトを提供するために必要な、と言われて、それが推奨されます:熱データセット:26ギガバイト、寒データ:31ギガバイト

全体のメモリサイズには特定の要件ではありませんが、それは確かに大きいコンテンツ、より良い検索性能です。

参照のための経験:200ギガバイト+ビジネスシナリオ増分データ、一日あたりのメモリのサーバーべき少なくとも64ギガバイト

JVMに加えて、メモリは十分なものでなければならない、またはだろうしばしばOOM禁じます。

1.6 CPUコア数が小さすぎではありません

そして、CPUコアの数は、ESThreadプールが関連付けられています。そして、書き、関連する検索性能を持っています。

推奨事項:16の+核。

1.7スーパーミドル級のビジネスシナリオ、クラスタ間の取得を検討

滴、CtripのPB +のビジネスシナリオ、または基本的にクラスタ全体で取得する必要はありません:順序のような非常に大きなビジネス、されていない限り。

1.8ないクラスタノードの奇数

ES内部クラスタ通信を維持する、分散配備機構の飼育係に基づいていない、そのため、奇数。

効果的にスプリットブレインを回避するために、候補マスタノード/ 2 + 1の数、ただしに設定する値はdiscovery.zen.minimum_master_nodes。

1.9最適化配信ノードタイプ

クラスタノード<= 3は、推奨される:真、データ:真のすべては、マスターノード。両方のマスター・ノードは、ノードルーティングされます。クラスタノード:> 3、必要なビジネスシナリオに基づいては、それが推奨されます:マスターノード/ルーティングノードの段階的な独立性とコーディネート。

1.10は、ホットとコールドデータの分離することをお勧めします

熱データ記憶SSDと機械的ディスク通常の履歴データ格納、検索効率が物理的に改善します。

2、インデックスの最適化の実践

サブライブラリーサブテーブルにMySQLおよびその他のリレーショナルデータベース。Elasticserachはその後も考慮しなければなりません。

どのように多くのインデックス2.1を設定しますか?

ビジネスシナリオに基づく推奨ストレージ。

サブチャネルインデックスストレージに異なる種類のデータ。例:収集された情報を格納するために、ほぼほとんど知らインデックスを知っている; APP APPは、情報がインデックスに格納されて回収されます。

どのように多くのスライス2.2セット?

データの量を測定することを推奨。

経験は:各断片のサイズは30ギガバイトを超えてはならないことをお勧めします。

セットプレーの2.3数?

クラスタ内のノードの数の推奨サイズ、スライスの数が推奨さ> =クラスタ・ノードの数。

5ノードのクラスタは、5つのフラグメンテーションがより合理的です。

注意:操作のインデックスを再作成なければ、フラグメントは、改正することができません。

設定のコピーの2.4数?

銀行システム:システムの頑健性は、次のような異常に高い要件を、持っていない限り。2つ以上のコピーを考えてみましょう。

それ以外の場合は、十分なコピー。

注:コピー数は構成することにより、いつでも変更することができます。

2.5次のインデックスに複数の種類を作成しないでください

あなたは5.Xバージョンであっても、将来のバージョンではスケーラビリティをたどるへのアップグレードを検討してください。

推奨事項:インデックスはタイプに対応しています。6.xの対応するデフォルト_DOC、あなたが直接、統一されたドキュメントを対応入力5.xの。

日付別2.6計画の指標

業務量の増加、およびデータの量によって単一のインデックスは、著名な矛盾に急増しました。

インデックス日付計画によると、不可避な選択です。

メリット1:秒を削除履歴データを達成することができます。あなたは、インデックスの履歴を削除することができます。注意:インデックスがdelete_by_query + force_merge操作を必要とする場合、遅くて不完全な削除。

メリット2:簡単に最近ではホット&コールドデータ管理、データ検索を分離するために、高速の直接物理的な力で指定したインデックスに対応する日付!

操作参考:テンプレート+ロールオーバーAPIを使用。

2.7エイリアスを使用してください

ESインデックス名のMySQLの尊敬を変更しません。エイリアスは、比較的柔軟なオプションです。

3.データモデルの最適化の実践

3.1デフォルトのマッピングを使用しないでください

マッピングは、自動識別システムのデフォルトのフィールドタイプです。前記デフォルトに文字列タイプ:テキストとキーワードタイプ。あなたのビジネスは、セグメンテーション、検索を必要としない場合は、唯一の完全一致が必要とされ、それだけで、キーワードを設定することができます。

浮動小数点オプション:ビジネスは、スペースを節約し、精度を向上させる、などでしょう、に基づいて適切なタイプを選択する必要があります。

3.2選択プロセスのフィールドをマッピング

Elasticsearchが飛んでみよう - パフォーマンスの最適化の実践ドライ

 

3.3右のワードブレーカを選択

一般的なオープンソースの中国語の単語が含まれています:IKのトークナイザ、ansjトークナイザ、hanlpワード、口ごもるワード、大規模なトークナイザ、「ElasticSearch最も完全なワードコンパレータおよび使用方法」を、コントラストを参照して検索します。

あなたはIKを選択した場合、我々はik_max_wordをお勧めします。なぜなら:きめ細かいik_smartの粗粒の基本的な結果の結果を含む単語。

3.4日付、長い、またはキーワード

あなたがタイムラインに基づいて分析を行う必要がある場合は、ビジネスニーズに応じて、あなたがタイプとデートしなければなりません。

あなたが第2のレベルにのみ返却が必要な場合は、キーワードを使用することをお勧めします。

図4に示すように、データが実際に最適化するように書かれています

4.1秒の応答かどうか?

本当の本質に近いElasticsearchは次のとおりです。データを書き込ん最速1秒を照会することができます。

1秒にREFRESH_INTERVALセットは、セグメントの多くを生成するためにバインドされている場合、検索のパフォーマンスが影響を受けることになります。

したがって、非リアルタイム転送大きなシーンが30代に設定することができ、さらには-1。

書き込み性能を向上させるためにコピーを減らすために4.2。

書き込む前に、コピー数が0に設定されています、

書き込み後、コピーの数が元の値に設定されています。

4.3バッチは、単一を書き込むことはできません

キューのサイズを結合するバッチ・インターフェース・バルク、バッチサイズ、キューサイズとCPUコアの数とマシンのスレッドプールサイズ。

4.4スワップを無効にします

Linuxシステムでは、一時的に交流を無効にするには、次のコマンドを実行して:

1sudoするswapoff -a

 

図5に示すように、実際の検索最適化重合

5.1ワイルドカードファジーマッチを無効にします

データより高い結核+を達成するための後、ワイルドカードは、マルチフィールドの組合せの場合に妨害する傾向があり、さらにはダウンしているクラスタノードの崩壊につながります。

結果は悲惨である可能性があります。

別の方法:

スキーム一つ:高精度ソリューションの要件:2枚のトークナイザmatch_phrase検索を使用して、標準およびIKを結合、結合。

オプション2:match_phraseとスロップ組み合わせたクエリによって、IK単語提案:以下厳しいの精度の代替のために。

試合マッチを使用して5.2非常に少ない確率

中国の試合の試合結果は明らかに不正確です。ビッグビジネスシナリオは、フレーズ一致「match_phrase」を使用します。

合理的な単語辞書、シソーラスと組み合わせて、検索結果がノイズデータを避けるために、より高い精度を行いますmatch_phrase。

5.3バインディングビジネスシナリオ、フィルタを使用してフィルタの数が多いです

関連性スコアシーンを計算を使用しないため、間違いなくフィルタ・キャッシング機構は、高速検索を行いません。

例:ZIPコード番号をフィルタリングします。

5.4結果と戻り、フィールドをコントロールします

そして、事業開発などのMySQLのクエリは、選択*操作はほとんど必要ありません。

同様に、ESで、フィールド全体を返す_SOURCEすることは非必須です。

_sourceリターンでフィールドを制御するには、唯一のビジネス関連のフィールドを返します。

Webページのテキストコンテンツ、ページのスナップショットは、ビジネスでおそらく設計上の欠陥バルク戻り、同様のフィールドをhtml_content。

明らかに、集計フィールドではなく、傍受処理後コンテンツを問い合わせるので、事前に記述する必要があります。

5.5ページング深クエリとトラバーサル

ページングクエリは使用しています:+サイズから。

使用したトラバーサル:スクロール;

使用して並列トラバーサル:スクロール+スライス。

業務用の裁量のコレクションの選択。

5.6サイズの重合の合理的なセット

重合結果は不正確です。あなたのサイズを設定しない限り、それ以外の場合は重合の結果は、各スライストップ要素の大きさのために統合されソートされた値を取ることです、32乗-1に2です。

実際のビジネスシナリオは、正確なフィードバックの結果は、に注意を払う必要があります必要があります。

重合結果の全額を取得しないようにしてください - 取るのTopN重合結果の値は、ビジネス・レベルから非常に合理的です。それが本当に意味することにより、結果値の一種ではありませんので。

合理的な重合タブを達成するために5.7

重合結果を表示すると、重合ページング後の問題に直面するためにバインドされ、そしてES公式のパフォーマンス上の理由は、集約ページをサポートしていません。

あなたはページの後に集約する必要がある場合、我々は、自己実現を開発する必要があります。含むがこれらに限定されません:

プログラム:重合の結果を取るには、ページメモリのリターンを得ました。

オプションII:達成バインディングコレクションRedisの後にスクロールスクロール。

6、ビジネスの最適化

Elasticsearchはそれが得意で何をやってみましょう、逆インデックスに基づいて検索で優れていることは明らかです。

運用レベルでは、ユーザが心配ではなく、操作の束「と標準化を書式設定、フィールド処理」の途中で、早く彼らが望むような結果を見たいです。

Elasticsearchより効率的な検索候補を作成するには:

1)「前戯」のために働きます

抽出フィールド、方位解析、分類/クラスタリング、ESを書く前に、ETLステージ上の相関決定。

2)「寝服」プロダクトマネージャー

ビジネスシナリオの素晴らしい様々な、さまざまなに基づいて、プロダクトマネージャーは、不当な要求に言及することがあります。

する技術として、「理由でそれらを啓発愛情を知らせる、」検索エンジンは、Elasticsearch原理は、彼らが実際にある、何ができるかを理解するためにプロダクトマネージャーを説明し、「彼の妾を行うことはできません。」

7まとめ

実際のビジネス開発、企業は一般的に、馬が食べることができないたく必要速い馬を実行したいです。

Elasticsearch開発のための十分なハードウェアリソース(CPU、メモリ、ディスクがいっぱいです)の性能を向上させるためにほとんどない方法です。

重合を取得することに加えて、「弾性それのように遅く、ないよう速い。」ElasticsearchはNより関連、無関係な仕事をしてから結論付けてみましょう

あなたは同様のシナリオがある場合は気にして出てきますか?

ハードウェアリソースが比較的NBある提供し、すべての準備作業を取る、Elasticsearch進行する光を聞かせて、私はあなたがElasticsearchも飛ぶだろうと信じて!

おすすめ

転載: www.cnblogs.com/CQqf2019/p/11229964.html