ElasticSearch初探之基本概念和CRUD(二)

  • 基本概念簡(jiǎn)介

index:索引巧勤,相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)database
type:類型粘室,類似關(guān)系數(shù)據(jù)庫(kù)中table
document:文檔缺厉,相當(dāng)于表中行記錄row
field:列栓辜,相當(dāng)于table中的colum
shard:分片恋拍,每個(gè)index包含多個(gè)shard,每個(gè)shard是保存數(shù)據(jù)的lucene實(shí)例啃憎。shard又分為:primary shard(ps) 和replica shard(rs),即主分片和副本分片似炎,默認(rèn)ps= 5辛萍,type中的每個(gè)document只能存在其中一個(gè)ps以及和它對(duì)應(yīng)的rs中,ps和它對(duì)應(yīng)的rs不能在同一個(gè)節(jié)點(diǎn)內(nèi)(容錯(cuò)考慮)羡藐。

  • 一個(gè)索引創(chuàng)建后贩毕,primary shard不可修改,但為了集群的高可用性和便于橫向擴(kuò)展replica shard可以動(dòng)態(tài)修改仆嗦。
PUT /users/_settings
{
   "number_of_replicas" : 10 //修改副本分片數(shù)
}
  • 基本操作舉例

es是完成基于RESTful web接口規(guī)范辉阶,以下基于rest風(fēng)格舉例
查看es狀態(tài)

[root@Eden666 ~]# curl -XGET 'http://localhost:9200/_cluster/health?pretty'
{
  "cluster_name" : "elasticsearch",
  "status" : "yellow", //三種狀態(tài):green 完全可用,集群功能齊全,yellow:所有數(shù)據(jù)可用谆甜,但是有些副本尚未分配垃僚,red:部分?jǐn)?shù)據(jù)有丟失
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 5, //初始5個(gè)primary shard 分片
  "active_shards" : 5,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 5,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 50.0
}

1、新增數(shù)據(jù)(POST)规辱,其中users就是index谆棺,coder是type,id就是field罕袋,若出現(xiàn)以下情況是因?yàn)閑s6.x版本需加入headers之Content-type(所有請(qǐng)求方式都一樣)改淑,詳情可參考官網(wǎng)(https://www.elastic.co/blog/strict-content-type-checking-for-elasticsearch-rest-requests

[root@Eden666 ~]# curl -XPOST  'localhost:9200/users/coder/3?pretty=true' -d '{"name":"eden03","age":10}'
{
  "error" : "Content-Type header [application/x-www-form-urlencoded] is not supported",
  "status" : 406
}
[root@Eden666 ~]# curl -H 'Content-type:application/json' -XPOST  'localhost:9200/users/coder/3?pretty=true' -d '{"name":"eden03","age":10}'
{
  "_index" : "users",
  "_type" : "coder",
  "_id" : "3",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 3,
  "_primary_term" : 2
}

2、修改(PUT)

[root@Eden666 ~]# curl -H 'Content-type:application/json' -XPUT  'localhost:9200/users/coder/3?pretty=true' -d '{"name":"eden03-new","age":100}'
{
  "_index" : "users",
  "_type" : "coder",
  "_id" : "3",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 4,
  "_primary_term" : 2
}

3浴讯、查看(GET)

[root@Eden666 ~]# curl   -XGET  'localhost:9200/users/coder/3?pretty=true' 
{
  "_index" : "users",
  "_type" : "coder",
  "_id" : "3",
  "_version" : 2,
  "found" : true,
  "_source" : {
    "name" : "eden03-new",
    "age" : 100
  }
}

4朵夏、刪除(DELETE),可以發(fā)現(xiàn)刪除查詢結(jié)果返回found=false

[root@Eden666 ~]# curl   -XDELETE  'localhost:9200/users/coder/3?pretty=true' 
{
  "_index" : "users",
  "_type" : "coder",
  "_id" : "3",
  "_version" : 3,
  "result" : "deleted",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 5,
  "_primary_term" : 2
}
[root@Eden666 ~]# curl localhost:9200/users/coder/3?pretty=true
{
  "_index" : "users",
  "_type" : "coder",
  "_id" : "3",
  "found" : false
}

5榆纽、其他檢索方式仰猖,查詢字符串方式和DSL(Domain Specific Language特定領(lǐng)域語(yǔ)言)方式

  • 字符串查詢:具有局限性,不夠靈活
[root@Eden666 ~]# curl localhost:9200/users/coder/_search?pretty=true
{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 2,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "users",
        "_type" : "coder",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "name" : "eden02",
          "age" : 30
        }
      },
      {
        "_index" : "users",
        "_type" : "coder",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "name" : "eden01",
          "age" : 20
        }
      }
    ]
  }
}
[root@Eden666 ~]#  curl  'localhost:9200/users/coder/_search?q=name:eden01&pretty'
{
  "took" : 14,  //查詢毫秒數(shù)
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "users",
        "_type" : "coder",
        "_id" : "1",
        "_score" : 0.2876821,  //檢索的document的分?jǐn)?shù)掠河,分?jǐn)?shù)越高越容易檢索到
        "_source" : {
          "name" : "eden01",
          "age" : 20
        }
      }
    ]
  }
}
  • DSL方式:可以建立復(fù)雜查詢條件亮元。match:匹配的字段值,size:指定返回document數(shù)唠摹,from:位移量爆捞,默認(rèn)是0
