一.字符串查询(query string search)

1.全搜索

timeout参数:是超时时长定义。代表每个节点上的每个shard执行搜索时最多耗时多久。不会影响响应的正常返回。只会影响返回响应中的数据数量。

GET [索引名/类型名/]_search?timeout=10ms

结果:

{
  "took": 144, #请求耗时多少毫秒
  "timed_out": false, #是否超时。默认情况下没有超时机制,也就是客户端等待Elasticsearch搜索结束(无论执行多久),提供超时机制的话,Elasticsearch则在指定时长内处理搜索,在指定时长结束的时候,将搜索的结果直接返回(无论是否搜索结束)。指定超时的方式是传递参数,参数单位是:毫秒-ms。秒-s。分钟-m。
  "_shards": {
    "total": 1, #请求发送到多少个shard上
    "successful": 1,#成功返回搜索结果的shard
    "skipped": 0, #停止服务的shard
    "failed": 0 #失败的shard
  },
  "hits": {
    "total": 1, #返回了多少结果
    "max_score": 1, #搜索结果中,最大的相关度分数,相关度越大分数越高,_score越大,排位越靠前。
    "hits": [ #搜索到的结果集合,默认查询前10条数据。
      {
        "_index": "test_index", #数据所在索引
        "_type": "test_type", #数据所在类型
        "_id": "1", #数据的id
        "_score": 1, #数据的搜索相关度分数
        "_source": { # 数据的具体内容。
          "field": "value"
        }
      }
    ]
  }
}

2.multi index搜索

所谓的multi-index就是从多个index中搜索数据。相对使用较少,只有在复合数据搜索的时候,可能出现。一般来说,如果真使用复合数据搜索,都会使用_all。
如:搜索引擎中的无条件搜索。(现在的应用中都被屏蔽了。使用的是默认搜索条件,执行数据搜索。 如: 电商中的搜索框默认值, 搜索引擎中的类别)
无条件搜索,在搜索应用中称为“魔鬼搜索”,代表的是,搜索引擎会执行全数据检索,效率极低,且对资源有非常高的压力。

 GET 索引名/_search?q=字段名:搜索条件
示例:get test_search/test_type/_search?q=eage:26
对搜索条件为中文支持不友好。

3.分页搜索

默认情况下,Elasticsearch搜索返回结果是10条数据。从第0条开始查询。
size和from是es中具有特定含义的属性名。
语法:

GET 索引名/_search?size=10 # size查询数据的行数

GET 索引名/_search?from=0&size=10 # from 从第几行开始查询,行号从0开始。

4.+/-搜索

GET 索引名/_search?q=字段名:条件

GET 索引名/_search?q=+字段名:条件

GET 索引名/_search?q=-字段名:条件
  • :和不定义符号含义一样,就是搜索指定的字段中包含key words的数据
  • : 与+符号含义相反,就是搜索指定的字段中不包含key words的数据

5.排序

GET test_search/_search?sort=eage:asc

GET test_search/_search?sort=eage:desc