ES-DSL基本使用

ES版本:6.8

本篇文章主要介紹在ES中如何進(jìn)行數(shù)據(jù)的增刪查改

新增數(shù)據(jù)

ES可以直接新增數(shù)據(jù)猾蒂,沒有索引會自動創(chuàng)建索引唾那,但是不推薦這種方式溪掀,因?yàn)闀鶕?jù)默認(rèn)值創(chuàng)建分片和副本數(shù)枷踏。

// test1索引名凿可,_doc是類型繁仁,1表示主鍵值(也可以省略涉馅,ES會默認(rèn)生成一個)
POST test1/_doc/1
{
    "uid" : "1234",
    "phone" : "12345678909",
    "message" : "qq",
    "msgcode" : "1",
    "sendtime" : "2019-03-14 01:57:04"
}

創(chuàng)建索引

ES常用基本類型有text、keyword黄虱、byte稚矿、short、integer捻浦、long晤揣、float、double朱灿、boolean昧识、date。其中text簡單理解為需要分詞盗扒,keyword不會分詞可以進(jìn)行排序或聚合

如下跪楞,指定settings和mappings來創(chuàng)建索引

PUT test1
{
  "settings": {
    //分片數(shù)
    "number_of_shards": 10,
    // 副本數(shù)
    "number_of_replicas": 1,
    // 刷新頻率
    "refresh_interval": "1s"
  },
  "mappings": {
    "_doc": {
      "properties": {
        "uid": {
          "type": "long"
        },
        "phone": {
          "type": "long"
        },
        "message": {
          "type": "keyword"
        },
        "msgcode": {
          "type": "long"
        },
        "sendtime": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss"
        }
      }
    }
  }
}

查詢所有索引信息

GET _cat/indices

查詢數(shù)據(jù)

// 查詢索引test1,返回settings,mapping等
GET test1
// 查詢test1索引下的settings侣灶,里面是索引相關(guān)信息甸祭,比如分區(qū)數(shù)副本數(shù)等
GET test1/_settings
// 查詢test1索引下的mapping,里面是字段的一些信息
GET test1/_mapping

修改數(shù)據(jù)

  1. ES的修改和新增其實(shí)是一樣的褥影,沒有數(shù)據(jù)就創(chuàng)建池户。
// 如果ES中沒有此數(shù)據(jù),則創(chuàng)建凡怎;如果存在校焦,則覆蓋
POST test1/_doc/1
{
    "uid" : "1234",
    "phone" : "12345678909",
    "message" : "qq",
    "msgcode" : "1",
    "sendtime" : "2019-03-14 01:57:04"
}
  1. 根據(jù)條件修改
POST test1/_update_by_query
{
  "query": {
    // term 精確匹配,下面會有說明
    "term": {
      "phone": "12345678909"
    }
  } ,
  "script": {
    // 將message字段內(nèi)容修改為xuwujing
    "source": "ctx._source['message'] = 'xuwujing'"
  }
}

刪除數(shù)據(jù)

  1. 根據(jù)主鍵刪除
DELETE test1/1
  1. 根據(jù)條件刪除
POST test/_delete_by_query
{
  "query":{
        "term":{
              "phone":"12345678909"
          }
    }
}
  1. 刪除字段
POST test1/_doc/_update_by_query
{
  "script": {
    "lang": "painless",
    "source": "ctx._source.remove(\"msgcode\")"
  }
}

查詢

查詢所有

// match_all查詢集群所有索引庫信息栅贴,包括隱藏的索引庫
GET _search
{   
  "query": {
    "match_all": {}
  }
}

查詢某個索引下的數(shù)據(jù)斟湃,語法為:GET 索引庫名稱/索引庫類型/_search, 其中索引庫類型也可以不寫,如下

// 查詢test1所有數(shù)據(jù)
GET  test1/_doc/_search
// 查詢test2下主鍵為2的數(shù)據(jù)
GET  test1/_doc/2

term查詢

term用于精確匹配檐薯,比如數(shù)字凝赛,日期,布爾值等
例如:

// 查詢phone為12345678909的所有記錄
GET  test1/_doc/_search
{
  "query": {
    "term": {
      "phone": "12345678909"
    }
  }
}
// terms查詢坛缕,類似SQL中的in
GET  test1/_doc/_search
{
  "query": {
    "terms": {
       "uid": [ 
        1234, 
        12345, 
        123456
      ] 
    }
  }
}

range查詢

