【ElasticSearch】 三、Elasticsearch 可視化工具,Kibanba 和 DSL語句學習

一、Kibana 介紹

Kibana 是一款開源的數據分析和可視化平臺,用於和 Elasticsearch 協作。通過 Kinaba 可以對 Elasticsearch 索引中的數據進行搜索、查看、交互操作,可以很方便的利用圖標、表格及地圖對數據進行多元化的分析和呈現。

Kibana 可以使數據界面化,基於瀏覽器的界面可讓我們快速創建和分享動態數據儀表板來追蹤 Elasticsearch 的實時數據變化。

 

二、Kibana 安裝和使用

2.1 下載和安裝

# 下載與使用的 elasticsearch 對應的 kibana 版本
docker pull docker.io/kibana:5.6.8

# 安裝 kibana 容器
# ELASTICSEARCH_URL 指定要監聽和統計的ES
docker run -it -d -e ELASTICSEARCH_URL=http://192.168.234.135:9200 --name kibana --restart=always -p 5601:5601 kibana:5.6.8

2.2 測試

# 訪問頁面
192.168.234.135:5601

 

三、DSL 語句

DSL 可以幫助我們直接操作 elasticsearch 庫中的數據

打開 kibana 的 Dev Tools,建議在 firefox 瀏覽器打開,它對中文的兼容性更好

# 獲取所有索引庫信息
GET _cat/indices?v

# 刪除索引庫
DELETE /userinfo

# 新增索引庫
PUT /userinfo

# 添加映射
PUT /user/testinfo/_mapping
{
  "properties": {
    "name": {
      "type": "text",
      "analyzer": "ik_smart",
      "search_analyzer": "ik_smart",
      "store": false
    },
    "city": {
      "type": "text",
      "analyzer": "ik_smart",
      "search_analyzer": "ik_smart",
      "store": false
    },
    "age": {
      "type": "long",
      "store": false
    },
    "description": {
      "type": "text",
      "analyzer": "ik_smart",
      "search_analyzer": "ik_smart",
      "store": false
    }
  }
}

# 新增文檔數據
# /【索引】/【索引庫】/【第幾個】
PUT /user/testinfo/1
{
  "name": "小黃",
  "age": 18,
  "city": "北京",
  "description": "北京的小黃歌"
}
PUT /user/testinfo/2
{
  "name": "小美",
  "age": 18,
  "city": "北京",
  "description": "北京的小美"
}
PUT /user/testinfo/3
{
  "name": "李明",
  "age": 18,
  "city": "北京",
  "description": "北京的大哥"
}

# 獲取數據
GET /user/testinfo/1
GET /user/testinfo/2
GET /user/testinfo/3

# 直接替換數據,原始數據會被刪除
PUT /user/testinfo/1
{
  "name": "老大"
}

# 修改數據
POST /user/testinfo/1/_update
{
  "doc": {
    "name": "隔壁老王"
  }
}

# 刪除數據
DELETE /user/testinfo/3

# 查詢數據
GET /user/_search
GET /user/testinfo/_search
GET /user/testinfo/2

# Sort 排序
# 根據 age 降序
Get /user/_search 
{
  "query": {},
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

# 分頁
Get /user/_search 
{
  "query": {},
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 2
}

################# 過濾搜索

# 詞項搜索
GET /user/testinfo/_search
{
  "query": {
    "term": {
      "city":"北京"
    }
  }
}

# 多個詞項搜索
GET /user/_search
{
  "query": {
    "terms": {
      "city": [
        "北京",
        "武漢"
      ]
    }
  }
}

# 範圍過濾
# gte 大於等於 gt 大於
# lte 小於等於 lt 小於
GET /user/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 10,
        "lte": 40
      }
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

# 查詢存在address域的數據
GET /user/_search
{
  "query": {
    "exists": {
      "field": "address"
    }
  }
}

############ 多條件搜索
# must:多條件必須同時滿足,等同於 and
# must_not:多個條件必須同時不滿足
# should:至少有一個條件滿足,等同於or

# 搜索在深圳的用戶,且年齡在10-30之間
GET /user/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "city": {
              "value": "深圳"
            }
          }
        },
        {
          "range": {
            "age": {
              "gte": 10,
              "lte": 30
            }
          }
        }
      ]
    }
  }
}

##### 根據某個字符搜索
GET /user/_search
{
  "query": {
    "match": {
      "description": "湖北武漢"
    }
  }
}

# 搜索前綴
GET /user/_search
{
  "query": {
    "prefix": {
      "name": "趙"
    }
  }
}

# 多個域匹配
# description|city 有深圳的數據
GET /user/_search
{
  "query": {
    "multi_match": {
      "query": "深圳", 
      "fields": [
        "city", 
        "description"
      ]
    }
  }
}

















 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章