Elasticsearch Search APIs1

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch Search APIs

测试环境:

Win elasticsearch-5.4.1

 

1. 搜索

在单个索引的所有类型中搜索

.customer索引中查找包含firstname字段,且值字段值包含单词brad的文档

GET /customer/_search?q=firstname:Brad

 

在单个索引的指定类型中搜索

.customer索引的external,sometype类型中查找包含firstname字段,且值字段值包含单词brad的文档

GET /customer/external,sometype/_search?q=firstname:Brad

 

在多个指定的索引中搜索

.customeraccount索引中查找包含firstname字段,且值字段值包含单词brad的文档

GET /account,customer/sometype/_search?q=firstname:Brad

GET /account,customer/_search?q=firstname:Brad

 

注意:索引之间只能以逗号隔开,不能有空格,比如account, customer

 

 

 

在所有索引中搜索

.在所有索引的sometype类型中查找包含firstname字段,且值字段值包含单词brad的文档

GET /_all/sometype/_search?q=firstname:Brad

 

.在所有索引中查找包含firstname字段,且值字段值包含单词brad的文档

GET /_all/_search?q=firstname:Brad

 

或者

GET /_search?q=firstname:Brad

 

参考链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html

 

 

2. URI搜索

常用参数说明:

q: 要查询的字段值

 

. customer索引external类型中查找字段值16623的文档

GET /customer/external/_search?q=16623

 

_source:指定文档中hits包含的字段值

 

. customer索引external类型中查找字段值16623的文档,仅返回firstname,lastname,balance字段

 

GET /customer/external/_search?q=16623&_source=firstname,lastname,balance

 

注意:字段值之间只能以逗号分隔,且不能包含空格,比如firstname, lastname,

 

sort:用于排序文档,格式fieldNamefieldName:ascfieldName:desc

其中,asc表示按fieldName字段值升序排序,同不带fieldName,相反desc表示降序排序,可以按多个字段排序,格式形如fieldName1:asc,fieldName2:desc,的先按字段fieldName1的值升序排序,fieldName1值相同的话,再按fieldName2的值降序排序

 

.查询customer索引external类型中的所有文档,按balance字段值升序排序。

GET /customer/external/_search?sort=balance:asc

 

.查询customer索引external类型中的所有文档,按balance字段值升序排序,balance字段值相同则按account_number降序排序。

GET /customer/external/_search?sort=balance:asc,account_number:desc

 

from:指定需要返回记录的起始索引,默认为0,可以理解为mysql查询limit子句的offset

 

size:需要返回的记录数,默认为10

 

 

参考链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-uri-request.html

 

3. 请求体搜索

. 查询/customer索引,external类型中包含firstname字段,且值为Braw的记录

POST /customer/external/_search?pretty

{

  "query": {

     "term": {

        "firstname": "braw"

     }

  }

}

 

注意:PUT也可以替换为GET

注意:例中,如果把"firstname": "braw" 改成"firstname": "Braw",查询查不到结果,估计默认设置的情况下,先把文档字段值转小写后进行的比较

 

返回结果部分截图

 

说明:默认情况下,查询结果不区分大小,但是字段名是区分大小写的。

 

常见参数:参考 URI搜索

 

参考链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html

 

1. query

参考链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-query.html

 

2. from/size

.返回查询结果中,索引大于等于1的记录,总的返回一条记录

POST customer/external/_search?pretty

{

  "query": {

     "term": {

        "firstname": "braw"

     }

  },

  "from": 1,

  "size": 1

}

 

注意:from + size不能大于index.max_result_window设置的值(默认1000)

 

参考链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.html

 

3. sort

sort 对查询结果排序

 

. 对查询结果排序,按account_number降序排序,account_number相同的情况下,按balance升序排序

POST customer/external/_search?pretty

{

  "query": {

     "match_all": {}

  },

  "sort": [

     {

        "account_number":{ "order": "desc"},

        "balance":"asc"

     }

  ]

}

 

说明:

1、desc:降序,asc:升序

如上,"account_number":{ "order": "desc"},也可以简单写成"account_number":"desc",

 

sort mode选项

mode选项用于字段值为数组列表、多个值组成的字段排序,可选值如下:

