elasticsearch语法讲解

一、elasticsearch数据模型

Index:索引,由多个Document组成

Type:索引类型,6.x中仅支持一个,以后将逐渐被移除

Document:文档,由多个field组成,

Field:字段,包括字段名与字段值
在这里插入图片描述
二、Document管理
PUT/POST/GET/DELETE http://ip:端口/索引名称/类型/主键
创建:PUT、POST请求
查询:GET请求
删除:DELETE请求

二、创建elasticsearch数据库
PUT 库名

{
“settings”:{
        “index”:{
    “number_of_shard”:2,(主分片数量,默认5)
  “number_of_replicas”:2(副本数量,默认1)
    }
}
“mappings”:{
        “表名”:{
    “properties”:{
    “field”:{“type”:”text”},
.......
            }
        }
    }
}

注意:若以后聚合查询出现“无fielddata”的报错,则需要对聚合的字段加一个属性,代码为:

{
“properties”:{
		"eventCategory":{
			"type":"text",
			"fielddata":true
		}
	}
}

三、查看索引映射:GET 库名/_mapping
四、删除索引:DELETE 库名
五、查询操作:
1.match_all:查询所有

GET 库名/表名/_search
{
“query”:{
“match_all”:{}
    }
}

2.match:查询

GET 库名/表名/_search
{
“query”:{
“match”:{
“name”:”john kerry”   (分词结果为john和kerry两个单词,只要name字段中包含有其中任意一个即可满足条件)
        }
    }
}

3.match_phrase:短语匹配查询

GET 库名/表名/_search
{
“query”:{
“match_phrase”:{
“name”:”john kerry”   (分词结果为john和kerry两个单词,如果name字段值中依次包含所有分词,那么返回该文档)
        }
    }
}

4.match_phrase_prefix:短语前缀匹配查询

{
“query”:{
“match_phrase_prefix”:{
“name”:”john Ke”   (最后一个分词作为前缀匹配)
        }
    }
}

6.multi_match:多字段匹配查询

GET 库名/表名/_search
{
“query”:{
“multi_match”:{
“query”:”john like cooking”,
“fields”:[“name”,”interest”]
        }
    }
}

term:词条查询:按照存储在倒排索引中的确切字词,对字段进行匹配

GET 库名/表名/_search
{
    "query": {
        "term":{
          "name":"john"
        }
    }
}

terms:多词条查询:按照存储在倒排索引中的确切字词,对字段进行多词条匹配

GET 库名/表名/_search
{
    "query": {
        "terms":{
          "name":["john","da"]
        }
    }
}

range:范围查询

GET 库名/表名/_search
{
    "query": {
        "range" : {
            "yearOfBorn" : {
                "gte" : 1995,
                "lte" : 2000
            }
        }
    }
}

bool:布尔查询:查询喜欢“cooking”且不在1995-2000间出生的学生

GET 库名/表名/_search
{
    "query": {
      "bool": {
        "must": {
            "match": { "interest": "cooking"} },
        "must_not": {
            "range": { "yearOfBorn": { "gte": 1995, "lte": 2000 }}}
      }
    }
}

分页查询:
1.from+size浅分页

GET stu/_search
{
  "query": {
    "match_all": {}
  },
  "size": 5,
  "from": 0
}

2.scroll深分页

GET stu/_search?scroll=5m
{
  "from": 0,
  "size": 5,
  "query": {"match_all": {}}
}

GET _search/scroll
{
  "scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAANy……",
  "scroll": "5m"
}

聚合查询:(求和、求平均)

{
“size”:0,
"aggs":{
		"avg_age":{
			"avg":{"field":"age"}
		}
	},
"sum_age":{
		"sum":{"field":"age"}
	}
}

聚合分组:

{
	“aggs”:{
		"abc":{
			"terms":{
				"field":"name"
			}
		}
	}
}

java脚本的聚合分组类型:

{
	“size”:0,
	“aggs”:{
		"abc":{
			"event_of_people":{
				"terms":{
					"script":"doc['time'].values+'##'+doc['eventCategory'].values"
				}
			}
		}
	}
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值