[root@Eden666 ~]# curl -H "Content-Type:application/json"  -XGET 'localhost:9200/users/coder/_search?pretty' -d  '{"query":{"match":{"name":"eden02"}},"size":1,"from":0}'
{
  "took" : 9,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "users",
        "_type" : "coder",
        "_id" : "2",
        "_score" : 0.2876821,
        "_source" : {
          "name" : "eden02",
          "age" : 30
        }
      }
    ]
  }
}
  • DSL查詢之 or 和 and檢索
//or檢索:"query":{"match":{"name":"eden02 eden01"}}
[root@Eden666 ~]# curl -H "Content-Type:application/json"  -XGET 'localhost:9200/users/coder/_search?pretty' -d  '{"query":{"match":{"name":"eden02 eden01"}},"size":10,"from":0}'
{
  "took" : 13,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 2,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "users",
        "_type" : "coder",
        "_id" : "2",
        "_score" : 0.2876821,
        "_source" : {
          "name" : "eden02",
          "age" : 30
        }
      },
      {
        "_index" : "users",
        "_type" : "coder",
        "_id" : "1",
        "_score" : 0.2876821,
        "_source" : {
          "name" : "eden01",
          "age" : 20
        }
      }
    ]
  }
}
//and檢索需使用到布爾查詢
//{"bool": {"must": [ { "match": { "name": "eden01" } },{ "match": { "age": 20 } }]}}
[root@Eden666 ~]# curl -H "Content-Type:application/json"  -XGET 'localhost:9200/users/coder/_search?pretty' -d  '{"query":{"bool": {"must": [ { "match": { "name": "eden01" } },{ "match": { "age": 20 } }]}},"size":10,"from":0}'
{
  "took" : 19,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.287682,
    "hits" : [
      {
        "_index" : "users",
        "_type" : "coder",
        "_id" : "1",
        "_score" : 1.287682,
        "_source" : {
          "name" : "eden01",
          "age" : 20
        }
      }
    ]
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市勾拉,隨后出現(xiàn)的幾起案子煮甥,更是在濱河造成了極大的恐慌,老刑警劉巖藕赞,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件成肘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡斧蜕,警方通過(guò)查閱死者的電腦和手機(jī)双霍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)批销,“玉大人洒闸,你說(shuō)我怎么就攤上這事【浚” “怎么了丘逸?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)掀宋。 經(jīng)常有香客問(wèn)我深纲,道長(zhǎng)仲锄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任湃鹊,我火速辦了婚禮儒喊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涛舍。我一直安慰自己澄惊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布富雅。 她就那樣靜靜地躺著掸驱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪没佑。 梳的紋絲不亂的頭發(fā)上毕贼,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音蛤奢,去河邊找鬼鬼癣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛啤贩,可吹牛的內(nèi)容都是我干的待秃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼痹屹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼章郁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起志衍,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤暖庄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后楼肪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體培廓,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年春叫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肩钠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡暂殖,死狀恐怖价匠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情央星,我是刑警寧澤霞怀,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布惫东,位于F島的核電站莉给,受9級(jí)特大地震影響毙石,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颓遏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一徐矩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叁幢,春花似錦滤灯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至黍判,卻和暖如春豫尽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顷帖。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工美旧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贬墩。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓榴嗅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親陶舞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗽测,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

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