Elasticsearch的DSL教程

  • Post author:
  • Post category:其他




一、前言



二、数据结构



三、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 版权协议,转载请附上原文出处链接和本声明。