es的本地安装
链接 提取码:77ld 下载其中的资料.zip
解压其中的elasticsearch-7.8.0-windows-x86_64.zip就可以了 解压后双击$ELASTICSEARCH_HOME/bin下的elasticsearch.bat就可以了 然后在http://localhost:9200中就可以访问
对ES发送请求
想ES发送请求需要用到postman工具,在上面的网盘中存在,直接双击运行安装即可
ES使用前需知
- ES是依托json来进行发送和接收数据
- post和[get,delete,head]是不同的,post是非密等型的请求,而另外三个是密等型的请求
- 非密等型是指每次请求返回的数据是不同的,而密等型则相反,下面会解释
其中Type这个概念将来会被删除
ES客户端的基本使用
索引操作
- 索引创建
在postman选择post请求输入http://localhost:9200/user/_create就可以创建index为user的文档了。 创建索引时可以传递文档,在postman中选择body,raw选择json输入
{
"name":"小米手机",
"sex":"小米",
"tel":"1111",
”price“ : 3999.0
}
就可以创建成功 在创建索引时会返回一个id 每次创建时会返回es自己生成的随机id,因此,创建是需要用post
-
索引查询 选择get,输入http://localhost:9200/user就可以查看user下的全部信息,也可以输入{http://localhost:9200/_cat/indices?v} 就可以查看所有index下的信息 -
索引的删除 选取delete后输出需要删除的连接,例如http://localhost:9200/user,就可以删除索引为user的所有数据
文档操作
- 文档的创建
与上面索引的创建类似选择post 传入http://localhost:9200/user/_doc/3001即可以创建id为3001的文档,注意的是需要传递一个body,json格式的数据,但是在文档的创建可以进行id的指定,例如上面指定id为3001时可以使用put请求 - 文档查询
查询指定id:选择get传入http://localhost:9200/user/_doc/3001即可查询3001下的信息 全查询:选择get传入http://localhost:9200/user/_search - 全量修改
选择put输入http://localhost:9200/user/_doc/3001,然后在body下输入json格式的数据,返回值出现updated代表更新成功 - 局部修改
选择post输入http://localhost:9200/user/_update/3001,在body下输入{ "doc":{ "name":"华为手机" } } 则在代表修改name为华为手机 - 条件查询
选择get输入http://localhost:9200/user/_search?q=name:小米,凡是不推荐这种方法,因为这种情况在数据传输过程中会出现乱码或者丢失,因此推荐以下方法 在body中传入json格式的数据 { "query": { "match" : { "name":"小米" } } } 参数解释 1. query:请求体 2. match:匹配 - 分页查询
输入http://localhost:9200/user/_search ,后在body下输入以下json
{
"query": {
"match_all" : {
}
},
"from" : 2,
"size" : 2,
"_source" : ["name"],
"sort":{
"price":{
"order":"desc"
}
}
就可以获取只包含name,按照价格降序的信息
参数解释:
1. from表示从第几个出发,计算公式(页码-1)*每页的个数
2. size表示每页的文档个数
3. _source表示需要显示哪些参数
4. match_all表示精准匹配,同理match表示可以进行分词匹配
5. sort表示排序,下面接的则是根据哪些字段排序
6. order表示排序方式,desc降序,asc升序
- 多条件查询
输入http://localhost:9200/user/_search ,在body下输入以下json格式数据
{
"query" : {
"bool" : {
"must": [
{
"match" : {
"name" : "小米"
}
},
{
"match" : {
"tel" : "1111"
}
}
]
}
}
}
就可以查询到name为小米,tel为1111的数据,must’对于ES来讲就是and,or是should。
- 范围查询
输入http://localhost:9200/user/_search ,在body下输入以下json格式数据
{
"query" : {
"bool" : {
"must": [
{
"match" : {
"name" : "小米"
}
},
{
"match" : {
"tel" : "1111"
}
}
],
"filter" : {
"range" : {
"price" : {
"gt" : 3000
}
}
}
}
}
}
代表选取name为小米,tel为1111,且price>3000的数据 除了gt还有以下的符号表示
EQ 就是 EQUAL等于
NE 就是 NOT EQUAL不等于
GT 就是 GREATER THAN大于
LT 就是 LESS THAN小于
GE 就是 GREATER THAN OR EQUAL 大于等于
LE 就是 LESS THAN OR EQUAL 小于等于
- 全文检索
与上面条件检索一致,这里只做补充 匹配情况有以下两种分类;match,match_phrase,两种区别:match表示可以分词匹配,match_all代表必须精准匹配,即必须完全一致。match时将"name" : "小米" 改成"name" : "米" 或者"name" : "小" 都可以查询到name为小米的数据,也可以改为"name" : "小华" ,会查询到name为小米和华为的数据,因为match是分词查询,match_phrase就不会出现这种情况。 - 高亮显示
输入http://localhost:9200/user/_search ,选择get 传入body
{
"query": {
"match" : {
"name":"小米"
}
},
{
"highlight" : {
"fields" : {
"name" : {}
}
}
}
}
就可以对查询结果的name进行高亮显示 参数解释 1. highlight:高亮显示标签 2. fields:选取元素 3. name:查询后要高亮的标签
- 聚合查询
输入http://localhost:9200/user/_search ,选择get 传入body
{
"aggs" : {
"price_group" : {
"term" : {
"field" : "price"
}
}
}
}
参数解释 1. aggs:聚合开始标签 2. price_group:聚合组名,自定义名字 3. term:分组模式,常见的还有avg,max,min 4. field:分组字段
- 映射关系
选择put,输入http://localhost:9200/user/_mapping 传入body
{
"properties" : {
"name" : {
"type" : "text",
"index" : "true"
},"sex" : {
"type" : "keyword",
"index" : "true"
},"tel" : {
"type" : "keyword",
"index" : "false"
},"price" : {
"type" : "text",
"index" : "false"
}
}
}
参数解释
- name,sex,tel,price,为自定义的字段
- type:数据输入类型
2.1. text:表示可以分词查询,比如name为小米,则小或者米都可以查询到 2.2. keyword:表示精准查询,比如name为小米,则只有小米才可以查询到 - index:表示是否可以被索引找到
|