Elasticsearch----_search搜索灯节、multi-index和multi-type搜索模式循头、分頁绵估、query string

_search

GET /_search

搜索所有的doucment并默認(rèn)返回10條document

{
  "took": 14,
  "timed_out": false,
  "_shards": {
    "total": 16,
    "successful": 16,
    "failed": 0
  },
  "hits": {
    "total": 17,
    "max_score": 1,
    "hits": [
      {
        "_index": "test_index",
        "_type": "test_type",
        "_id": "AVsxkqabZ1jIX97EnDWz",
        "_score": 1,
        "_source": {
          "test_filed": "auto_id"
        }
      },
      ... //10條document
    ]
  }
}

部分字段說明:

  • took:整個搜索請求花費(fèi)了多少毫秒
  • hits.max_score:本次搜索的所有結(jié)果中,最大的相關(guān)度分?jǐn)?shù)是多少卡骂,每一條document對于search的相關(guān)度国裳,越相關(guān),_score分?jǐn)?shù)越大全跨,排位越靠前
  • hits.hits:默認(rèn)返回10條完整的數(shù)據(jù)缝左,_score降序排列
  • shards:shards fail的條件(primary和replica全部掛掉),不影響其他shard浓若。默認(rèn)情況下來說渺杉,一個搜索請求,會打到一個index的所有primary shard上去七嫌,當(dāng)然了少办,每個primary shard都可能會有一個或多個replic shard,所以請求也可以到primary shard的其中一個replica shard上去诵原。
  • timeout:默認(rèn)無timeout英妓,可以手動指定timeout(timeout=10ms,timeout=1s绍赛,timeout=1m蔓纠,GET /_search?timeout=10m)
  • timeout機(jī)制:指定每個shard,就只能在timeout時間范圍內(nèi)吗蚌,將搜索到的部分?jǐn)?shù)據(jù)(也可能全部都搜索到了)腿倚,直接立即返回給client程序,而不是等到所有的數(shù)據(jù)全部搜索出來以后再返回蚯妇,確保說敷燎,一次搜索請求可以在用戶指定的timeout時長內(nèi)完成。為一些時間敏感的搜索應(yīng)用提供良好的支持箩言。

multi-index和multi-type搜索模式

GET /_search    //所有索引硬贯,所有type下的所有數(shù)據(jù)都搜索出來
GET /index1/_search    //指定一個index,搜索其下所有type的數(shù)據(jù)
GET /index1,index2/_search    //同時搜索兩個index下的數(shù)據(jù)
GET /*1,*2/_search    //按照通配符去匹配多個索引
GET /inde1/type1/_search    //搜索一個index下指定的type的數(shù)據(jù)
GET /index1/type1,type2/_search    //可以搜索一個index下多個type的數(shù)據(jù)
GET /index1,index2/type1,type2/_search    //搜索多個index下的多個type的數(shù)據(jù)
GET /_all/type1,type2/_search    //可以代表搜索所有index下的指定type的數(shù)據(jù)

分頁

分頁語法:

GET /_search?size=pageSize&from=start  //pageSize頁大小陨收,start從那條數(shù)據(jù)開始

示例:
假設(shè)有9條數(shù)據(jù)

//第一頁
GET /test_index/test_type/_search?size=3&from=0
//第二頁
GET /test_index/test_type/_search?size=3&from=3
//第三頁
GET /test_index/test_type/_search?size=3&from=6

深度分頁問題
比如有60000條數(shù)據(jù)饭豹,每個shard有20000條數(shù)據(jù)。每頁10條數(shù)據(jù)务漩,假設(shè)要搜索第1000頁拄衰?
分析:

請求可能發(fā)送到一個不包含這個index的shard所在的node上,這個node就是coordinate node饵骨,那么這個coordinate node就會將搜索請求轉(zhuǎn)發(fā)到index的三個node上去翘悉。
實際上,每個shard都要將內(nèi)部的20000條數(shù)據(jù)中的第1000頁數(shù)據(jù)居触,拿出來镐确。3個shard每個shard都要返回100010條數(shù)據(jù)給coordinate node包吝,coordinate node會收到共30030條數(shù)據(jù),然后再將這些數(shù)據(jù)排序源葫,_score相關(guān)分?jǐn)?shù)排序,然后取排位最高的前10條數(shù)據(jù)砖瞧,其實就是我們要的最后1000頁的10條數(shù)據(jù)

deep page

query string

語法及含義

GET /index/type/_search?q=test_field:test //test_field字段息堂,包含test
GET /index/type/_search?q=+test_field:test //和上面的一樣
GET /index/type/_search?q=-test_field:test//test_field字段,不包含test
GET /index/type/_search?q=test //任意一個字段块促,包含test

_all metadata的原理和作用

GET /index/type/_search?q=test
//或者
GET /index/type/_search
{
  "query": {
    "match": {
      "_all": "test"
    }
  }
}

直接可以搜索所有的field荣堰,任意一個field包含指定的關(guān)鍵字就可以搜索出來。
es中的_all元數(shù)據(jù)竭翠,在建立索引的時候振坚,我們插入一條document,它里面包含了多個field斋扰,此時渡八,es會自動將多個field的值,全部用字符串的方式串聯(lián)起來传货,變成一個長的字符串屎鳍,作為_all field的值,同時建立索引
后面如果在搜索的時候问裕,沒有對某個field指定搜索逮壁,就默認(rèn)搜索_all field,其中是包含了所有field的值的

舉個例子

{
  "name": "jack",
  "age": 26,
  "email": "jack@sina.com",
  "address": "guamgzhou"
}

"jack 26 jack@sina.com guangzhou"粮宛,作為這一條document的_all field的值窥淆,同時進(jìn)行分詞后建立對應(yīng)的倒排索引

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市巍杈,隨后出現(xiàn)的幾起案子忧饭,更是在濱河造成了極大的恐慌,老刑警劉巖秉氧,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眷昆,死亡現(xiàn)場離奇詭異,居然都是意外死亡汁咏,警方通過查閱死者的電腦和手機(jī)亚斋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攘滩,“玉大人帅刊,你說我怎么就攤上這事∑剩” “怎么了赖瞒?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵女揭,是天一觀的道長。 經(jīng)常有香客問我栏饮,道長吧兔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任袍嬉,我火速辦了婚禮境蔼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伺通。我一直安慰自己箍土,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布罐监。 她就那樣靜靜地躺著吴藻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弓柱。 梳的紋絲不亂的頭發(fā)上沟堡,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音吆你,去河邊找鬼弦叶。 笑死,一個胖子當(dāng)著我的面吹牛妇多,可吹牛的內(nèi)容都是我干的伤哺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼者祖,長吁一口氣:“原來是場噩夢啊……” “哼立莉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起七问,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蜓耻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后械巡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刹淌,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年讥耗,在試婚紗的時候發(fā)現(xiàn)自己被綠了有勾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡古程,死狀恐怖蔼卡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挣磨,我是刑警寧澤雇逞,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布荤懂,位于F島的核電站,受9級特大地震影響塘砸,放射性物質(zhì)發(fā)生泄漏节仿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一掉蔬、第九天 我趴在偏房一處隱蔽的房頂上張望粟耻。 院中可真熱鬧,春花似錦眉踱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至戈泼,卻和暖如春婿禽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背大猛。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工扭倾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挽绩。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓膛壹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唉堪。 傳聞我的和親對象是個殘疾皇子模聋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

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