elasticsearch API約定

對多個indices進行操作

es中大多resetapi支持請求多個index, 例如"test1,test2,test3"冤灾,index也可以使用通配符, 例如"test*", 還可以使用+,-來包含或移除某個或某類index, 例如"test*,-test1"
支持設置多個的api的請求字符串可設置以下參數(shù):

  • ignore_unavailable: 是否忽略單個index是否可用(不存在或關閉), true表示忽略, false表示不忽略, 默認為false, 例如查詢已經(jīng)關閉的index:

輸入: GET /test1/user,account/_search?ignore_unavailable=false
輸出:

{
   "error": "IndexClosedException[[test1] closed]",
   "status": 403
}

輸入: GET /test1/user,account/_search?ignore_unavailable=false
輸出:

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 0,
      "successful": 0,
      "failed": 0
   },
   "hits": {
      "total": 0,
      "max_score": 0,
      "hits": []
   }
}
  • allow_no_indices: 是否忽略通配符匹配不到index(不存在或關閉)的情況, true表示允許, false表示不允許或链,默認為true, 例如查詢已經(jīng)關閉的index:

輸入: GET /test\*/_search?allow_no_indices=false
輸出:

{
   "error": "IndexMissingException[[test*] missing]",
   "status": 404
}

輸入: GET /test*/_search?allow_no_indices=true

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 0,
      "successful": 0,
      "failed": 0
   },
   "hits": {
      "total": 0,
      "max_score": 0,
      "hits": []
   }
}
  • expand_wildcards: 設置是否擴展通配符到closed的index中轧铁,open表示只在匹配并為open的index中查詢,closed表示在匹配的所有的index中查詢, 默認為closed, 例如查詢已經(jīng)關閉的index
    輸入: GEt /test*/_search?expand_wildcards=closed
    輸出:
{
   "error": "IndexClosedException[[test1] closed]",
   "status": 403
}

公共參數(shù)

  • format: 表示返回數(shù)據(jù)的格式, 可選值為yaml和json兩種, 例如:
    輸入: GET /test1/user/_search?format=yaml
    輸出:
---
took: 23
timed_out: false
_shards:
  total: 5
  successful: 5
  failed: 0
hits:
  total: 1
  max_score: 1.0
  hits:
  - _index: "test1"
    _type: "user"
    _id: "1"
    _score: 1.0
    _source:
      name: "silence"
  • pretty: 表示在已json格式返回數(shù)據(jù)時是否以可視化的格式返回, false或未在設置表示不格式化, 否則格式化

  • human: 表示是否對返回結果進行格式化處理,比如3600(s)顯示1h

  • 查詢結果過濾
    主要使用filter_path參數(shù)進行設置

1.在返回結果中我們只關注took, hits.total, hits.hits._id, hits._source, 則我們可以發(fā)起如此請求:
輸入:GET /test1/user/_search?filter_path=took,hits.total,hits.hits._id,hits.hits._source
輸出:

{
   "took": 1,
   "hits": {
      "total": 1,
      "hits": [
         {
            "_id": "1",
            "_source": {
               "name": "silence"
            }
         }
      ]
   }
}

2.也可以使用統(tǒng)配符進行設置
輸入: GET /_nodes/stats?filter_path=nodes.*.*ost*,nodes.*.os.*u
輸出:

{
   "nodes": {
      "9jfW4VeWRta-Uq7Cq7bK34": {
         "host": "silence",
         "os": {
            "cpu": {
               "sys": 1,
               "user": 1,
               "idle": 96,
               "usage": 2,
               "stolen": 0
            }
         }
      }
   }
}

3.若層級較多時可使用**進行簡化
輸入: GET /_nodes/stats?filter_path=nodes.**.*sys*
輸出:

{
   "nodes": {
      "9jfW4VeWRta-Uq7Cq7bK34": {
         "os": {
            "cpu": {
               "sys": 2
            }
         },
         "process": {
            "cpu": {
               "sys_in_millis": 139106
            }
         }
      }
   }
}

4.若只需要_source中的某些值间坐,則可以將filter_path和_source參數(shù)共同使用
輸入: GET /test1/account/_search?filter_path=hits.hits._source&_source=firstname,lastname,gender&size=2
輸出:

{
   "hits": {
      "hits": [
         {
            "_source": {
               "firstname": "Rodriquez",
               "gender": "F",
               "lastname": "Flores"
            }
         },
         {
            "_source": {
               "firstname": "Opal",
               "gender": "M",
               "lastname": "Meadows"
            }
         }
      ]
   }
}

5.flat_settings用于設置在查詢setting時,setting中的key格式, 默認為false:
輸入: GET /test1/_settings?flat_settings=true
輸出:

{
   "test1": {
      "settings": {
         "index.creation_date": "1442230557598",
         "index.uuid": "70bg061IRdKUdDNvgkUBoQ",
         "index.version.created": "1060099",
         "index.number_of_replicas": "1",
         "index.number_of_shards": "5"
      }
   }
}

輸入: GET /test1/_settings?flat_settings=false
輸出:

