1. 程式人生 > >Elastisearch在kibana下常用命令總結

Elastisearch在kibana下常用命令總結

pre ren producer pan 現在 delete 包含 del 名稱

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

Elastisearch在kibana下常用命令總結