这里,我们以一个示范的例子,向您简单介绍天翼云Elasticsearch实例可以提供的检索和分析服务,包括创建索引、数据导入、数据搜索、筛选排序等。
操作步骤
创建实例
- 在【云搜索服务】产品页,单击【立即开通】。
- 在云搜索服务实例创建页面选择实例类型为Elasticsearch、订购周期、当前区域(即资源池)、可用区、填写实例名称、节点规格等基础配置信息后,按页面提示并根据需要进行配置,然后点击下一步。
- 按确认信息页面提示,勾选相关协议,公测期间支付0元,即可完成订购,等待资源开通完成,对应实例处于“运行中”状态,即为成功。
导入数据
Elasticsearch实例支持多种导入方式,常用的业务场景是把Logstash作为源接入搜索实例,在此,为了演示方便,我们以商品检索为例子,从Kibana的DevTools控制台里调用Rest API导入数据。
- 先在Kibana的左边栏里选择“Dev Tools“,进入控制台,其中左边屏幕为命令行调用API栏,右边屏幕为调用结果返回栏。
- 首先,在console界面,我们创建索引products_fruits来定义存储数据的Schema。
具体语句如下:
PUT /products_fruits
{
"mappings": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"price": {
"type": "long"
}
}
},
"settings": {
"number_of_shards": "1",
"number_of_replicas": "0"
}
}
- 然后在console里执行bulk插入语句,来将数据导入到索引里。
返回结果里errors为false,表示数据全部导入,具体语句如下:
PUT /products_fruits/_bulk
{"index":{"_id":1}}
{"name": "苹果", "price": 10}
{"index":{"_id":2}}
{"name": "香蕉", "price": 20}
{"index":{"_id":3}}
{"name": "菠萝", "price": 15}
{"index":{"_id":4}}
{"name": "火龙果", "price": 25}
检索数据
首先,我们进行基本的全文检索,不设置匹配条件,可以得到所有数据。
检索语句如下:
GET /products_fruits/_search
{
"query": {
"match_all": {}
}
}
同样,我们可以设置检索条件、指定分词器、指定评分等多种条件根据Rest API的语法对检索的匹配数据进行筛选,得到我们希望的数据。
聚合数据
同样,Elasticsearch也可以提供数据聚合,我们按照价格区间将商品进行聚合,返回的结果如下:
这里的聚合语句如下:
GET /products_fruits/_search
{
"size": 0,
"aggs": {
"price_ranges": {
"range": {
"field": "price",
"ranges": [
{
"from": 0,
"to": 10
},
{
"from": 10,
"to": 20
},
{
"from": 20,
"to": 30
}
]
}
}
}
}
数据排序
同样,数据结果排序,也是Elasticsearch一个重要的用途,我们这里按照价格排序将结果检索出来,右侧边栏按照价格降序进行输出,如下:
排序语句如下:
GET /products_fruits/_search
{
"query": {
"match_all": {}
}
, "sort": [
{
"price": {
"order": "desc"
}
}
]
}
删除索引数据
当索引不再使用的时候,我们执行语句删除索引即可:
DELETE /products_fruits