{
   "test1": {
      "settings": {
         "index": {
            "creation_date": "1442230557598",
            "number_of_shards": "5",
            "uuid": "70bg061IRdKUdDNvgkUBoQ",
            "version": {
               "created": "1060099"
            },
            "number_of_replicas": "1"
         }
      }
   }
}
  • 請求參數(shù)格式
    1.boolean: 在es中將"0", 0, false, "false", "off"識別為false,其他均按ture處理
    2.number
    3.time: 可以提交一個以毫秒時間的整數(shù)或者以日期標識結尾的字符串邑退,例如"2d"表示2天竹宋,支持的格式有: y(year),M(month),w(week),d(day),h(hour),m(minute),s(second)
    4.距離: 可以提交一個以米為單位的證書或者以距離表示結尾的字符串,例如"2km"表示2千米地技,支持的格式有: mi/miles(mile英里), yd/yards(yard碼), ft/feet(feet尺), in/inch(inch英寸), km/kilometers(kilometer千米), m/meters(meter米), cm/centimeters(centimeter厘米), mm/millimeters(millimeter毫米), NM/nmi/nauticalmiles(Nautical mile納米)
    5.模糊類型:
    a.數(shù)字,時間, IP:類似于range -fuzzines<=value<=+fuzzines
    b.字符串: 計算編輯距離

  • 返回結果中key的格式為駝峰還是下劃線分割, 通過case設置為camelCase則返回駝峰格式蜈七,否則為下劃線分割形式

  • jsonp: 可以用jsonp回調(diào)的方式調(diào)用es api, 需要通過callback設置回調(diào)函數(shù)名稱,并且需要在elasticsearch.yml中配置http.jsonp.enable: true來啟用jsonp格式

url訪問控制

可以通過代理方式進行es的url訪問控制莫矗,但是對于multi-search飒硅,multi-get和bulk等在請求參數(shù)中設置不同的index的情況很難解決.
為防止通過請求體設置index的情況,需要在elasticsearch.yml中設置rest.action.multi.allow_explicit_index:false, 此時es不允許在request body中設置index

如在修改前:
輸入:

POST /test1/user3/_bulk?pretty
{"index" : {"_index" : "test2", "_type" : "user1", "_id" : 1}}
{"name" : "silence1"}
{"index" : {"_index" : "test2", "_type" : "user1", "_id" : 2}}
{"name" : "silence2"}

輸出:

{
   "took": 225,
   "errors": false,
   "items": [
      {
         "index": {
            "_index": "test2",
            "_type": "user1",
            "_id": "1",
            "_version": 1,
            "status": 201
         }
      },
      {
         "index": {
            "_index": "test2",
            "_type": "user1",
            "_id": "2",
            "_version": 1,
            "status": 201
         }
      }
   ]
}

如在修改后(已重啟):
輸出:

{
   "error": "IllegalArgumentException[explicit index in bulk is not allowed]",
   "status": 500
}

輸入:

POST /test1/user3/_bulk?pretty
{"index" : {"_id" : 1}}
{"name" : "silence1"}
{"index" : {"_id" : 2}}
{"name" : "silence2"}

輸出:

{
   "took": 8,
   "errors": false,
   "items": [
      {
         "index": {
            "_index": "test1",
            "_type": "user3",
            "_id": "1",
            "_version": 1,
            "status": 201
         }
      },
      {
         "index": {
            "_index": "test1",
            "_type": "user3",
            "_id": "2",
            "_version": 1,
            "status": 201
         }
      }
   ]
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砂缩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子三娩,更是在濱河造成了極大的恐慌庵芭,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雀监,死亡現(xiàn)場離奇詭異双吆,居然都是意外死亡,警方通過查閱死者的電腦和手機滔悉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門伊诵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人回官,你說我怎么就攤上這事曹宴。” “怎么了歉提?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵笛坦,是天一觀的道長。 經(jīng)常有香客問我苔巨,道長版扩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任侄泽,我火速辦了婚禮礁芦,結果婚禮上,老公的妹妹穿的比我還像新娘悼尾。我一直安慰自己柿扣,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布闺魏。 她就那樣靜靜地躺著未状,像睡著了一般。 火紅的嫁衣襯著肌膚如雪析桥。 梳的紋絲不亂的頭發(fā)上司草,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音泡仗,去河邊找鬼埋虹。 笑死,一個胖子當著我的面吹牛沮焕,可吹牛的內(nèi)容都是我干的吨岭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼峦树,長吁一口氣:“原來是場噩夢啊……” “哼辣辫!你這毒婦竟也來了旦事?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤急灭,失蹤者是張志新(化名)和其女友劉穎姐浮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葬馋,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡卖鲤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了畴嘶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛋逾。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窗悯,靈堂內(nèi)的尸體忽然破棺而出区匣,到底是詐尸還是另有隱情,我是刑警寧澤蒋院,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布亏钩,位于F島的核電站,受9級特大地震影響欺旧,放射性物質發(fā)生泄漏姑丑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一辞友、第九天 我趴在偏房一處隱蔽的房頂上張望栅哀。 院中可真熱鬧,春花似錦称龙、人聲如沸昌屉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躬厌,卻和暖如春马昨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扛施。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工鸿捧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疙渣。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓匙奴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妄荔。 傳聞我的和親對象是個殘疾皇子泼菌,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理谍肤,服務發(fā)現(xiàn),斷路器哗伯,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • 介紹 elasticsearch是一個高效的荒揣、可擴展的全文搜索引擎 基本概念 Near Realtime(NRT)...
    imsilence閱讀 778評論 0 0
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,426評論 0 17
  • 10焊刹、我有個表姐系任,是我爺爺?shù)奶玫艿耐鈱O女。哎呀虐块,說得好復雜哈俩滥,就是她的嘎公(外公)是我爺爺?shù)奶眯值堋?過年的時候表...
    沙栗閱讀 319評論 2 0
  • 夜幕,很深贺奠,很重霜旧,感覺呼吸都被扼制了!很想沉沉地睡去敞嗡,不省人事最好颁糟,可怎么也睡不著,只能呆呆地坐著喉悴。沒開燈棱貌,甚至連...
    小依靜閱讀 262評論 1 0