1、擷取所有資料
GET /_search
2、建立一個Document
PUT /ecommerce/product/1
{
"name" : "gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags": [ "meibai", "fangzhu" ]
}
PUT /ecommerce/product/2
{
"name" : "jiajieshi yagao",
"desc" : "youxiao fangzhu",
"price" : 25,
"producer" : "jiajieshi producer",
"tags": [ "fangzhu" ]
}
PUT /ecommerce/product/3
{
"name" : "zhonghua yagao",
"desc" : "caoben zhiwu",
"price" : 40,
"producer" : "zhonghua producer",
"tags": [ "qingxin" ]
}
3、檢索文檔查詢
GET /ecommerce/product/1
4、替換文檔(全量替換)
PUT /ecommerce/product/1
{
"name" : "jiaqiangban gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags": [ "meibai", "fangzhu" ]
}
5、更新文檔(_update)
POST /ecommerce/product/1/_update
{
"doc":
{
"price":70
}
}
6、删除文檔
DELETE /ecommerce/product/1
注意:在删除一個Document之後,它不是立即實體删除的,因為它的版本等資訊還保留着
二、請求分類
1、query string search
類似這種 搜尋全部商品:GET /ecommerce/product/_search(參數直接拼接在請求url上,不帶json參數的)
query string search的由來,因為search參數都是以http請求的query string來附帶的
搜尋商品名稱中包含yagao的商品,而且按照售價降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
适用于臨時的在指令行使用一些工具,比如curl,快速的送出請求,來檢索想要的資訊;但是如果查詢請求很複雜,是很難去建構的,是以在生産環境中,幾乎很少使用query string search
2、query DSL
DSL:Domain Specified Language,特定領域的語言
http request body:請求體,可以用json的格式來建構查詢文法,比較友善,可以建構各種複雜的文法,比query string search肯定強大多了。
執行個體一:查詢所有的商品
GET ecommerce/product/_search
{
"query":
{
"match_all": {}
}
}
執行個體二:查詢名稱包含yaogao的産品,同時按照價格進行降序排序
GET ecommerce/product/_search
{
"query": {
"match": {
"name": "yaogao"
}
},
"sort": [
{
"price":"desc"
}
]
}
3、分頁查詢
總共3條商品,假設每頁就顯示1條商品,現在顯示第1頁,是以就查出來第1個商品
GET ecommerce/product/_search
{
"query": {
"match_all": {}
},
"from": 0,
"size": 1
}
4、查詢指定項
GET ecommerce/product/_search
{
"query": {
"match_all": {}
},
"_source": ["name","price"]
}
5、過濾查詢
搜尋商品名稱包含yagao,而且售價大于25元的商品
GET ecommerce/product/_search
{
"query": {
"bool": {
"must": {
"match" : {
"name" : "yagao" }
},
"filter": {
"range": {
"price": {
"gte": 25
}
}
}
}
}
}
6、full-text search(全文檢索)
全文檢索會将輸入的搜尋串拆解開來,去反向索引裡面去一一比對,隻要能比對上任意一個拆解後的單詞,就可以作為結果傳回
GET ecommerce/product/_search
{
"query": {
"match": {
"producer": "yagao producer"
}
}
}
7、phrase search(短語搜尋)
phrase search,要求輸入的搜尋串,必須在指定的字段文本中,完全包含一模一樣的,才可以算比對,才能作為結果傳回
GET ecommerce/product/_search
{
"query": {
"match_phrase": {
"producer": "jiajieshi producer"
}
}
}
8、多條件查詢
名字中有"yagao",描述上可以有fangzhu也可以沒有,價格不能是25元
must表示一定要滿足;
should表示可以滿足也可以不滿足;
must_not表示不能滿足該條件;
"minimum_should_match": 1,表示最小比對度,可以設定為百分百,詳情看源文檔Elasticsearch Reference [6.4] » Query DSL » Minimum Should Match,
設定了這個值的時候就必須滿足should裡面的設定了,另外注意這邊should裡面同一字段設定的多個值(意思是當這個值等于X或者等于Y的時候都成立,務必注意格式)
GET /ecommerce/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "yagao"
}
}
],
"should": [
{
"match": {
"desc": "fangzhu"
}
},
{
"match": {
"desc": "caoben"
}
}
],
"must_not": [
{
"match": {
"price": 25
}
}
],
"minimum_should_match": 1
}
}
}
multi-index和multi-type搜尋模式
告訴你如何一次性搜尋多個index和多個type下的資料
/_search:所有索引,所有type下的所有資料都搜尋出來
/index1/_search:指定一個index,搜尋其下所有type的資料
/index1,index2/_search:同時搜尋兩個index下的資料
/test1_*,test2_*/_search:按照通配符去比對多個索引
/index1/type1/_search:搜尋一個index下指定的type的資料
/index1/type1,type2/_search:可以搜尋一個index下多個type的資料
/index1,index2/type1,type2/_search:搜尋多個index下的多個type的資料
/_all/type1,type2/_search:_all,可以代表搜尋所有index下的指定type的資料
轉載于:https://www.cnblogs.com/yfb918/p/10695257.html