Elasticsearch10の基本的な要約演習

1. Elasticsearchとは何ですか?mysqlとの違い

Elasticsearchと
何ですか?Elasticsearchは、分散型、高性能、高可用性、スケーラブルな検索および分析システムです。
ElasticSearchはLuceneベースの検索サーバーです。RESTful Webインターフェースに基づいて、分散型マルチユーザー機能を備えた全文検索エンジンを提供します。ElasticsearchはJavaで開発され、Apacheライセンスの条件に基づいてオープンソースとしてリリースされ、人気のあるエンタープライズ検索エンジンです。クラウドコンピューティングで使用するように設計されており、リアルタイム検索、安定性、信頼性、高速性、およびインストールと使用の容易さを実現できます。
mysqlとの違い
Elasticsearch 概念は、リレーショナルデータベースと比較されます。
リレーショナルDB⇒データベース⇒テーブル⇒行 ⇒列
リレーショナルデータベースのデータベース・テーブルがランク
Elasticsearch⇒インデックスタイプ⇒⇒⇒ドキュメントフィールド
エルスドキュメントタイプのインデックスフィールド(フィールド)を
Elasticsearchで、すべてのデフォルトのフィールドがインデックスを構築されています。つまり、迅速なクエリのために、各フィールドには逆インデックスがあります。
esは、httpプロトコル(json形式)(ポート9200)、thrift、サーブレット、memcached、zeroMQおよびその他の伝送プロトコル(プラグインを介して統合)をサポートしています。従来のリレーショナルデータベースはサポートしていません。
esは、水平分割と拡張を容易にする断片化と複製をサポートし、複製は、esの高可用性と高スループットを保証します。

2. Elasticsearchのタイプは何ですか?

文字列型文字列、テキスト、キーワード

整数型integer、long、short、byte
浮動小数点型double、float、half_float、scaled_float
論理型boolean
日付型日付
範囲型範囲
バイナリ型バイナリ
配列型配列
オブジェクト型オブジェクト
ネスト型
ネスト型ネストネスト型
地理マップgeo_shape
IPタイプIP
範囲タイプの完了

トークンカウントタイプtoken_count
添付ファイルタイプ添付ファイル

抽出型パーコレーター

3. Elasticsearchでインデックスライブラリを作成する方法、インデックスライブラリを削除する方法、インデックスライブラリを表示する方法

インデックスライブラリを作成:
インデックスライブラリを配置{ "settings":{ "number_of_shards":3、"number_of_replicas":2 } } インデックスライブラリを削除インデックスライブラリ名を削除インデックスライブラリを表示:GET / heima / _search { "query":{ " match_all ":{} } }













4. Elasticsearchでマッピングを作成する方法、マッピングを表示する方法、マッピングを削除する方法

マッピングを作成します。
リクエストメソッドは引き続きPUT
タイプ名です。これは、データベース内のさまざまなテーブルのフィールド名と同様に、前述のタイプの概念です。任意に入力します。タイプを指定できます。タイプ:タイプ、テキスト、ロング、ショート、日付にすることができます、整数、オブジェクトなど。
インデックス:インデックスを作成するかどうか、デフォルトはtrue
ストア:ストアするかどうか、デフォルトはfalse
アナライザー:ワードセグメンター、ik_max_wordはikワードセグメンターを使用
PUT heima / _mapping / goods
{ "properties":{ "title": { 「タイプ」:「テキスト」、「アナライザー」:「ik_max_word」}、「画像」:{ 「タイプ」:「キーワード」、「インデックス」:「false」}、「価格」:{ 「タイプ」:「 float " } } } マッピングを削除:PUT / my_store / _mapping / products?pretty { " properties ":{ " price ":{ " type ":" long "




















}、
“ name”:{
“ type”:“ text”
}、
“ owner”:{ “ type”:“ nested”、“ properties”:{ “ name”:{ “ type”:“ text” }、“ age ”:{ “ type”:“ long” } } } } }











5. Elasticsearchがデータを挿入する方法、データを変更する方法、データを削除する方法

