天天看點

Elastisearch在kibana下常用指令總結

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