# 全量更新# PUT 操作,如果该 documentId 不存在,则创建该 document,此时 result 返回 created;如果 documentId 存在,此时 result 返回 updated,并且 version 自增 1。如果更新是只更新某个字段,那么其他字段则会被删除,也就是说 PUT 操作是一个全量更新的操作
PUT /employee/_doc/1
{"name":"凯杰2",
"age": 30
}# 指定字段修改
POST /employee/_update/1
{"doc":{"name":"凯杰"}}# 强制指定创建,如果存在,则失败
POST /employee/_create/1
{"name":"凯杰4",
"age": 30
}
# 查询指定文档
GET /employee/_doc/1
# 查询所有文档# 不指定查询条件的查询,则会默认使用 score 1.0,此时的 max_score 也是 1.0
GET /employee/_search
# 不带条件查询所有文档
GET /employee/_search
{"query":{"match_all":{}}}# 分页查询
GET /employee/_search
{"query":{"match_all":{}},
"from": 0,
"size": 1
}
索引复杂查询
# 带关键词条件的查询,以下的所有查询字段均会查询到 es 中 name 为牛顿的数据,这是因为使用的默认分词器将牛顿分为“牛”和“顿”两个词,所以在查询时就会命中。而且在使用带条件的查询时,可以看到 score 不再是默认的 1.0,而是不一样的 score 值
GET /employee/_search
{"query":{"match":{"name":"牛顿"}}}
GET /employee/_search
{"query":{"match":{"name":"牛"}}}
GET /employee/_search
{"query":{"match":{"name":"牛勇"}}}# 带关键词条件和带排序的查询,根据 age 进行降序排序,当使用 sort 关键字进行排序时,此时的 score 为 null,因为此时的 score 打分已经没有了意义。
GET /employee/_search
{"query":{"match":{"name":"牛"}},
"sort":[{"age":{"order":"desc"}}]}# 带 filter 的排序,加上 filter 之后 score 的值为 0.0,对应的是一个 where 的作用,
GET /employee/_search
{"query":{"bool":{"filter":[{"term":{"age": 30
}}]}}}# match 会对查询的关键词进行分词操作,而 term 针对查询的关键词并不会进行分词操作# 带关键词条件和带聚合的查询
GET /employee/_search
{"query":{"match":{"name":"牛"}},
"sort":[{"age":{"order":"desc"}}],
"aggs":{"group_by_age":{"terms":{"field":"age"}}}}