1、索引操作
1.1、新增索引
a、创建索引默认配置
PUT /索引名称
b、创建索引指定字段类型
put /索引名称/_mapping/typeName
{"properties":{"字段名":{"type":"类型", text keyword long short date integer object"index":true/false , 是否索引 默认true"store":true/false, 是否存储 默认false"analyzer":"分词器" 设置ik_max_word ik} }
}
{"settings": {"number_of_shards": 5,"number_of_replicas": 1},"mappings": {"user": {"properties": {"id": {"type": "long","index": false,"store": true},"name": {"type": "text"},"nickname": {"type": "keyword"},"age": {"type": "integer"},"money": {"type": "double"},"brithday": {"type": "date"},"flag": {"type": "boolean"},"address": {"properties": {"city": {"type": "text"}}}}}}
}
1.2、删除索引
DELETE 索引名称
1.3、查看索引
- 查看索引配置: GET /索引名称/_settings
- 查看索引映射 GET /索引名称/类型/_mapping
- 查看所有所有索引配置 GET _all/_settings
2、文档操作
2.1、新增文档
新增文档_不带id(随机生成id)
POST /索引名称/类型
{
}
新增文档_带id
PUT /索引名称/类型/1
{
}
2.2、删除文档
DELETE /s1/user/1
2.3、查看文档
GET /索引名称/类型名称/id值
查看指定字段
GET /s1/user/1?_source=name,age
2.4、修改文档
PUT请求覆盖(不常用),PUT表示修改,不会修改id的值
id不存在,则会新增这条数据
id存在,则修改这条数据
POST不覆盖
POST /s1/user/s1R0TIwBUgvZMvyZVzzG/_update
{"doc": {"age":30}
}
3、基本查询
3.1、match_all(查询所有)
语法:
GET /索引名称/_search
{"query":{"查询类型":{"查询条件" : "查询条件的取值"}}
}
查询类型: 表示取值为: match_all、match、term(分词查)等。
查询条件: 查询条件会根据类型来做数据的获取操作。
案例:
GET /s1/user/_search
{"query": {"match": {"name": "wangwu"}},"sort": [{"id": {"order": "desc"}},{"age": {"order": "desc"}}],"from": 0,"size": 20,"highlight": { //表示声明定义高亮处理"pre_tags": "<span>", //表示前缀标签"post_tags": "</span>",//表示后缀标签"fields": {//将该高亮处理作用在哪一个字段上"nickname":{} }}
}
3.2、term(词条匹配)
查询被用于精准匹配查,可以匹配: 数字、时间、字符串、布尔等等
相当于mysql: select * from user where username = ‘admin’;
GET /s1/user/_search
{"query": {"term": {"username":"admin"}}
}
3.3、range(范围查询)
查询在指定区间的数据
GET /s1/user/_search
{"query": {"range": {"age": {"gte":1000, "lte": 4000}}}
}
- gte: 大于等于
lte: 小于等于
gt: 大于
lt: 小于
3.4、fuzzy(模糊查询)
每一个词条的模糊,词条是否包含模糊的语句
GET /s1/user/_search
{"query": {"fuzzy": {"title": "Apple"}}
}
4、进阶查询
4.1、source
默认情况下es将结果保存在_source属性中。
通过编程方式来对_source中的数据进行过滤。
查询指定字段:
GET /s1/user/_search
{"_source": ["title", "price"], //用来指定被查询结果展示的数据字段"query": {"fuzzy": {"title": "Apple"}}
}
includes: 显示哪些字段
excludes: 不显示哪些字段
GET /s1/user/_search
{"_source": {"includes": ["title", "price"] //最终要展示的字段列表}, "query": {"fuzzy": {"title": "Apple"}}
}
4.2、filter
es使用查询获取一组查询的结果,然后通过filter可以实现结果的过滤。
a、条件查询中进行过滤
bool属性来指定查询条件,还可以在该字段中指定结果的过滤,通过filter属性来声明。
GET /s1/user/_search
{"query": {"bool": {"filter": {"range": {"price": {"gte": 10,"lte": 20}}},"must": {"match": {"title": "小米手机"}}}}
}
b、无查询条件直接过滤
GET /s1/user/_search
{"query": {"constant_score": {"filter": {"range": {"price": {"gte": 10,"lte": 20}}}}}
}