Elastic Search 索引、文檔和映射的基本操作


1. ES索引的基礎操作

1.1 ES創建索引

對於關系型數據庫,創建索引就等同於創建數據庫。

在Postman中,向ES服務器發送put請求.

例如創建索引 http://127.0.0.1:9200/shopping

image-20211031171945603

1.2 查看索引

在Postman中,向ES服務器發送Get請求:http://127.0.0.1:9200/_cat/indices?v

image-20211031172603822

請求路徑中的_cat表示查看的意思,indices表示索引,所以整體含義就是查看當前ES服務器中的所有索引,類似於MySQL中的show tables的樣子。服務器的響應結果如下

image-20211031172746042

1.3 查看單一索引

在Postman中,向ES服務器發送Get請求: http://127.0.0.1:9200/shopping

image-20211031173840633

查看索引向ES服務器發送的的請求路徑和創建索引是一致的,但是HTTP方法不一致。

image-20211031173906350

1.4 刪除索引

在Postman中,向ES就請你發送Delete請求:htto://127.0.0.1:9200/shopping

image-20211031173308199

image-20211031173331872

在重新訪問索引時,服務器響應內容為:索引不存在

image-20211031173508824

image-20211031173541775

2. 文檔操作

文檔(_doc)可以類比為關系型數據庫中的表數據,添加的數據格式為JSON格式。

2.1 創建文檔

在Postman中,向ES集群發送post請求,http://127.0.0.1:9200/shopping/_doc

請求體內容為

{
    "title":"小米手機",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":3999.00
}

此處請求方式必須為POST,不能是Put,否則發生錯誤。

image-20211031175013716

image-20211031174944933

上面的數據創建后,由於沒有指定數據唯一性標識(ID),默認情況下,ES服務器會隨機生成一個。

如果想要自定義唯一性標識,需要在創建的時候指定: http://127.0.0.1:9200/shopping/_doc/1

image-20211031175439296

{
    "title":"華為手機",
    "category":"華為",
    "images":"http://www.gulixueyuan.com/hw.jpg",
    "price":4999.00
}	

image-20211031175421072

此處如果添加數據明確數據主鍵,那么請求方式是Put也是可以的

2.2 查看文檔(根據主鍵)

查看文檔時,需要指明文檔的唯一性標識,類似於MySQL中數據的主鍵查詢,在Postman中,向ES服務器發送Get請求,http://127.0.0.1:9200/shopping/_doc/1

image-20211031180213198

查詢成功后,服務器響應結果如下

image-20211031180252825

2.3 查看所有文檔

查看索引下包含的所有文檔信息。類似於 select *,向ES服務器中發送Get請求, http://127.0.0.1:9200/shopping/_search

image-20211031180454764

查詢成功后,服務器響應結果如下

image-20211031180557757

2.4 修改文檔

和新增文檔一樣,輸入相同的URL地址請求,如果請求體變化,會將原來的數據內容覆蓋。在Postman中,向ES服務器發送Post請求,http://127.0.0.1:9200/shopping/_doc/1

image-20211031181200551

{
"title":"華為手機",
"category":"華為", 
  "images":"http://www.gulixueyuan.com/hw.jpg", 
  "price":6999.00
}

修改成功后,服務器響應結果:

image-20211031181257764

2.5 修改某個字段

修改數據時,也可以只修改某一條給定數據的局部信息

在Postman中,向ES服務器發送POST請求,http://127.0.0.1:9200/shoppong/_update/1

請求內容為:

{
"doc": {
   "price":3000.00
  }
}

修改成功后,服務器響應結果

image-20211031181709100

根據唯一性標識,查詢文檔結構,可以發現,文檔數據已經更新。

image-20211031181820111

image-20211031181840476

2.6 刪除文檔

在ES中刪除一個文檔不會立即從磁盤中刪除,它只是被標記成已刪除(邏輯刪除)

在Postman中,向ES服務器發送DELETE請求:http://127.0.0.1:9200/shopping/_doc/1

image-20211031182329482

