如何使用 Elasticsearch 集群实现搜索功能?
目录
,
1 使用Elasticsearch集群实现搜索功能
搜索功能基本是前端项目必不可少的一个功能,而Elasticsearch是一款全文搜索引擎,也就是说可以通过Elasticsearch集群实现搜索功能。
Elasticsearch集群实现搜索功能可以将搜索过程分为两个基本步骤:数据索引步骤和数据搜索步骤。其中,数据索引步骤是使用Elasticsearch集群将原始数据存储到集群中以供搜索,执行此步骤之后,可以让搜索比较快。而数据搜索步骤是真正实现搜索功能的步骤。
2 数据索引步骤
2.1 搜索索引配置
搜索索引是搜索引擎首先处理的起点,是你的数据的存储的位置,可以使用Elasticsearch的Mapping,既可以映射普通字段,又可以映射特殊字段,比如搜索建议,自动完成等等。搜索索引的配置可以用JSON的格式来完成,如下所示:
{
"name": {
"type": "text"
}
}
2.2 向Elasticsearch集群存储数据
当搜索索引配置完成后,就可以向Elasticsearch集群存储数据,数据可以使用JSON格式、XML格式进行存储。Elasticsearch集群支持单个文档加载、批量文档加载和流式文档加载等不同的形式进行文档存储,如下所示:
PUT /index/type/1
{
“name”: “jack”
}
POST /index/_bulk
{ "index": { "_type": "_doc", "_id": 1 } }
{ "name" : "Jack" }
{ "index": { "_type": "_doc", "_id": 2 } }
{ "name" : "Tom" }
{ "index": { "_type": "_doc", "_id": 3 } }
{ "name" : "Lilei" }
# 流式文档加载
POST /_bulk
{"index":{"_index":"bank","_type":"account"}}
{"account_number":1,"balance":200}
{"index":{"_index":"bank","_type":"account"}}
{"account_number":2,"balance":250}
3 数据搜索步骤
3.1 构造查询请求
Elasticsearch集群支持多种查询请求,如果要搜索特定字段,可以使用要搜索字段query;也可以使用多字段查询,即multi literal query来实现查询,如下所示:
GET /index/type/_search
{
"query": {
"match": {
"user": "zhangsan"
}
}
}
GET /index/type/_search
{
"query": {
"multi_match": {
"query": "zhangsan",
"fields": ["user", "name","address"]
}
}
}
3.2 发送查询请求
构造查询请求完毕,便可以向Elasticsearch集群发送查询请求,通过Elasticsearch集群来检索出符合用户需求的结果,可以使用下面的代码来发送查询请求:
GET /index/type/_search
{
"query": {
"multi_match": {
"query": "zhangsan",
"fields": ["user", "name","address"]
}
}
}
最后,Elasticsearch集群会返回更多的结果,供用户浏览,实现搜索功能。