使用Postman工具进行Restful接口访问
ElasticSearch的接口语法
curl -X '://:/?' -d ''
其中:
| 参数 | 解释 |
| -------------- | ---------------------------------------- |
| `VERB` | 适当的 HTTP *方法* 或 *谓词* : `GET`、 `POST`、 `PUT`、 `HEAD` 或者 `DELETE`。 |
| `PROTOCOL` | `http` 或者 `https`(如果你在 Elasticsearch 前面有一个 `https` 代理) |
| `HOST` | Elasticsearch 集群中任意节点的主机名,或者用 `localhost` 代表本地机器上的节点。 |
| `PORT` | 运行 Elasticsearch HTTP 服务的端口号,默认是 `9200` 。 |
| `PATH` | API 的终端路径(例如 `_count` 将返回集群中文档数量)。Path 可能包含多个组件,例如:`_cluster/stats` 和 `_nodes/stats/jvm` 。 |
| `QUERY_STRING` | 任意可选的查询字符串参数 (例如 `?pretty` 将格式化地输出 JSON 返回值,使其更容易阅读) |
| `BODY` | 一个 JSON 格式的请求体 (如果请求需要的话) |
创建索引index和映射mapping
请求体:
{"mappings": {"article": {"properties": {"id": {"type": "long","store": true,"index":"not_analyzed"},"title": {"type": "text","store": true,"index":"analyzed","analyzer":"standard"},"content": {"type": "text","store": true,"index":"analyzed","analyzer":"standard"}}}}
}
这样我们就在es中定义好了一个索引库,并且配置了一个mapping
给已创建的index添加mapping
使用 POST 命令,给 hello 这个type添加 mapping
POST http://127.0.0.1:9200/blog/hello/_mappings
请求体为:
{"hello": {"properties": {"id": {"type": "long","store": true,"index":"not_analyzed"},"title": {"type": "text","store": true,"index":"analyzed","analyzer":"standard"},"content": {"type": "text","store": true,"index":"analyzed","analyzer":"standard"}}}
}
这样我们就在es中为blog索引库配置了一个mapping
在elasticsearch-head-master中也可以做相应PUT和POST操作
删除索引index
DELETE localhost:9200/blog2
添加文档
POST localhost:9200/blog1/article/1
请全体
{"id":1,"title":"ElasticSearch是一个基于Lucene的搜索服务器","content":"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}
注意
路径中最后的1指定了生成的文档的真正的id,如果未设置,则es自动生成一个uuid,对文档的增删改查就是要用这个_id
请全体中的id是我们数据中的一个字段
如果我们未指定_id,则自动生成
修改文档
POST localhost:9200/blog1/article/1
请求体
{"id":1,"title":"【修改】ElasticSearch是一个基于Lucene的搜索服务器","content":"【修改】它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}
删除文档document
DELETE localhost:9200/blog1/article/1
查询文档
根据id查询
GET localhost:9200/blog1/article/1
term查询
POST localhost:9200/blog1/article/_search
请全体
{"query": {"term": {"title": "为什么"}}
}
因为分词的时候使用的是标准分析器,标准分析器是基于单个汉字进行分词的,因此关键词为多个汉字的词语进行查询的时候没有结果,如果使用单个汉字作为查询条件可以查到结果
querystring查询
POST localhost:9200/blog1/article/_search
请全体
{"query":{"query_string":{"default_field":"title","query":"为什么"}}
}
会先根据字符串进行分词,将得到的所有关键词进行查询
标准分词器分词效果测试:
http://127.0.0.1:9200/_analyze?analyzer=standard&pretty=true&text=我是程序员
使用es-head进行查询