elasticsearch的簡單使用

2021-10-21 06:51:14 字數 2992 閱讀 7080

elasticsearch如何像mysql一樣進行簡單的增刪改查等操作呢?

customer即為索引(對應mysql資料庫)

external為型別(對應mysql資料庫資料庫中的表)

1為id(資料庫表中的id)

1

如圖,put請求,在攜帶id的情況下,多次發起請求,他會覆蓋之前的id值,多次發起請求後,_version版本號會不斷疊加;

//post請求

如圖,已post方式發請求時,如果不指定id,它會幫我們自動生成id

//delete請求

1

put請求或者post請求

樂觀鎖修改:

每修改一次,_seq_no就會自動疊加,導致其他請求必須重新查一次_seq_no,拿到正確的_seq_no,才能完成修改

_primary_term:主分片重新分配,如重啟就會發生變化

//put請求

1?_seq_no=

1&if_primary_term=

1

帶上_update就修改主體就必須帶上doc,這兩種寫法的區別是: 帶doc的首先會判斷該條資料內容是否與修改的內容一致,若一致,則不做任何操作 (與原來資料進行對比)

//post請求

post customer/external/

1/_update

}//而這種不會對比原來資料,直接發請求修改

post customer/external/

1}

//get請求

1

post /customer/external/_bulk}}

took:執行這些操作所花的世界

errors:false,這些操作全部成功

items:每條記錄的執行狀態

es支援2中方式得檢索

rest request url 傳送搜尋引數(url+搜尋引數)

//q=*: 查詢bank索引下的所有資料

//sort=account_number:asc查出資料按照account_number進行公升序拍列

es官方文件

具體各個屬性的作用參考官方文件

測試資料

以下**均以測試資料為基礎!

2. rest request body(url+請求體)

//query:查詢條件

//sort:排序條件

get /bank/_search},

"sort":[

,],"from":10

,//從第10條記錄開始查詢

"size":10

,//查10條記錄

"_source":[

"balance"

,"firstname"

]//返回的字段

}

匹配查詢(match)

全文檢索用match,非全文檢索用term

//精確查詢

get /bank/_search}}

//模糊查詢

}}

使用match後我們變可以看到最大得分這個屬性有值了!

模糊查詢時,得分就不一樣了!查詢結果也會按評分由高到低進行排序.

匹配查詢(match_phrase短語匹配 )

get /bank/_search

}}

多欄位匹配

//查詢"address","city"中包含"mill"的記錄

get /bank/_search

}}

復合查詢

get /bank/_search}]

,"must_not":[

}]}}

}

filter與match類似,但filter不會疊加相關性得分!

更多高階查詢請看es官方文件

Elasticsearch 極簡入門

考慮到阿里雲 elasticsearch 使用 6.7.x 版本,本小節我們基於 6.7.2 版本進行安裝部署。前置準備 1 安裝 jdk 2 修改 etc security limits.conf,在此配置中增加以下內容。如果伺服器已經配置好,可以不用重複配置。需要在 root 下執行。root ...

ElasticSearch的工作機制

elasticsearch,和solr一樣,是底層基於apache lucene,且具備高可靠性的企業級搜尋引擎。elasticsearch中的一些概念其實和關係型資料庫都有對應關係,比如資料庫在es中被稱為索引,表在es中被稱作type。具體對應關係見下表。elasticsearch中的repli...

ElasticSearch的工作機制

elasticsearch,和solr一樣,是底層基於apache lucene,且具備高可靠性的企業級搜尋引擎。elasticsearch中的一些概念其實和關係型資料庫都有對應關係,比如資料庫在es中被稱為索引,表在es中被稱作type。具體對應關係見下表。elasticsearch中的repli...