范圍查詢墓猎,gt大于,lt小于赚楚,gte大于等于毙沾,lte小于等于

// 查詢uid大于1234,小于等于12345的記錄
GET  test1/_doc/_search
{
  "query": {
   "range": { 
      "uid": { 
        "gt": 1234,
        "lte": 12345
      } 
    } 
  }
}

exists查詢

// 查詢存在msgcode字段的記錄
GET  test1/_doc/_search
{
  "query": {
   "exists": { 
       "field":"msgcode" 
    } 
  }
}

bool查詢

可以用來合并多個過濾條件

  • must:多個查詢條件的完全匹配,相當(dāng)于 and宠页。
  • must_not:多個查詢條件的相反匹配左胞,相當(dāng)于 not寇仓。
  • should:至少有一個查詢條件匹配, 相當(dāng)于 or。
GET /test1/_search
{
  "query": {
    "bool": {
      "must": {
        "term": {
          "phone": "12345678909"
        }
      },
      "must_not": {
        "term": {
          "uid": 12345
        }
      },
      "should": [
        {
          "term": {
            "uid": 1234
          }
        },
        {
          "term": {
            "uid": 123456
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  }
}

wildcard查詢

wildcard類似于SQL的like查詢,需要帶上**

GET /test1/_search
{
  "query": {
   "wildcard": { 
       "message":"*wu*" 
    } 
  }
}

regexp查詢

regexp即正則查詢

GET /test1/_search
{
  "query": {
   "regexp": { 
       "message":"xu[0-9]" 
    } 
  }
}

全文檢索

ES根據(jù)查詢條件計(jì)算每個匹配的記錄的得分烤宙,即_scope字段遍烦,默認(rèn)根據(jù)得分排序返回

match

  • match是標(biāo)準(zhǔn)的全文檢索
  • 在匹配之前會先對查詢關(guān)鍵字進(jìn)行分詞
  • 可以指定分詞器來覆蓋mapping中設(shè)置的搜索分詞器
    如下例子,會根據(jù)ik_smart分詞器將超級羽絨服關(guān)鍵字分詞為超級躺枕、羽絨服然后再去es中查詢與這兩個分詞相匹配的文檔服猪,依據(jù)相關(guān)度即分值得到以下結(jié)果
GET idx_pro/_search
{
  "query": {
    "match": {
      "name": {
        "query": "超級羽絨服",
        "analyzer": "ik_smart"
      }
    }
  }
}

match_phrase

match是根據(jù)分詞后的結(jié)果進(jìn)行匹配,match_phrase來直接進(jìn)行短語匹配.如下例子拐云,會查詢address字段中包含mill lane短語的記錄

GET /bank/_search
{
  "query": { "match_phrase": { "address": "mill lane" } }
}

如果緩存match罢猪,則只有address包含mill或lane,這些記錄都會返回

GET /bank/_search
{
  "query": { "match": { "address": "mill lane" } }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叉瘩,一起剝皮案震驚了整個濱河市膳帕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌房揭,老刑警劉巖备闲,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捅暴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)咧纠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門蓬痒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漆羔,你說我怎么就攤上這事梧奢。” “怎么了演痒?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵亲轨,是天一觀的道長。 經(jīng)常有香客問我鸟顺,道長惦蚊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任讯嫂,我火速辦了婚禮蹦锋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘欧芽。我一直安慰自己莉掂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布千扔。 她就那樣靜靜地躺著憎妙,像睡著了一般库正。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厘唾,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天诀诊,我揣著相機(jī)與錄音,去河邊找鬼阅嘶。 笑死属瓣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的讯柔。 我是一名探鬼主播抡蛙,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼魂迄!你這毒婦竟也來了粗截?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤捣炬,失蹤者是張志新(化名)和其女友劉穎熊昌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湿酸,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婿屹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了推溃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昂利。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铁坎,靈堂內(nèi)的尸體忽然破棺而出蜂奸,到底是詐尸還是另有隱情,我是刑警寧澤硬萍,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布扩所,位于F島的核電站,受9級特大地震影響朴乖,放射性物質(zhì)發(fā)生泄漏祖屏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一寒砖、第九天 我趴在偏房一處隱蔽的房頂上張望赐劣。 院中可真熱鬧,春花似錦哩都、人聲如沸魁兼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咐汞。三九已至盖呼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間化撕,已是汗流浹背几晤。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留植阴,地道東北人蟹瘾。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像掠手,于是被迫代替她去往敵國和親憾朴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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