Elasticsearch,简称为es。es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文检索变得简单。
Elasticsearch是面向文档的,意味着它可以存储整个对象或者文档。然而它不仅仅可以存储,还会索引每个文档的内容使之可以被搜索。在Elasticsearch中,可以对文档进行索引,搜索,排序,过滤。Elasticsearch相比于传统的关系型数据库如下:
使用Postman工具进行Restful接口的访问
Elasticsearch的接口语法
curl -x<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
参数 | 解释 |
---|---|
VERB | 适当的Http方法或调用:GET POST PUT DELETE |
PROTOCOL | http 或者 https |
HOST | Elasticsearch集群中任意节点的主机名,或者用local host代表本地机器上的节点 |
PORT | 端口号,默认为9200 |
PATH | API的终端路径(例如_count将返回集群中文档数量)。path可能包含多个组件,例如:_cluster/stats和_nodes/stats/jvm |
QUERY_STRING | 任意可选的查询字符串参数 |
BODY | 一个json格式的请求体 |
1.创建索引index和映射mapping(相当于数据库中表的规则)
创建名为blog2的索引,类型名为article,该类型下有两个域分别为id,title。
请求url:
put http://127.0.0.1:9200/blog2
{
"mapping":{
"article":{
"properties":{
"id":{
"type":"long",
"store":true,
"index":"not_analyzed"
},
"title":{
"type":"text",
"store":true,
"index":"analyzed",
"analyzer":"standard"
}
}
}
}
}
2.创建索引后,设置mapping
post http://127.0.0.1:9200/blog2/article/_mapping
"article":{
"properties":{
"id":{
"type":"long",
"store":true,
"index":"not_analyzed"
},
"title":{
"type":"text",
"store":true,
"index":"analyzed",
"analyzer":"standard"
}
}
}
3.删除索引index
delete http://127.0.0.1:9200/blog1
4.添加一条记录document(修改记录还是添加记录的url,只需更改请求体即可)
post http://127.0.0.1:9200/blog1/article/1
{
"id":1,
"title":"这是一个金苹果"
}
5.根据id查询记录
GET http://127.0.0.1:9200/blog1/article/1
6.查询文档querystring查询
post http://127.0.0.1:9200/blog1/article/_search
{
"query":{
"query_string":{
"default_field":"title",
"query":"金苹果"
}
}
}