ES的RestFul風格
一種軟件架構風格,而不是標準,只是提供了一組設計原則和約束條件。它主要是用于客戶端和服務器交互類的軟件?;谶@個風格設計的軟件可以更加簡潔,更有層次,更易于實現(xiàn)緩存等機制。
一、基本Rest命令說明
_cat命令查看ES默認數(shù)據(jù)
獲得ES健康值
1、命令
GET _cat/health
對應的就是head可視化界面的下面的信息(換句話說,可視化工具也是不斷發(fā)送這個health命令,來回顯當前數(shù)據(jù)庫的健康值?。?br>
查看當前ES下的索引信息
1、命令
GET _cat/indices?v
索引和文檔的增刪改查
創(chuàng)建索引并設置文檔字段類型
1、命令
給索引(數(shù)據(jù)庫表),給表中的字段設置類型
PUT /索引
{
"mapping": {
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "long"
},
"birthday": {
"type": "date"
}
}
}
}
2、在head可視化工具中查看
3、獲得test01的信息
可以通過GET請求,獲得這個索引中的信息
(1)命令
(2)響應
4、拓展:如果我們沒有給我們的索引中的字段設置類型,那么ES會默認給相關的字段設置類型!
之前創(chuàng)建guihui 索引的時候沒設置字段的類型,我們通過GET命令查看一下字段的默認類型
創(chuàng)建索引/文檔
創(chuàng)建一個索引、類型和文檔,以及文檔中的內(nèi)容
(1)在kibana開發(fā)者工具中輸入命令
PUT 索引名/類型(快去掉了)/文檔id
{請求體}
第一次這個result就是created創(chuàng)建的意思
(2)進入到head可視化界面中,可以查看當前數(shù)據(jù)是否創(chuàng)建成功!
修改索引/文檔數(shù)據(jù)
方式一:(這種方式存在弊端,如果第二次更新的內(nèi)容少于原本存在的數(shù)據(jù),那么就會丟失掉那部分數(shù)據(jù)!所以慎用!)
直接使用PUT的方式,將原來的數(shù)據(jù)進行覆蓋
1、當前索引中的文檔數(shù)據(jù)
2、直接通過PUT命令覆蓋
版本號version會增加,現(xiàn)在變成了2;當前的狀態(tài)變成了update
3、查看guohui索引的數(shù)據(jù)
更新成了李四等新數(shù)據(jù)
方式二:(更推薦使用這種方式)
通過POST命令來更新索引中的文檔(行數(shù)據(jù))
1、命令
更新命令多了一個"doc"
POST /索引/類型/文檔id/_update
{
"doc": {
"name": "詹姆斯",
"age": 99
}
}
刪除索引/者文檔
刪除文檔
1、命令
DELETE 索引/類型/文檔Id
2、查看head可視化界面
刪除索引
1、命令
DELETE 索引
2、去可視化界面查看
guihui索引(數(shù)據(jù)庫)被刪除了!
查詢索引數(shù)據(jù)/某條文檔(含條件查詢)
索引test01數(shù)據(jù)
一、查詢索引全部數(shù)據(jù)
1、命令
PUT 索引/類型/_search
二、查詢文檔通過文檔的id
1、命令
GET 索引/類型/文檔id
三、條件查詢
1、命令
q代表著query的意思
GET 索引/類型/_search?q=name:李四
復雜搜索(復雜查詢)重點!
下面所講的復雜查詢由開頭至結尾順序學習,由淺入深
以下的數(shù)據(jù)均來自于查詢該索引
一、帶參數(shù)的查詢
1.命令
GET test01/_search
{
"query": {
"match": { (match表示精確匹配,這里還可以換成其他的參數(shù))
"name": "張三"
}
}
}
如果索引中存在某字段相似的,那么查詢出來的結果還會有一個匹配度的數(shù)值,將來可能會按照分值來排序
將來:
hits會對應我們Java中的對象
total:查詢的結果數(shù)
二、過濾結果
1.命令
_source命令:是過濾搜索結果的關鍵字
相當于MySQL 中的select 字段 from table where 判斷條件
?
GET test01/_search
{
"query": {
"match": {
"name": "王五"
}
},
"_source":["name","age"]
}
三、根據(jù)某個字段進行排序
類似于MySQL的order by ...desc/asc
1、命令
sort命令,下面的示例是查詢name等于王五的數(shù)據(jù),并且按照age進行升序排序
GET test01/_search
{
"query": {
"match": {
"name": "王五"
}
},
"sort": [
{
"age": {
"order": "asc"
}
}
]
}
四、分頁查詢
相當于SQL中的Limit
1、命令
from 和 size 命令,下面的實例是從第0個數(shù)據(jù)開始(和我們之前學習的分頁的數(shù)據(jù)結果是一樣的,起始都是從0開始),一頁展示1條數(shù)據(jù),所以和上面的搜索出的兩條數(shù)據(jù)是不同的,現(xiàn)在是只展示了一條數(shù)據(jù)
GET test01/_search
{
"query": {
"match": {
"name": "王五"
}
},
"sort": [
{
"age": {
"order": "asc"
}
}
],
"from":0,
"size":1
}
五、布爾實現(xiàn)多條件的精確查詢
must可以精確的匹配對應的數(shù)據(jù),相當于SQL中的“and”,所有的條件都滿足
1、命令
GET test01/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "王五"
}
},
{
"match": {
"age": "11"
}
}
]
}
}
}
六、布爾實現(xiàn)or類型查詢
should關鍵字,相當于SQL 中的“or”,后面的條件滿足其一即可被查詢出來
1、命令
GET test01/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "王五"
}
},
{
"match": {
"age": "11"
}
}
]
}
}
}
七、布爾值查詢-類似于SQL中的“not”
1、命令
must_not
下面的實例是查詢年齡不是11歲的人
GET test01/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"age": "11"
}
}
]
}
}
}
八、在查詢的時候,加過濾器
filter關鍵字,就是在查詢的時候加上范圍的過濾
gte: great than equals表示大于等于
lte: less than equals表示小于等于
去掉e就把等于去掉了
1、命令
GET test01/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "王五"
}
}
],
"filter": {
"range": {
"age": {
"gt": 10,
"lt": 20
}
}
}
}
}
}
九、根據(jù)字段中的某個數(shù)據(jù)進行查詢
可以精確的匹配到某條數(shù)據(jù)中包含某個數(shù)據(jù),并且還能返回查詢的結果的分值
1、命令
通過"match"關鍵字,里面輸入索引中字段的名稱和需要匹配的數(shù)據(jù),ES的優(yōu)勢在于,想要匹配多個數(shù)據(jù),直接用空格隔開即可,另外查詢的結果還會對這些數(shù)據(jù)進行分值的評定,將來還便于我們根據(jù)分值來做排序
十、精確查詢
精確查詢是通過term關鍵字來實現(xiàn)的,他的底層是通過直接查詢倒排索引,所以效率更高!
關于分詞的解釋:
(1)term:直接查詢精確的
(2)match:會使用分詞器(會先分析文檔,然后通過分析的文檔進行查詢?。?br> 所以綜上所述,term的查詢更高效
補充:
如果類型是text類型,那么是可以被分詞器解析的;如果是keyword類型的,是不能被分詞器解析,換句話說,如果我們索引中的某個字段的類型設置的是keyword類型,那么我想使用match或者term來查詢這個字段匹配的,他只能查詢出完全匹配的數(shù)據(jù)來,其他的數(shù)據(jù)差一個字符都不能被查詢出來!
十一、高亮查詢(重點)
重點就是highlight關鍵字
至此,關于ES詳細的操作查詢命令介紹完畢,尤其是高亮查詢在將來的開發(fā)中會經(jīng)常用到,比如日志定位等等。文章來源:http://www.zghlxwxcb.cn/news/detail-795510.html
后續(xù)還會持續(xù)更新,敬請期待~~~文章來源地址http://www.zghlxwxcb.cn/news/detail-795510.html
到了這里,關于ElasticSearch篇——Restful風格詳解以及常見的命令,涵蓋_cat命令查看ES默認數(shù)據(jù)、索引和文檔的增刪改查以及復雜搜索,超詳細、超全面、超細節(jié)!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!