Elasticsearch----_search搜索、multi-index和multi-type搜索模式、分页、query string

_search

GET /_search

搜索所有的doucment并默认返回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:整个搜索请求花费了多少毫秒
  • hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少,每一条document对于search的相关度,越相关,_score分数越大,排位越靠前
  • hits.hits:默认返回10条完整的数据,_score降序排列
  • shards:shards fail的条件(primary和replica全部挂掉),不影响其他shard。默认情况下来说,一个搜索请求,会打到一个index的所有primary shard上去,当然了,每个primary shard都可能会有一个或多个replic shard,所以请求也可以到primary shard的其中一个replica shard上去。
  • timeout:默认无timeout,可以手动指定timeout(timeout=10ms,timeout=1s,timeout=1m,GET /_search?timeout=10m)
  • timeout机制:指定每个shard,就只能在timeout时间范围内,将搜索到的部分数据(也可能全部都搜索到了),直接立即返回给client程序,而不是等到所有的数据全部搜索出来以后再返回,确保说,一次搜索请求可以在用户指定的timeout时长内完成。为一些时间敏感的搜索应用提供良好的支持。

multi-index和multi-type搜索模式

GET /_search    //所有索引,所有type下的所有数据都搜索出来
GET /index1/_search    //指定一个index,搜索其下所有type的数据
GET /index1,index2/_search    //同时搜索两个index下的数据
GET /*1,*2/_search    //按照通配符去匹配多个索引
GET /inde1/type1/_search    //搜索一个index下指定的type的数据
GET /index1/type1,type2/_search    //可以搜索一个index下多个type的数据
GET /index1,index2/type1,type2/_search    //搜索多个index下的多个type的数据
GET /_all/type1,type2/_search    //可以代表搜索所有index下的指定type的数据

分页

分页语法:

GET /_search?size=pageSize&from=start  //pageSize页大小,start从那条数据开始

示例:
假设有9条数据

//第一页
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条数据,每个shard有20000条数据。每页10条数据,假设要搜索第1000页?
分析:

请求可能发送到一个不包含这个index的shard所在的node上,这个node就是coordinate node,那么这个coordinate node就会将搜索请求转发到index的三个node上去。
实际上,每个shard都要将内部的20000条数据中的第1000页数据,拿出来。3个shard每个shard都要返回100010条数据给coordinate node,coordinate node会收到共30030条数据,然后再将这些数据排序,_score相关分数排序,然后取排位最高的前10条数据,其实就是我们要的最后1000页的10条数据

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包含指定的关键字就可以搜索出来。
es中的_all元数据,在建立索引的时候,我们插入一条document,它里面包含了多个field,此时,es会自动将多个field的值,全部用字符串的方式串联起来,变成一个长的字符串,作为_all field的值,同时建立索引
后面如果在搜索的时候,没有对某个field指定搜索,就默认搜索_all field,其中是包含了所有field的值的

举个例子

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

"jack 26 jack@sina.com guangzhou",作为这一条document的_all field的值,同时进行分词后建立对应的倒排索引

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容