索引部分

索引创建
创建索引库,设置分词器
PUT /students
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
	  "address": {
        "type": "keyword"
      }
    }
  },
  "settings": {
    "index": {
      "analysis.analyzer.default.type": "ik_max_word"
    }
  }
}#PUT请求具有幂等性,如果重复执行同样的语句创建索引库会报错
索引修改
PUT /students/_mapping
{
    "properties": {
      "address":{
        "type": "keyword"
      }
    }
}

索引查询
查看所有索引
GET /_cat/indices?v
查看单个索引
GET /students
索引删除
删除索引库
DELETE /students

文档部分

创建文档
创建文档【格式:POST /索引名称/类型(7.6.1版本默认是_doc)/id】
POST /zh_user/_doc/1
{
    "name": "xueya",
	"address":"北京"
}#创建文档要用POST,如果没有指定id的话,es会自动生成,指定了就用我们指定的id
查询文档
根据主键查询文档(数据)
GET /students/_doc/1
全量查询索引下文档(数据)
GET /students/_search
修改文档
全量修改文档【格式:PUT /索引名称/类型(7.6.1版本默认是_doc)/id】
PUT /students/_doc/1
{
    "name": "haha",
	"address":"天津"
}
局部修改文档【格式:PUT /索引名称/类型(7.6.1版本默认是_doc)/id】
POST /students/_update/1
{
  "doc":{
      "name": "aaa",
	  "address":"天津"
  }
}
删除文档
删除索引库内的文档(数据)
DELETE /students/_doc/1

重点的查询操作

条件查询
#条件查询
GET /students/_search
{
    "query":{
        "match":{
            "name":"xueya"
        }
    }
}
#多字段查询
GET /students/_search
{
    "query":{
        "multi_match":{
            "query":"xueya",
			"fields":["name","address"]
        }
    }
}
#精确查询
GET /students/_search
{
  "query": {
    "term": {
      "name": {
        "value": "xueya"
      }
    }
  }
}

分页查询
分页查询
GET /students/_search
{
    "query":{
        "match":{
            "name":"xueya"
        }
    },
    "from":0,
    "size":2
}
排序查询
排序查询
GET /students/_search
{
    "query":{
        "match_all":{} #表示查询全部数据
    },
    "sort":{
        "age":{
            "order":"desc"
        }
    }
}
多条件查询
GET /students/_search
{
    "query":{
        "bool":{ #表示需要进行条件过滤
            "must":[{ #表示必须满足下面的条件,并且参与计算分值,常用的子句还有should,表示“或”的意思
                "match":{
                    "address":"天津"
                }
            },{
                "match":{
                    "name":"xueya"
                }
            }]
        }
    }
}
范围查询
GET /students/_search
{
    "query": {
        "bool": { #表示需要进行条件过滤
            "filter": [{ #返回的文档必须满足filter子句的条件。但是跟Must不一样的是,不会计算分值,并且可以使用缓存。【不算分的场景使用这个效率会提升】
                "range": {
                    "age": {
                        "gt": 1 #查询age大于1
                    }
                }
            }]
        }
    }
}
查询分词结果
#两种方式
GET /students/_doc/1/_termvectors?fields=address
POST _analyze
{
    "text": "测试分词效果",
    "analyzer": "ik_max_word"
}
完全匹配
#match_phrase:分词后搜索。与match不同的是,match_phase分出来的词必须全部在搜索结果中,且位置顺序是一样的。
GET /students/_search
{
    "query":{
        "match_phrase":{
            "name" : "你叫名"
        }
    }
}
高亮查询
GET /students/_search
{
    "query": {
        "match_phrase": {
            "name": "xueya"
        }
    },
    "highlight": {
        "fields": {#表示对当前字段进行高亮处理
            "name": {
			"require-field-match":"false"#不进行字段匹配
			} 
        }
    }
聚合/分组查询
GET /students/_search
{
    "aggs":{ #表示聚合操作
        "age_group":{ #分组名称,可以随便起
            "terms":{ #表示分组操作,也可以使用avg来求平均值
                "field":"age" #表示对哪一个字段进行分组
            }
        }
    },   "size":0 #表示不查询原始数据,只查询分组结果
}