刪除成功后,服務器響應結果

image-20211031182401299

字段 說明
_version 版本(對數據的操作,都會更新版本)
result deleted表示數據被標記為刪除

刪除后再查詢當前文檔信息

image-20211031182436684

image-20211031182455514

2.7 條件刪除文檔

一般刪除數據都是根據文檔的唯一性標識進行刪除,實際操作中,也可以根據條件對多條數據進行刪除。

首先分別增加多條數據

image-20211031183007553

{
    "title":"小米手機",
    "category":"小米", 
    "images":"http://www.gulixueyuan.com/xm.jpg", 
    "price":4000.00
}

image-20211031183159684

{
    "title":"華為手機",
    "category":"華為", 
    "images":"http://www.gulixueyuan.com/hw.jpg", 
    "price":4000.00
}

向ES服務器中發送POST請求,http://127.0.0.1:9200/shopping/_delete_by_query

請求內容為

{
    "query": {
        "match": {
            "price": 4000.00
        }
    }
}

刪除成功后,服務器響應結果:

image-20211031183539838

字段 說明
took 耗時
timed_out 是否超時
total 總數
deleted 刪除數量

3文檔映射

索引庫(index)的映射,類似於數據庫(database)中的表結構(table)。創建數據庫表需要設置字段名稱,類型,長度,約束等信息;索引庫也一樣,需要知道這個類型下有哪些字段,每個字段有哪些約束信息,這就叫做映射(Mapping)。

3.1 創建映射

在Postman中,向ES服務器發Put請求,http://127.0.0.1:9200/shopping/_mapping

請求體內容為

{
    "properties": {
        "name": {
            "type": "text",
            "index": true
        },
        "sex": {
            "type": "text",
            "index": false
        },
        "age": {
            "type": "long",
            "index": false
        }
    }
}

服務器返回的響應結果如下

image-20211031185736083

映射數據說明:

  • 字段名:任意填寫。比如上面的name、sex、age

  • Type:類型,ElasticSearch中支持的數據類型非常豐富。

    • String類型。又可以分為兩種
      • text:可分詞
      • keyword:不可分詞,數據會作為完整字段進行匹配
    • Numerical:數值類型,分為兩大類
      • 基本數據類型: long、integer、short、byte、double、float、half_float
      • 浮點數的高精度類型:scaled_float
    • Date:日期類型
    • Array:數組類型
    • Object:對象
  • index:是否索引,默認是true,也就是說不進行任何配置,所有字段都會被索引

    • true:字段會被索引,則可以用來進行搜索
    • false:字段不會被索引,無法用來進行搜索
  • store:是否將數據進行獨立存儲,默認為false

    • 原始的文本會存儲在_source 里面,默認情況下其他提取出來的字段都不是獨立存儲 的,是從_source 里面提取出來的。當然你也可以獨立的存儲某個字段,只要設置 "store": true 即可,獲取獨立存儲的字段要比從_source 中解析快得多,但是也會占用 更多的空間,所以要根據實際業務需求來設置。
  • analyzer:分詞器,這里的ik_max_word即使用ik分詞器。

3.2 查看映射

在Postman中,向ES服務器發送Get請求,http://127.0.0.1:9200/shopping/_mapping

image-20211031190646909

服務器響應結果如下

image-20211031190721857

3.3 索引映射關聯

初始化索引,並創建索引中的字段對應的映射關系。

向ES服務器發送Put請求,http://127.0.0.1:9200/student

image-20211031191319052

{
    "settings": {},
    "mappings": {
        "properties": {
            "name": {
                "type": "text",
                "index": true
            },
            "sex": {
                "type": "text",
                "index": false
            },
            "age": {
                "type": "long",
                "index": false
            }
        }
    }
}
{
    "settings": {},
    "mappings": {
        "properties": {
            "name": {
                "type": "text",
                "index": true
            },
            "sex": {
                "type": "text",
                "index": false
            },
            "age": {
                "type": "long",
                "index": false
            }
        }
    }
}

服務器響應結果如下

image-20211031191343425


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM