一、索引操作:
1. 创建索引
PUT /${index_name}
{
	"settings": {  // 索引相关的设置项
		"number_of_shards": 15, // 指定主分片个数
		"number_of_replicas": 2, // 指定副分片个数
	},
	"mappings": {  // 映射(表架构)
		"properties": {
		}
	}
}
2. 删除索引DELETE /${index_name}
3. 关闭索引
POST /${index_name}/_close4. 打开索引
POST /${index_name}/_open5. 别名操作
POST /_aliases
{
	"actions": [
		{
			"add": {  // 添加别名或更新配置
				"index": ${index_name},
				"alias": ${alias_name}
			}
		},
		{
			"remove": {  // 删除别名
				"index": ${index_name},
				"alias": ${alias_name}
			}
		}
	}
}
二、映射操作
1. 查看映射
GET /${index_name}/_mapping
2. 扩展映射
POST /${index_name}/_mapping
{
	"properties": {
		$(field): {
			"type": $(type)
		}
	}
}
3. 动态映射
1)当字段没有定义时,ES可以根据写入的数据自动定义该字段的类型
2)一般提前定义好数据类型并将索引创建语句纳入SVN或Git管理范围
4. 基本类型
1)keyword类型:不进行切分的字符串类型
2)text类型:可进行切分的字符串类型
3)数值类型:long、integer、short、byte、double、float、half_float、scaled_float、unsigned_log,尽可能选择范围小的数据类型,可用于对文档进行过滤、排序和聚合
4)布尔类型
5)日期类型: date,默认是标准的UTC格式,可通过format属性自定义格式 yyyy-MM-dd HH:mm:ss
6)数组类型: []
7)对象类型: {"properties": {}}
8)地理类型: geo_point,lat为纬度,lon为经度
5. 多字段:
针对同一个字段,需要不同的数据类型;
定义好字段之后,可使用fields定义其子字段的类型
访问字段:$(filed_name).$(filed_name_keyword)
三、文档操作
1. 单条写入文档
POST /${index_name}/_doc/${_id} // 当${id}不存在时,该_id值由ES自动生成
{
	${field_name}: ""
}
2. 批量写入文档
POST /_bulk
{"index": {"_index": "${index_name}"}}
{"_id": "", "${filed_name}": ""}
{"index": {"_index": "${index_name}"}}
{"_id": "", "${filed_name}": ""}
3. 更新单条文档
POST /${index_name}/_update/${_id}
{
	"doc": {
		"${field_name}": ""
	}
}
4. 批量更新文档
POST /_bulk
{"update": {"_index": "${index_name}", "_id": "${_id}"}}
{"doc": {"${filed_name}": ""}}
{"update": {"_index": "${index_name}", "_id": "${_id}"}}
{"doc": {"${filed_name}": ""}}
5. 根据条件更新文档
POST /${index_name}/_update_by_query
{
	"query": {},
	"script": {}  // 相当于mysql的set
}
6. 删除单条文档
DELETE /${index_name}/_doc/${_id}
7. 批量删除文档
POST /_bulk
{"delete": {"_index": "${index_name}", "_id": "${_id}"}}
{"delete": {"_index": "${index_name}", "_id": "${_id}"}}
8. 根据条件删除文档
POST /${index_name}/_delete_by_query
{
	"query": {}
}
四、搜索辅助功能
1. 文档计总
GET /${index_name}/_count // 返回匹配的文档条数
2. 文档搜索
GET /${index_name}/_search
// _source:指向一个json数组,数组中的元素就是希望返回的字段
// from: 设置搜索的起始位置【int类型】
// size: 设置搜索返回的文档个数,最大值为10000【int类型】
// profile:性能分析【boolean型】3. 评分解析
GET /${index_name}/_explain/${doc_id}
// 评分分析:在使用搜索引擎时,一般都会涉及到排序功能。如果用户没有指定字段进行排序,则EC会使用自己的打分算法对文档进行排序五、搜索匹配功能:${query}子数组的属性命以及值
1. 查询所有文档,并设置所有文档的分值term查询
match_all: {"boost": 2}
2. term查询:结构化精准查询的主要查询方式,用于查询待查字段和查询值是否完全匹配
{
	"term": {
		${field_name}: {
			"value": ""
		}
	}
}
3. terms查询:用于查询一个或多个值与待查字段是否完全匹配
{
	"term": {
		${field_name}: [
			"value1",
		]
	}
}
4. range查询:用于范围查询,一般是对叔侄型和日期型数据的查询
1)gt:大于
2)lt:小于
3)gte:大于或等于
4)lte:小于或等于
5. exists查询:用于某个字段不为空的查询,字段不为空的条件有
1)值存在且不是null
2)值不是空数组
3)值是数组,但不是[null]
6. 布尔查询:复合搜索,是一种在一个搜索语句中包含一种或多种搜索子句的搜索
1)must查询:必须匹配该查询条件【与】
2)should:可以匹配该查询条件【或】
3)must not:必须不匹配该查询条件【非 与】
4)filter:必须匹配过滤条件,不进行打分计算
{
	"query": {
		"bool": {
			"must": [
				{}, {}
			]
		}
	}
}
7. match查询:全文搜索的主要代表