Elasticsearch的DSL教程
一、前言
二、数据结构
三、DLS语法
3.1 新增索引库
示例:
PUT test1
{
"settings" : {
"number_of_shards" : 10,
"number_of_replicas" : 1,
"refresh_interval" : "1s"
},
"mappings" : {
"properties" : {
"uid" : { "type" : "long" },
"phone" : { "type" : "long" },
"message" : { "type" : "keyword" },
"msgcode" : { "type" : "long" },
"sendtime" : {
"type" : "date",
"format" : "yyyy-MM-dd HH:mm:ss"
}
}
}
}
示例图:
查看刚刚创建的索引
注:
- number_of_shards: 是设置的分片数,设置之后无法更改;
- refresh_interval: 是设置es缓存的刷新时间,如果写入较为频繁,但是查询对实时性要求不那么高的话,可以设置高一些来提升性能。可以更改
- number_of_replicas : 是设置该索引库的副本数,建议设置为1以上。
- store: true/false 表示该字段是否存储,默认存储
- doc_values: true/false 表示该字段是否参与聚合和排序
- index: true/false 表示该字段是否建立索引,默认建立
3.2 新增字段
示例:
PUT test1/_mapping/
{
"properties": {
"isTop":{
"type": "boolean"
}
}
}
查看一下是否新增字段成功
GET test1/
如下图新增成功
3.3 新增/修改数据
其实ES的新增和修改可以看做是一样,存在则修改,不存在则新增,不过这里还是简单的介绍下吧。
修改数据的方式主要有两种,一种是通过主键ID进行修改,这种比较简单,就是和新增一样即可。
另一种则是通过条件进行修改,相当于SQL更新语句的 where条件。
新增数据示例:
POST test1/_doc/1
{
"uid" : "1234",
"phone" : "12345678909",
"message" : "qq",
"msgcode" : "1",
"sendtime" : "2019-03-14 01:57:04"
}
结果如图:
3.4 查询
(一)查询索引库所有数据
命令示例:
GET test1/_doc/_search
返回结果:
在这里插入图片描述
(二)根据ID查询某一条数据
如果根据ID查询某一条数据的话,也比较简单,只需要将上述的_search换成主键ID即可。
命令示例:
GET test1/_doc/1
(三)等值(term)查询
term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型)
比如根据手机号进行查询
命令示例:
GET test1/_doc/_search
{
"query": {
"term": {
"phone": "12345678909"
}
}
}
返回结果:
(四)组合(bool)查询
bool 可以用来合并多个过滤条件查询结果的布尔逻辑,它包含这如下几个操作符:
- must : 多个查询条件的完全匹配,相当于 and。
- must_not ::多个查询条件的相反匹配,相当于 not。
- should : 至少有一个查询条件匹配, 相当于 or。
查询示例:
GET /test1/_search
{
"query": {
"bool": {
"must": {
"term": {
"phone": "18068489971"
}
},
"must_not": {
"term": {
"uid": 12345
}
},
"should": [
{
"term": {
"uid": 1234
}
},
{
"term": {
"uid": 123456
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
}
(五)模糊(wildcard)查询
wildcard查询相当于SQL语句中的like语法,只不过它查询的数据需要加上*符号
模糊查询命令示例:
GET /test1/_search
{
"query": {
"wildcard": {
"message":"*q*"
}
}
}
版权声明:本文为qq_41497658原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。