elasticsearch索引總結


從了解ELK到搭建再到業務新建到現在也有6個月了,一直沒有總結過es的查詢語法,每次查詢都要在網上找一波,上周接到一個任務,統計nginx日中所有域名的pv統計值,剛開始還准備用python調用elasticsearch模塊去遍歷某個索引下的所有日志,然后篩選相關內容進行整合(使用了scroll函數),結果倒是出來了,但是慢的不是一星半點,最后使用了es自己的api通過聚合查詢很快就在幾千萬條日志里面把相關 的值統計了出來。

es查詢整理:

一、_cat  API 使用

1. curl "ip:9200/_cat/health?v"

green表示一切正常

2.curl 'ip:9200/_cat/nodes?v'

可以查看所有的節點信息

3.curl 'ip:9200/_cat/indices?v'

可以列出所有的索引 以及每個索引的相關信息

二、索引的增刪改查

語法格式: 

curl -X<REST Verb> <Node>:<Port>/<Index>/<Type>/<ID>

  <REST Verb>:REST風格的語法謂詞

  <Node>:節點ip

  <port>:節點端口號,默認9200

  <Index>:索引名

  <Type>:索引類型

  <ID>:操作對象的ID號

1.新建索引:

curl -XPUT 'ip:9200/新建的索引名?pretty'

2.插入數據

curl -XPUT 'ip:9200/索引名/type類型/ID號?pretty' -d ‘

{

  “name” : "tom"

}'

3.獲取數據:

curl -XGET 'ip:9200/索引名/ID號?pretty'

pretty使得返回數據美觀

4.curl -XDELETE 'ip:9200/索引名?pretty'

刪除索引

5。更新數據以及新增字段

curl -XPOXT 'ip:9200/索引名/類型名/id/_update?pretty' -d '

{

  "doc":{"name":"jack"}

}'

curl -XPOST 'ip:9200/索引名/類型名/id/_update?pretty' -d '

{

  "doc":{"name":"jack","age":"20"}

}'

三、批處理

下面語句將在一個批量操作中執行創建索引:

  curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '
  {"index":{"_id":"1"}}
  {"name": "John Doe" }
  {"index":{"_id":"2"}}
  {"name": "Jane Doe" }
  '

  下面語句批處理執行更新id為1的數據然后執行刪除id為2的數據

  curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '
  {"update":{"_id":"1"}}
  {"doc": { "name": "John Doe becomes Jane Doe" } }
  {"delete":{"_id":"2"}}
  '
四、查詢
curl -XPOST 'localhost:9200/索引名/_search?pretty' -d '
  {
    "query": { "match_all": {} }
   "size": 100 
 }'
返回索引下的匹配到的所有數據 默認返回十條
加上size指定返回條數
curl -XPOST 'localhost:9200/索引名/_search?pretty' -d '
  {
    "query": { "match_all": {} }
"_source" ["hostnanme","path"]
   "size": 100 
 }'
指定返回字段
curl -XPOST 'localhost:9200/索引名/_search?pretty' -d '
{
  "query" :{"match":{"hostname":"admin.com"}}
}’


免責聲明!

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



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