一、创建索引
指定字段的类型创建索引
类似于建库(建立索引和字段对应类型),也可看做规则的建立
PUT /索引名称/类型名称/1
{
数据
}
字段的数据类型:
(1)字符串类型
text、keyword
区别:
- text:支持分词,全文检索,支持模糊、精确查询,不支持聚合,排序
操作;text类型的最大支持的字符长度无限制,适合大字段存储;
- keyword:不进行分词,直接索引、支持模糊、支持精确匹配,支持
聚合、排序操作。keyword类型的最大支持的长度为——32766个UTF-8
类型的字符,可以通过设置ignore_above指定自持字符长度,超过给
定长度后的数据将不被索引,无法通过term精确匹配检索返回结果。
(2)数值型
long、Integer、short、byte、double、flfloat、half flfloat、
scaled flfloat
(3)日期类型
date
(4)te布尔类型
boolean
(5)二进制类型
binary
等等
二、删除索引
DELETE /索引名
三、查询全部索引
GET /_cat/indices?v
四、查询索引结构
GET /索引名
获取默认类型
GET /索引名
_doc 默认类型(default type),type 在未来的版本中会逐渐弃用,
因此产生一个默认类型进行代替
如果自己的文档字段没有被指定,那么ElasticSearch就会给我们默认
配置字段类型
五、添加文档记录
1.指定id添加
#指定id
PUT /gsh1/_doc/1
{
"name":"张三",
"age":25
}
2.不指定id添加
会随机生成一个id
#不指定id
POST /gsh1/_doc
{
"name":"李四",
"age":23
}
六、查询文档(根据id查询)
查询提交方式必须为GET
GET /索引名称/类型名称/id值
七、删除文档
提交方式DELETE提交方式
根据不同的操作具有不同的提交方式restful风格
GET 查询
PUT 修改
POST 添加操作
DELETE 删除操作
八、修改文档
两种方法
1.修改所有的列(使用put覆盖原来的值):
版本+1(_version)
这种修改必须要求指定所有列,如果只指定部分列,则原来其他列消失。
PUT /索引名/类型名/id{
修改的数据
}
2.只修改部分列(使用post的update)
version 不会改变
需要注意 doc
不会丢失字段
#修改部分列
POST /gsh1/_doc/1/_update
{
"doc":{
"name":"周杰伦",
"age":18
}
}
九、根据其他条件查询(复杂查询)
①查询匹配
match :匹配(会使用分词器解析(先分析文档,然后进行查询))
_source :过滤字段
sort :排序
form 、 size 分页
②多条件查询( bool )
must 相当于 and
should 相当于 or
must_not 相当于 not (... and ...)
filter 过滤
1.查询所有文档
相当于sql语句中的select * from 表名
GET /索引名/类型名/_search
#查询全部文档
GET /gsh1/_doc/_search
2.根据条件查询
相当于sql中的select * from 表名 where 列名=值
GET /索引名称/类型名称/_search?q=字段名:值
#根据条件查询
GET /gsh1/_doc/_search?q=age:23
3.将查询的格式转为JSON格式
#将查询的条件封装成json格式
GET /gsh1/_doc/_search
{
"query":{
"match":{
"age":26
}
}
}
4.只查询出部分列(过滤查询)
#只查询部分列
GET /gsh1/_doc/_search
{
"query":{
"match":{
"age":25
}
},
"_source":["age"]
}
5.分页查询
相当于sql语句中的select * from 表名 where limit 0,5
from:从第几条记录开始查询
size:每页显示的记录数
#分页查询
GET /gsh1/_doc/_search
{
"query":{
"match":{
"age":25
}
},
"_source":["name","age"],
"from":1,
"size":1
}
6.范围查找(range)
gt:大于
lt:小于
#range范围查找
GET /user/_search
{
"query": {
"range": {
"age": {
"gt": 3
, "lt": 20
}
}
}
}
7.精准匹配(term)
#term精准匹配
GET /user/_search
{
"query": {
"term": {
"name": {
"value": "马"
}
}
}
}
8.排序(sort)
order:排序规则
desc:降序
asc:升序
#排序
GET /user/_search
{
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
9.must查询
must相当于and
#must查询相当于and
GET /user/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "马"
}
},
{
"match": {
"age": "18"
}
}
]
}
}
}
10.should查询
should相当于or
#should查询相当于or
GET /user/_search
{
"query": {
"bool": {
"should": [
{
"match":{
"name":"刘"
}
},
{
"match":{
"name":"刘"
}
}
]
}
}
}
11.取反must_not
must_not相当于not
#取反must_not
GET /user/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"name": "马"
}
}
]
}
}
}
12.高量查询
#高亮查询
GET /user/_search
{
"query": {
"match": {
"name": "马"
}
},
"highlight": {
"pre_tags": "<font color='red'>",
"post_tags": "</font>"
, "fields": {
"name": {}
}
}
}