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的數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM