一、 简单快速安装Elasticsearch,快速启动
elasticsearch安装很简单,只需要下载压缩包,解压即安装完成。
找到bin/elasticsearch.bat文件,双击打开启动完成
浏览器输入localhost:9200,返回如下字段,即启动成功
name "LAPTOP-KEQDJ3G4"
cluster_name "elasticsearch"
cluster_uuid "K-lEzI80QjWVUzKym3h32Q"
version
number "7.8.0"
build_flavor "default"
build_type "zip"
build_hash "757314695644ea9a1dc2fecd26d1a43856725e65"
build_date "2020-06-14T19:35:50.234439Z"
build_snapshot false
lucene_version "8.5.1"
minimum_wire_compatibility_version "6.8.0"
minimum_index_compatibility_version "6.0.0-beta1"
tagline "You Know, for Search"
二,基本指令操作
借助postman完成请求 ES支持REST风格的请求,使得更好理解和操作
- 创建索引 :PUT http://localhost:9200/indexName
- 查看所有索引: GET http://localhost:9200/_cat/indice?v
_cat 表示查看的意思, indices 表示索引,所以整体含义就是查看当前 ES服务器中的所有索引,就好像 MySQL 中的 show tables 的感觉 - .查看单个索引:GET http://localhost:9200/indexName
- 在索引下创建文档 :POST http://127.0.0.1:9200/indexName/_doc[/id]
可以手动指定id的值
请求体:
{
"key1":value1,
"key2":value2,
...
}
- 查询索引中的所有的文档内容:GET http://localhost:9200/indexName/_search
- 根据索引下的唯一id对文档进行增删改查:
1、全量修改
POST http://127.0.0.1:9200/indexName/_doc/id
对这一条id文档全量修改,也就是新的请求头直接覆盖旧的文档内容
请求体:
{
"key1":value1,
"key2":value2,
...
}
2、局部更新
POST http://127.0.0.1:9200/indexName/_update/id
对这一条id的文档进行更新操作,如果请求体还包含新的 k:v 那就对新的 k:v 执行新增,
请求体:
{
"doc"{
"key1":value1,
"key2":value2,
...
}
}
3、删除出文档(逻辑删除)
DELETE http://127.0.0.1:9200/indexName/_update/[id]
- 单条件体条件查询 :GET http://127.0.0.1:9200/indexName/_search
{
"query":{//<----查询条件 相当于where
"match":{//<----一个条件体,内部的条件匹配是AND 如果匹配内容为空,会报错,"mactch_all":{}(匹配所有)
"key":"value" //<----匹配的内容
...
}
},
"_source":["key",...],//<----指定需要查询的key 相当于select
"from":0,//<----查询的起始位置
"size":2,//<----查询的数据量
"sort":{
"key":{
"order":"desc"//<----结果按照指定key的值指定排序方式
}
},
"highlight":{
"fields":{
"key":{}//<----高亮这字段
}
}
}
- URL 的形式查询:GET请求 : http://127.0.0.1:9200/indexName/_search?q=key:value
q:相当于query
9.对条件提查询GET http://127.0.0.1:9200/indexName/_search
//must相当于AND
{
"query":{
"bool":{ //<----将多个条件体包裹封装
"must":[{//<----相当于AND 其中的每个match都要满足
"match":{
"key1":"value1"
}
},{
"match":{
"key2":"value2"
}
}...]
}
}
}
//should相当于OR
{
"query":{
"bool":{//<----将多个条件体包裹封装
"should":[{//<----相当于OR 其中的只需满足其中一个match就行
"match":{
"key1":"value1"
}
},{
"match":{
"key2":"value2"
}
}...],
"filter":{//<----过滤器
"range":{//<----范围匹配
"key":{
"gt":2000 //<----key的值大于2000的
}
}
}
}
}
}
10.聚合查询:GET http://127.0.0.1:9200/indexName/_search
{
"aggs":{//聚合操作
"_group":{//名称,随意起名
"terms":{//分组计算出总数
"field":"key"//分组字段
}
}
}
}
{
"aggs":{
"_avg":{
"avg":{ //求平均值
"field":"key"
}
}
}
}
三、 映射关系
有了索引库,等于有了数据库中的 database。
接下来就需要建索引库(index)中的映射了,类似于数据库(database)中的表结构(table)。
创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。
PUT http://127.0.0.1:9200/user/_mapping
{
"properties": {
"name":{ //字段名
"type": "text", //数据类型 keyword精准匹配才能回去到,text,模糊匹配只要有一个字满足即可
"index": true //是否作为索引 false不能作为检索条件
},
"sex":{
"type": "keyword",
"index": true
},
"tel":{
"type": "keyword",
"index": false
}
}
}
查询映射(sql中的查看表结构)
GET http://127.0.0.1:9200/user/_mapping
//结果:
{
"user": {
"mappings": {
"properties": {
"name": {
"type": "text"
},
"sex": {
"type": "keyword"
},
"tel": {
"type": "keyword",
"index": false
}
}
}
}
}
映射的增加数据用到_create
PUT http://127.0.0.1:9200/user/_create/1001
{
"name":"小米",
"sex":"男的",
"tel":"1111"
}