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...