ElasticSearch的客户端基本语法操作
- 1 elasticsearch-head
- 2 使用Postman工具进行Restful接口访问
- 2.1 ElasticSearch的接口语法
- 2.2 创建索引index和映射mapping
- 2.3 创建索引后设置Mapping
- 2.4 删除索引index
- 2.5 创建文档document
- 2.6 修改文档document
- 2.7 删除文档document
- 2.8 查询文档-根据id查询
- 2.9 查询文档-query请求url:
- 2.10 查询文档-term查询
实际开发中,主要有三种方式可以作为elasticsearch服务的客户端:
第一种,elasticsearch-head插件
第二种,使用elasticsearch提供的Restful接口直接访问
第三种,使用elasticsearch提供的API进行访问
1 elasticsearch-head
ElasticSearch不同于Solr自带图形化界面,我们可以通过安装ElasticSearch的head插件,完成图形化界面的效果,完成索引数据的查看。安装插件的方式有两种,在线安装和本地安装。本次采用本地安装方式进行head插件的安装。elasticsearch-5-*以上版本安装head需要安装node和grunt
(1)下载head插件:https://github.com/mobz/elasticsearch-head
(2)将elasticsearch-head-master压缩包解压到任意目录,但是要和elasticsearch的安装目录区别开
(3)下载nodejs:https://nodejs.org/en/download/
双击安装程序,安装完毕,可以通过cmd控制台输入:node -v 查看版本号
(4)将grunt安装为全局命令 ,Grunt是基于Node.js的项目构建工具
在cmd控制台中输入如下执行命令:
cnpm install -g grunt-cli
执行结果如下图:
(5)进入elasticsearch-head-master目录启动head,在命令提示符下输入命令:
>npm install
>grunt server
(6)打开浏览器,输入 http://localhost:9100,看到如下页面:
如果不能成功连接到es服务,需要修改ElasticSearch的config目录下的配置文件:
config/elasticsearch.yml,增加以下两句命令:
http.cors.enabled: true
http.cors.allow-origin: "*"
然后重新启动ElasticSearch服务。
2 使用Postman工具进行Restful接口访问
2.1 ElasticSearch的接口语法
curl -X<VERB> &#39;<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>&#39; -d &#39;<BODY>&#39;
其中&#xff1a;
参数 | 解释 |
---|
VERB | 适当的 HTTP 方法 或 谓词 : GET 、 POST 、 PUT 、 HEAD 或者 DELETE 。 |
PROTOCOL | http 或者 https &#xff08;如果你在 Elasticsearch 前面有一个 https 代理&#xff09; |
HOST | Elasticsearch 集群中任意节点的主机名&#xff0c;或者用 localhost 代表本地机器上的节点。 |
PORT | 运行 Elasticsearch HTTP 服务的端口号&#xff0c;默认是 9200 。 |
PATH | API 的终端路径&#xff08;例如 _count 将返回集群中文档数量&#xff09;。Path 可能包含多个组件&#xff0c;例如&#xff1a; _cluster/stats 和 _nodes/stats/jvm 。 |
QUERY_STRING | 任意可选的查询字符串参数 (例如 ?pretty 将格式化地输出 JSON 返回值&#xff0c;使其更容易阅读) |
BODY | 一个 JSON 格式的请求体 (如果请求需要的话) |
2.2 创建索引index和映射mapping
请求url&#xff1a;
PUT 192.168.220.100:9200/blog1
请求体&#xff1a;
{
"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"
}
}
}
}
}
post man 截图&#xff1a;
elasticsearch-head查看&#xff1a;
2.3 创建索引后设置Mapping
我们可以在创建索引时设置mapping信息&#xff0c;当然也可以先创建索引然后再设置mapping。
在上一个步骤中不设置maping信息&#xff0c;直接使用put方法创建一个索引&#xff0c;然后设置mapping信息。
请求的url&#xff1a;
POST http://192.168.220.100:9200/blog2/hello/_mapping
请求体&#xff1a;
{
"hello": {
"properties": {
"id":{
"type":"long",
"store":true
},
"title":{
"type":"text",
"store":true,
"index":true,
"analyzer":"standard"
},
"content":{
"type":"text",
"store":true,
"index":true,
"analyzer":"standard"
}
}
}
}
PostMan截图
2.4 删除索引index
请求url&#xff1a;
DELETE 192.168.220.100:9200/blog1
postman截图&#xff1a;
elasticsearch-head查看&#xff1a;
2.5 创建文档document
请求url&#xff1a;
POST 192.168.220.100:9200/blog1/article/1
请求体&#xff1a;
{
"id":1,
"title":"ElasticSearch是一个基于Lucene的搜索服务器",
"content":"它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。
Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业级搜索引
擎。设计用于云计算中&#xff0c;能够达到实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速&#xff0c;安装使用方便。"
}
postman截图&#xff1a;
elasticsearch-head查看&#xff1a;
2.6 修改文档document
请求url&#xff1a;
POST 192.168.220.100:9200/blog1/article/1
请求体&#xff1a;
{
"id":1,
"title":"【修改】ElasticSearch是一个基于Lucene的搜索服务器",
"content":"【修改】它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。
Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业级搜索引
擎。设计用于云计算中&#xff0c;能够达到实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速&#xff0c;安装使用方便。"
}
postman截图&#xff1a;
elasticsearch-head查看&#xff1a;
2.7 删除文档document
请求url&#xff1a;
DELETE 192.168.220.100:9200/blog1/article/1
postman截图&#xff1a;
2.8 查询文档-根据id查询
请求url&#xff1a;
GET 192.168.220.100:9200/blog1/article/1
postman截图&#xff1a;
2.9 查询文档-query请求url&#xff1a;
请求url&#xff1a;
POST 192.168.220.100:9200/blog1/article/_search
请求体&#xff1a;
{
"query": {
"query_string": {
"default_field": "title",
"query": "搜索服务器"
}
}
}
postman截图&#xff1a;
注意&#xff1a;
将搜索内容"搜索服务器"修改为"钢索"&#xff0c;同样也能搜索到文档&#xff0c;该原因会在下面讲解中得到答案
{
"query": {
"query_string": {
"default_field": "title",
"query": "钢索"
}
}
}
钢索 -> “钢”&#xff0c; “索”&#xff0c;搜索是分成两个词&#xff0c;注意Standard标准分词器&#xff0c;会把汉字每个字一个词存到索引库中的tilte&#xff0c;也是按照Standard进行的分词所以搜索钢索能搜到这个document
2.10 查询文档-term查询
请求url&#xff1a;
POST 192.168.220.100:9200/blog1/article/_search
请求体&#xff1a;
{
"query": {
"term": {
"title": "搜索"
}
}
}
postman截图&#xff1a;
query_string&#xff1a;搜索之前对搜索的关键词分词
term&#xff1a;对搜索的关键词不分词