一、 简单快速安装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风格的请求,使得更好理解和操作
  1. 创建索引 :PUT http://localhost:9200/indexName
  2. 查看所有索引: GET http://localhost:9200/_cat/indice?v
    _cat 表示查看的意思, indices 表示索引,所以整体含义就是查看当前 ES服务器中的所有索引,就好像 MySQL 中的 show tables 的感觉
  3. .查看单个索引:GET http://localhost:9200/indexName
  4. 在索引下创建文档 :POST http://127.0.0.1:9200/indexName/_doc[/id]
    可以手动指定id的值
请求体:
{
	"key1":value1,
	"key2":value2,
	...
}
  1. 查询索引中的所有的文档内容:GET http://localhost:9200/indexName/_search
  2. 根据索引下的唯一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]
  1. 单条件体条件查询 :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":{}//<----高亮这字段
        }
    }
}
  1. 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"
}