歷史文章(文章累計(jì)500+)
《國(guó)內(nèi)最全的Spring?Boot系列之一》
《國(guó)內(nèi)最全的Spring?Boot系列之二》
《國(guó)內(nèi)最全的Spring?Boot系列之三》
《國(guó)內(nèi)最全的Spring?Boot系列之四》
《國(guó)內(nèi)最全的Spring?Boot系列之五》
《國(guó)內(nèi)最全的Spring?Boot系列之六》
《國(guó)內(nèi)最全的Spring?Boot系列之七》
ElasticSearch重建/創(chuàng)建/刪除索引操作 - 第501篇
ElasticSearch文檔操作[ES系列] - 第502篇
ElasticSearch文檔批量操作[ES系列] - 第503篇
Hi,大家好,我是悟纖。我就是我,不一樣的煙火。我就是我,與眾不同的小蘋(píng)果。
這一節(jié)來(lái)看看ES高級(jí)查詢Query DSL。
一、DSL語(yǔ)法和數(shù)據(jù)準(zhǔn)備
ES中提供了一種強(qiáng)大的檢索數(shù)據(jù)方式,這種檢索方式稱之為Query?DSL(Domain Specified Language?領(lǐng)域?qū)S谜Z(yǔ)言)?, Query DSL是利用Rest API傳遞JSON格式的請(qǐng)求體(RequestBody)數(shù)據(jù)與ES進(jìn)行交互,這種方式的豐富查詢語(yǔ)法讓ES檢索變得更強(qiáng)大,更簡(jiǎn)潔。
1.1?語(yǔ)法
基本語(yǔ)法如下:
GET /es_db/_doc/_search {json請(qǐng)求體數(shù)據(jù)}
可以簡(jiǎn)化為下面寫(xiě)法
GET /es_db/_search {json請(qǐng)求體數(shù)據(jù)}
?
1.2?示例
示例如下:
#無(wú)條件查詢,默認(rèn)返回10條數(shù)據(jù)
GET /es_db/_search
{
"query":{
"match_all":{}
}
}
?
(1)took:花費(fèi)時(shí)間,單位毫秒。
(2)hits:符合條件的信息。
(3)hits.total:符合條件的總文檔。
(4)hits.hits:符合條件結(jié)果集,默認(rèn)前10個(gè)文檔。
1.3?示例數(shù)據(jù)
準(zhǔn)備數(shù)據(jù):
#指定ik分詞器
PUT /es_db
{
"settings" : {
"index" : {
"analysis.analyzer.default.type": "ik_max_word"
}
}
}
?
# 創(chuàng)建文檔,指定id
PUT /es_db/_doc/1
{
"name": "張三",
"sex": 1,
"age": 25,
"address": "廣州天河公園",
"remark": "java developer"
}
PUT /es_db/_doc/2
{
"name": "李四",
"sex": 1,
"age": 28,
"address": "廣州荔灣大廈",
"remark": "java assistant"
}
?
PUT /es_db/_doc/3
{
"name": "王五",
"sex": 0,
"age": 26,
"address": "廣州白云山公園",
"remark": "php developer"
}
?
PUT /es_db/_doc/4
{
"name": "趙六",
"sex": 0,
"age": 22,
"address": "長(zhǎng)沙橘子洲",
"remark": "python assistant"
}
?
PUT /es_db/_doc/5
{
"name": "張龍",
"sex": 0,
"age": 19,
"address": "長(zhǎng)沙麓谷企業(yè)廣場(chǎng)",
"remark": "java architect assistant"
}
?
PUT /es_db/_doc/6
{
"name": "趙虎",
"sex": 1,
"age": 32,
"address": "長(zhǎng)沙麓谷興工國(guó)際產(chǎn)業(yè)園",
"remark": "java architect"
}
?
PUT /es_db/_doc/7
{
"name": "李虎",
"sex": 1,
"age": 32,
"address": "廣州番禺節(jié)能科技園",
"remark": "java architect"
}
?
PUT /es_db/_doc/8
{
"name": "張星",
"sex": 1,
"age": 32,
"address": "武漢東湖高新區(qū)未來(lái)智匯城",
"remark": "golang developer"
}
?
二、match_all查詢
2.1 match_all
使用match_all,匹配所有文檔,默認(rèn)只會(huì)返回10條數(shù)據(jù)。
原因:_search查詢默認(rèn)采用的是分頁(yè)查詢,每頁(yè)記錄數(shù)size的默認(rèn)值為10。如果想顯示更多數(shù)據(jù),指定size
GET /es_db/_search
# 等同于
GET /es_db/_search
{
"query":{
"match_all":{}
}
}
?
2.2返回源數(shù)據(jù)_source
_source?關(guān)鍵字:?是一個(gè)數(shù)組,在數(shù)組中用來(lái)指定展示那些字段
GET /es_db/_search
{
"query": {
"match_all": {}
},
"_source": ["name","address"]
}
?
#在查詢中過(guò)濾
#不查看源數(shù)據(jù),僅查看元字段
GET /es_db/_search
{
"_source": false,
"query": {
"match_all": {}
}
}
?
#只看以obj.開(kāi)頭的字段
GET /es_db/_search
{
"_source": "obj.*",
"query": {
"match_all": {}
}
}
?
2.3返回指定條數(shù)size
size?關(guān)鍵字:?指定查詢結(jié)果中返回指定條數(shù)。默認(rèn)返回值10條。
get /es_db/_search
{
"query":{
"match_all": {}
},
"size":2
}
?
2.4分頁(yè)查詢from&size
size:顯示應(yīng)該返回的結(jié)果數(shù)量,默認(rèn)是?10
from:顯示應(yīng)該跳過(guò)的初始結(jié)果數(shù)量,默認(rèn)是?0
from?關(guān)鍵字用來(lái)指定起始返回位置,和size關(guān)鍵字連用可實(shí)現(xiàn)分頁(yè)效果
{
"query":{
"match_all": {}
},
"from": 0,
"size":2
}
?
2.5指定字段排序sort
注意:會(huì)讓得分失效。
get /es_db/_search
{
"query":{
"match_all": {}
},
"sort":{
"age":"desc"
}
}
?
我就是我,是顏色不一樣的煙火。
我就是我,是與眾不同的小蘋(píng)果。
à悟纖學(xué)院:https://t.cn/Rg3fKJD
學(xué)院中有Spring?Boot相關(guān)的課程!點(diǎn)擊「閱讀原文」進(jìn)行查看!
SpringBoot視頻:http://t.cn/A6ZagYTi
SpringBoot交流平臺(tái):https://t.cn/R3QDhU0
SpringSecurity5.0視頻:http://t.cn/A6ZadMBe
ShardingJDBC分庫(kù)分表:http://t.cn/A6ZarrqS
分布式事務(wù)解決方案:http://t.cn/A6ZaBnIr
JVM內(nèi)存模型調(diào)優(yōu)實(shí)戰(zhàn):http://t.cn/A6wWMVqG
Spring入門(mén)到精通:https://t.cn/A6bFcDh4文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-860044.html
大話設(shè)計(jì)模式之愛(ài)你:https://dwz.cn/wqO0MAy7文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-860044.html
到了這里,關(guān)于ES高級(jí)查詢語(yǔ)法DSL實(shí)戰(zhàn) - 第504篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!