1. 概述
之前聊了一下 Elasticsearch 的安裝,今天我們來說說 Elasticsearch 的基本使用。
2. Elasticsearch索引的使用
索引(index)相當於是mysql中的表。
2.1 建立索引
1)Head外掛方式
選擇 索引 頁籤,點選【新建索引】按鈕,輸入索引名稱、分片數、副本數,點選【OK】
之所以叢集健康值呈現黃色,是因為目前是用單伺服器跑的Elasticsearch,而副本是要儲存在不同的伺服器上的,之後會聊一下 Elasticsearch 叢集的搭建。
2)RESTFUL介面方式
PUT http://192.168.1.11:9200/index_user
引數:
{
"settings":{
"index":{
"number_of_shards":5, // 分片數
"number_of_replicas":0 // 副本數
}
}
}
2.2 檢視叢集健康狀況
RESTFUL介面方式
GET http://192.168.1.11:9200/_cluster/health
響應:
{
"cluster_name": "zhuifengren-es",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 6,
"active_shards": 6,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 5,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 54.54545454545454
}
2.3 刪除索引
1)Head外掛方式
在 概覽 頁籤,找到需要刪除的索引,選擇 動作 —> 刪除...
2)RESTFUL介面方式
DELETE http://192.168.1.11:9200/index_user
2.4 檢視叢集整體資訊
RESTFUL介面方式
GET http://192.168.1.11:9200/_cat/indices?v
響應:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .geoip_databases pE4IpIAeSA2AiJzdDdviYA 1 0 42 64 65.1mb 65.1mb
green open index_user 2z4cELBeQeijTagp86ShbQ 5 0 0 0 1kb 1kb
3. Elasticsearch對映的使用
對映(mapping)相當於是mysql中的表結構定義。
3.1 Elasticsearch中的主要資料型別
文字型別:text,keyword
整型:long,integer,short,byte
浮點型:double,float
布林型:boolean
日期型:date
物件型:object
3.2 建立索引並建立對映
RESTFUL介面方式
PUT http://192.168.1.11:9200/index_user
引數:
{
"settings":{
"index":{
"number_of_shards":5,
"number_of_replicas":0
}
},
"mappings" : {
"properties":{
"name":{
"type":"text", // 資料型別
"index":true // 是否索引
},
"loginName":{
"type":"keyword",
"index":false
},
"age":{
"type":"integer",
"index":false
}
}
}
}
3.3 在已有的索引上維護mapping
RESTFUL介面方式
POST http://192.168.1.11:9200/index_user/_mapping
引數:
{
"properties":{
"nickname":{
"type":"keyword",
"index":false
}
}
}
注意:mapping中的屬性,只能新增,不能修改。如果屬性設定需要變更,需要刪除索引重建。
3.4 檢視索引的分詞效果
RESTFUL介面方式
GET http://192.168.1.11:9200/index_user/_analyze
引數:
{
"field": "name",
"text": "lisa brown"
}
4. Elasticsearch文件的使用
文件(document)相當於是mysql中的資料行。
4.1 新增文件
RESTFUL介面方式
POST http://192.168.1.11:9200/index_user/_doc/1
注:url中最後的1是文件在Elasticsearch中的ID,與業務ID無關,如果不寫,則會自動生成一個隨機字串作為文件的ID
引數:
{
"name":"zhang san",
"loginName":"zs",
"age":30
}
如果沒有手動建立 對映(mapping),則新增文件後,Elasticsearch會根據文件的欄位型別自動建立 對映(mapping)。
4.2 刪除文件
RESTFUL介面方式
DELETE http://192.168.1.11:9200/index_user/_doc/1
4.3 修改文件
RESTFUL介面方式
1)只修改部分欄位
POST http://192.168.1.11:9200/index_user/_doc/1/_update
引數:
{
"doc":{
"name":"zhangsan2",
"age":33
}
}
2)全部替換
PUT http://192.168.1.11:9200/index_user/_doc/1
引數:
{
"name":"zhangsan",
"loginName":"zs",
"age":31
}
4.4 查詢文件
RESTFUL介面方式
1)依據文件ID查詢
GET http://192.168.1.11:9200/index_user/_doc/1
響應資料:
{
"_index": "index_user",
"_type": "_doc",
"_id": "1",
"_version": 5,
"_seq_no": 7,
"_primary_term": 1,
"found": true,
"_source": {
"name": "zhangsan",
"loginName": "zs",
"age": 31
}
}
2)查詢所有
GET http://192.168.1.11:9200/index_user/_doc/_search
響應資料:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "index_user",
"_type": "_doc",
"_id": "_TVW-XsBNDgg-BBCeUvY",
"_score": 1.0,
"_source": {
"name": "lisi",
"loginName": "ls",
"age": 31
}
},
{
"_index": "index_user",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"name": "zhangsan",
"loginName": "zs",
"age": 31
}
}
]
}
}
3)查詢時自定義結果集
GET http://192.168.1.11:9200/index_user/_doc/1?_source=name,age
GET http://192.168.1.11:9200/index_user/_doc/_search?_source=name,age
5. 綜述
今天簡單聊了一下 Elasticsearch 的基本使用,希望能對大家的工作有所幫助。
歡迎大家幫忙點贊、評論、加關注 :)
關注追風人聊Java,每天更新Java乾貨。