1.前提
es是属于restful风格,可直接是使用postman或者使用kibana直接进行请求
2.操作索引库
2.1 创建文档
注意:索引库名称不能有大写
PUT /test1/type1/1
{
"name":"dongkuijie",
"age":3
}
结果:
2.2 创建索引库(设置mapping)
PUT /test2
{
"mappings": {
"properties": {
"name":{
"type": "text"
},
"age":{
"type": "long"
},
"birthday":{
"type": "date"
}
}
}
}
结果:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "test3"
}
mapping映射的各个数据类型
2.3 获取索引库
通过get请求获得索引库具体信息
GET /索引库名称/类型/文档
2.4 查看es节点健康情况
GET _cat/health
2.5 查看es的版本信息
GET _cat/indices?v
2.5 修改文档
老版本:
PUT /test2/_doc/1 # 最终结果为 _version增加版本号 result为updated
{
"name":"dongkuijie2",
"age":"22",
"birth":"1997-05-24"
}
新版本:
POST /test2/_doc/1/_update
{
"doc":{
"name":"dongkuijie3"
}
}
2.6 删除索引库
注意:根据请求路径来判断是删除索引还是删除文档
DELETE /索引库
DELETE /索引库/类型/文档
2.操作文档
2.1 创建文档
PUT /dongkuijieit/user/1
{
"name":"测试1",
"age":30,
"desc":"nmp,不知道怎么形容",
"tags":["好男人","温暖"]
}
2.1 获取文档
通过id查询【简单的条件查询】
GET /索引库/类型/文档的id
2.2 简单搜索
GET /索引库//_search?q=属性名:查询参数
注意:在查询数据的时候会发现有一个 "_score" : 0.6931471,
这个是一个匹配度,分值越高代表匹配程度越高
2.3 复杂搜索
2.3.1 精准搜索
GET /索引库/类型/_search
{
"query": {
"match": { #精准查询
"filed": "TEXT"
}
}
}
注意:hits包含两部分。
第一部分
"hits" : {
"total" : {
"value" : 2,#查询出来的总数
"relation" : "eq" #查询出来的类型 [equls]
},
"max_score" : 1.1196322,#查询出来的文档的最大分值【匹配度】
第二部分:查询出来的内容
{
"_index" : "dongkuijieit",
"_type" : "user",
"_id" : "3",
"_score" : 1.1196322,
"_source" : {
"name" : "你好",
"age" : 30,
"desc" : "格式传说容",
"tags" : [
"渣男",
"温暖"
]
}
}
2.3.2 过滤字段
GET /索引库/类型/_search
{
"query": {
"match": { #精准查询【使用分词器解析】
"filed": "TEXT"
}
}
, "_source": "{field}"
}
2.3.3 指定字段排序
GET /索引库/类型/_search
{
"query": {
"match": { #精准查询【使用分词器解析】
"filed": "TEXT"
}
},
"sort": [
{
"FIELD": {
"order": "desc"
}
}
]
}
2.3.3 分页查询
GET /索引库/类型/_search
{
"query": {
"match": { #精准查询【使用分词器解析】
"filed": "TEXT"
}
},
"from": 0, #从第几页开始
"size": 1 #每一页承载的数据
}
2.3.4 布尔值多条件查询(must)
GET /索引库/类型/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"filed":"text"
}
},
{
"match":{
"filed":"text"
}
}
]
}
}
}
注意:must相当于mysql中的and所有条件必须匹配
2.3.5 布尔值多条件查询(should)
GET /索引库/类型/_search
{
"query":{
"bool":{
"should":[
{
"match":{
"filed":"text"
}
},
{
"match":{
"filed":"text"
}
}
]
}
}
}
注意:相当于mysql中的or,符合一个条件即可
2.3.6 布尔值多条件查询(must_not)
GET /索引库/类型/_search
{
"query":{
"bool":{
"must_not":[
{
"match":{
"filed":"text"
}
},
{
"match":{
"filed":"text"
}
}
]
}
}
}
注意:对must_not数组下的字段中的数据取反【例如:查询年龄不为1的人】
2.3.7 过滤器
GET /索引库/类型/_search
{
"query":{
"bool":{
"must_not":[
{
"match":{
"filed":"text"
}
},
{
"match":{
"filed":"text"
},
"filter":{
"range":{
"age":{
"gte":30 #大于30
}
}
}
}
]
}
}
}
2.3.8 多条件查询
GET /索引库/类型/_search
{
"query": {
"match": { #精准查询【使用分词器解析】
"filed": "TEXT TEXT" #多个条件用空格查询
}
},
}
2.3.9 精准查询【term】
GET /索引库/类型/_search
{
"query": {
"term": { #精准查询
"filed": "TEXT TEXT"
}
},
}
注意:term
与match
最大的区别就是,term 就是根据每个字精准查询
2.3.10 高亮
GET /索引库/类型/_search
{
"query": {
"term": { #精准查询
"filed": "TEXT TEXT"
}
},
"highlight": {
"fields": {
"tags":{}
}
}
}
修改高亮格式:
GET /索引库/类型/_search
{
"query": {
"term": { #精准查询
"filed": "TEXT TEXT"
}
},
"highlight": {
"pre_tags": "<p>",
"post_tags": "</p?",
"fields": {
"tags":{}
}
}
}