min

 

 

选择数组中的最小值,用于字段排序

 

max

选择数组中的最大值,用于字段排序

 

sum

使用数组中所有值总和,用于字段排序,仅限于字段值由数字组成的数组

 

avg

使用数组中所有值的均值,用于字段排序,仅限于字段值由数字组成的数组

 

median

使用数组中所有值的中位数,用于字段排序,仅限于字段值由数字组成的数组

 

按如下方式创建一些文档记录

PUT /product/fruit/4?pretty

{

   "product":"orange",

   "price":[12, 17, 22]

}

 

例子.price字段的数组均值降序排序查询结果

POST /product/fruit/_search

{

  "query": {

     "match_all": {}

  },

  "sort": [

     {

        "price": {

           "order": "desc",

           "mode": "avg"

        }

     }

  ]

}

 

 

嵌套对象里的排序

嵌套对象映射

.设置offer字段为嵌套对象(同时也会执行类型的创建操作)

PUT /product

{

  "mappings": {

     "myfruit": {

        "properties": {

           "offer": {

              "type": "nested",

              "properties": {

                 "price": {"type":"short"}

              }

           }

        }

     }

  }

}

 

PUT /product/myfruit/1?pretty

{

  "product": "orange",

  "offer": [{

     "price": [

        12,

        17,

        22

     ]

  }]

}

 

PUT /product/myfruit/2?pretty

{

  "product": "apple",

  "offer": [{

     "price": [

        14,

        10,

        9

     ]

  }]

}

 

PUT /product/myfruit/3?pretty

{

  "product": "apple",

  "offer": [

     {}

  ]

}

 

POST /product/myfruit/_search

{

  "query": {

     "match_all": {}

  },

  "sort": [

     {

        "offer.price": {

           "order": "asc",

           "mode": "avg",

           "nested_path":"offer"

        }

     }

  ]

}

 

说明:

nested_path:指明在哪个嵌套对象上进行排序

 

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
存储 SQL JSON
Elasticsearch Search API之搜索模板(search Template)
Elasticsearch Search API之搜索模板(search Template)
Elasticsearch Search API之搜索模板(search Template)
|
监控 API UED
Elasticsearch 异步搜索 Async search 实战
1、Elasticsearch 异步搜索定义 异步搜索 API 可异步执行搜索请求、监控其进度并检索可用的部分结果。 如下的官方介绍动画,能更加生动的介绍清楚异步检索。 传统检索 VS 异步检索,在数据量比较大时: 传统检索可能导致超时,以至于无数据返回;或者需要等待很久,用户体验差。 异步检索,可以快速响应数据,用户无需等待。
961 0
Elasticsearch 异步搜索 Async search 实战
|
测试技术 索引
Elasticsearch search after分页检索案例
Elasticsearch search after分页检索案例分享 The best elasticsearch highlevel java rest api-----bboss 1.准备工作 参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端 2.
5167 0
Elasticsearch Search APIs2
Elasticsearch Search APIs
67 0
   Elasticsearch Search APIs2
|
算法
白话Elasticsearch14-深度探秘搜索技术之基于multi_match 使用most_fields策略进行cross-fields search弊端
白话Elasticsearch14-深度探秘搜索技术之基于multi_match 使用most_fields策略进行cross-fields search弊端
84 0
Elasticsearch Search APIs3
Elasticsearch Search APIs3
53 0
Elasticsearch搜索模板search tempalte
Elasticsearch搜索模板search tempalte
|
存储 Java API
Elasticsearch Search API之(Request Body Search 查询主体)-下篇
Elasticsearch Search API之(Request Body Search 查询主体)-下篇
Elasticsearch Search API之(Request Body Search 查询主体)-下篇
|
存储 自然语言处理 算法
Elasticsearch Search API之(Request Body Search 查询主体)-上篇
Elasticsearch Search API之(Request Body Search 查询主体)-上篇
Elasticsearch Search API之(Request Body Search 查询主体)-上篇
|
缓存 算法 关系型数据库
Elasticsearch Search API 概述与URI Search
Elasticsearch Search API 概述与URI Search
Elasticsearch Search API 概述与URI Search