Elasticのelasticsearch基本操作

1. 基本コンセプト

Elasticsearch も Lucene をベースにした全文検索ライブラリであり、その本質はデータを格納することであり、多くの概念は MySQL に似ています。

比較関係:

インデックス (インデックス) --------------------- データベース データベースの
  種類 (タイプ) ------------------ - -------テーブル データ テーブル [7.x 廃止]
    ドキュメント (Document)----------------------行行
        フィールド (Field)- - -----------------------Columns カラム

Elasticsearch 自体は分散されているため、ノードが 1 つしかない場合でも、Elasticsearch はデフォルトでデータの断片化とコピー操作を実行します. クラスターに新しいデータを追加すると、データは新しく追加されたクラスターにも配置されます.ノードはバランスが取れています。

2.インデックス操作

1. クエリ インデックス

es で使用可能なインデックス ライブラリを確認します(mysql データベースと同様) : GET /_cat/indices?v

# es默认对中文的分词 支持不友好,它认为一个字代表一个词
# 查看es的分词方式
GET _analyze
{
  "text": ["我是中国人"]
}
{
  "text": "我爱你你爱我"
}

# 给es配置中文分词器:ik分词器
# 指定ik分词器分词:ik_smart粗粒度分词
#                   ik_max_word细粒度分词
GET _analyze
{
  "text": "咖喱人,鸡你太美,你这个老六",
  "analyzer": "ik_max_word"
}

es には、デフォルトで .kibana および .kibana_task_manager という名前のインデックスがあります。

フィールド名 意味
健康

緑 (クラスター完了)

黄色 (単一点法線、クラスターが不完全)

赤(一点は正常ではありません)

スターテス 使用できますか
索引 索引名
uuid インデックス背番号
マスターノードの数
担当者 スレーブノードの数
docs.count ドキュメント数
docs.deleted 削除された文書の数
store.size 全体のフットプリント
pri.store.size マスターノードのアカウント

2. インデックスを作成する

PUT /インデックス名

オプションのパラメーター: シャードとコピーを指定します。デフォルトのシャードは 3、コピーは 2 です。

PUT /liush
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 3
  }
}

3. インデックスの固有情報を表示する

GET /インデックス名

4. 索引を削除する

DELETE /index ライブラリ名

3. マッピング構成 (_mapping)

インデックスの次のステップは、データを追加することです。ただし、データを追加する前にマッピングを定義する必要があります。

マッピングとは

マッピングとは、ドキュメントを定義するプロセスであり、ドキュメントに含まれるフィールド、これらのフィールドが保存されているかどうか、索引付けされているか、単語のセグメント化されているかなどです。

構成が明確な場合にのみ、Elasticsearch はインデックス ライブラリの作成に役立ちます (必ずしもそうとは限りません)。

1. マッピング フィールドを作成する

PUT /index library name/_mapping
{   "properties": {     "field name": {       "type": "type",       "index": true,       "store": true,       "analyzer": "word breaker"     }   } }








フィールド名: 列名と同様に、プロパティで多くのフィールドを指定できます。

各フィールドには、多くの属性を含めることができます。例えば:

  • type:型,String(テキストキーワード) Numeric(long integer float double) date boolean

  • index: インデックスを作成するかどうか、デフォルトは true

  • store: 保存するかどうか、デフォルトは false です。false の場合でも _source に保存されます。true の場合は追加のコピーが保存されます。

  • アナライザー: ワード ブレーカー、ここでは ik ワード ブレーカーを使用:またはik_max_wordik_smart

PUT /liush
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 3
  }
}

POST /liush/_mapping
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "images":{
      "type": "keyword",
      "index": "false"
    },
    "price": {
      "type": "long"
    }
  }
}

2. マッピング関係を表示する

構文: GET /index ライブラリ名/_mapping

4. 新規文書(ドキュメント)

インデックス、タイプ、およびマッピングを使用して、ドキュメントを追加、削除、変更、およびクエリできます。

1. 基本的なゲームプレイ

自分で追加するときに id を指定したい場合は、次のようにします。

POST /index ライブラリ名/_doc/id 値
{     ... }

POST /liush/_doc/1
{
  "title": "小米手机",
  "images": "http://xiaomi.com/xiaomi.igp",
  "price":2999
}

GET /liush/_search

2. 知的な判断

実際、Elasticsearch は非常にスマートで、インデックス ライブラリにマッピングを設定する必要はなく、入力したデータに応じて型を判断し、データ マッピングを動的に追加することもできます。

POST /liush/_doc/2
{
    "title":"小米手机",
    "images":"http://image.jd.com/12479122.jpg",
    "price":2899,
    "stock": 200,
    "saleable":true,
    "attr": {
        "category": "手机",
        "brand": "小米"
    }
}

さらに、販売可能な商品が棚にあるかどうか、および属性のその他の属性の在庫のフィールドをいくつか追加しました。 

stock、saleable、および attr がすべて正常にマッピングされました。

文字列型のデータの場合、テキスト+キーワードの2種類が追加されます。上記のカテゴリーとブランドの例のように

5. データを削除する

削除は DELETE リクエストを使用します. 同様に、ID に従って削除する必要があります:

構文: DELETE /index ライブラリ名/_doc/id 値
例: DELETE /liush/_doc/2

6. ドキュメントの更新

構文:
POST /index ライブラリ名/_update/id 値
{     doc:{         "属性":"値"     } }



POST /liush/_update/1
{
  "doc": {
    "title":"aaa"
  }
}

おすすめ

転載: blog.csdn.net/qq_45037155/article/details/129696147