データの挿入:
POST / heima / goods /
{ "title": "Millet phone"、"images": "http://image.leyou.com/12479122.jpg"、"price":2699.00 } データの変更:PUT / heima / goods / 3 { "title": "Super rice phone"、"images": "http://image.leyou.com/12479122.jpg"、"price":3899.00、"stock":100、" saleable ":True } データの削除:DELETE / indexライブラリ名/タイプ名/ ID値














6. Elasticsearchの検索モードは何ですか、個別に紹介します

1.
すべての製品を検索するクエリ文字列検索:GET / ecommerce / product / _search
2. クエリDSL
DSL:特定のフィールドのドメイン指定言語、言語
3.
データをフィルターするクエリフィルター
4.全文検索
全文検索(全文検索)
5.フレーズ検索
フレーズ検索(フレーズ検索)
6.ハイライト検索
ハイライト検索(ハイライト検索結果)

7. Elasticsearchでの集約の意味、バケットの意味、測定の意味

バケットの役割は、データを特定の方法でグループ化することです。データの各グループは、ESではバケットと呼ばれます。
日付ヒストグラムの集計:日付ラダーに従ってグループ化されます。たとえば、ラダーが週として指定されている場合、週ごとに
ヒストグラムのグループに自動的に分割されます。集計:日付と同様に、数値ラダーに従ってグループ化されます。
用語集計:エントリのコンテンツに従ってグループ化され、エントリのコンテンツは
範囲の集合です。集計:値と日付の範囲がグループ化され、開始と終了を指定してから、セグメントごとにグループ化します。

8.集計クエリステートメントを記述して、その意味を説明してください

まず、車の色に合わせてバケットを分けます

GET /自動車/ _search
{ 「サイズ」:0、「aggs」:{ 「popular_colors」:{ 「という用語は」{ 「フィールド」:「色」} } } }








サイズ:クエリの数。ここでは0に設定されています。効率を向上させるために、検索結果は考慮せず、集計結果のみです。集計
:これは集計クエリであることを宣言します。これは集計の省略形です
。popular_colors:この集計に名前を付けます。任意。
用語:バケットを分割する方法、これは用語に応じ
たフィールドです:分割されたバケットのフィールド
ヒット:サイズを0に設定しているため、クエリ結果は空です
集計:集計の結果
Popular_Colors:
バケットを定義した集計の名前:見つかりましたバケット。それぞれ異なるカラーフィールド値がバケット
キーを形成します。このバケットに対応するカラーフィールドの値
doc_count:このバケット内のドキュメントの数

9.ネストされた集計クエリステートメントを記述し、その意味を説明してください

@Test
public void testSubAgg(){ NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder(); //結果はクエリしませんqueryBuilder.withSourceFilter(new FetchSourceFilter(new String [] {""}、null)); // 1. 新しいクエリを追加します集計、集計タイプは用語、集計名はブランド、集計フィールドはブランドqueryBuilder.addAggregation(AggregationBuilders.terms(“ brands”)。field(“ brand”). subAggregation(AggregationBuilders.avg(“ priceAvg”)。field(“ price”))//ブランド集約バケットでネストされた集約を実行して平均値を見つける); // 2.クエリの場合、結果をAggregatedPageタイプAggregatedPage aggPage =(AggregatedPage)this.itemRepository.search(queryBuilder.buildに強制する必要があります。()); // 3.解析// 3.1。結果からブランドという名前の集計を取り出します。//これは文字列型フィールドを使用した用語集計であるため、結果をStringTerm型に強制する必要があります













StringTerms agg =(StringTerms)aggPage.getAggregation( "brands");
// 3.2、バケットを取得
List <StringTerms.Bucket> buckets = agg.getBuckets();
// 3.3、
(StringTerms.Bucketバケット:バケット)を走査{ // 3.4。バケット内のキー、つまりブランド名3.5を取得し、バケット内のドキュメント数を取得しますSystem.out.println(bucket.getKeyAsString()+ "、total" + bucket.getDocCount()+ "台");

    // 3.6.获取子聚合结果:
    InternalAvg avg = (InternalAvg) bucket.getAggregations().asMap().get("priceAvg");
    System.out.println("平均售价:" + avg.getValue());
}

}

10. Elasticsearchのポート番号とは何ですか?kinbanaは何をしますか?

8080
9002
Kibana分词

おすすめ

転載: blog.csdn.net/zhang_yuanbai/article/details/108701773