Elasticsearch基础学习——SQL使用

文档操作

数据类型

  • 字符串类型

    text,keyword

  • 数值类型

    long,integer,short,byte,double,float,half_float,scaled_float

  • 日期类型

    date

  • 布尔值类型

    boolean

  • 二进制类型

    binary

Rest 风格

基于该风格设计的软件可以可以更简洁,更有层次,,更易于实现缓存等机制。

基本Rest命令如下:

Elasticsearch基础学习——SQL使用_第1张图片

使用的是kibana开发工具,具体安装可以参考栏目中的相关文章。

基本操作

添加数据

PUT /demo/user/1
{
     
  "name":"tom",
  "age":22,
  "desc":"niuniuniu",
  "tags":["帅哥","大牛"]
}

Elasticsearch基础学习——SQL使用_第2张图片

查找数据

GET /demo/user/1

Elasticsearch基础学习——SQL使用_第3张图片

更新数据

PUT

我们可以通过PUT方法修改数据:

如下我们可以发现他的版本号增加了同时result变为updated。

Elasticsearch基础学习——SQL使用_第4张图片

但是这种方式存在一些问题,如果不传值,之前的数据就会丢失。

这是现在的数据:

Elasticsearch基础学习——SQL使用_第5张图片

我们这次通过PUT更新的时候不传递age试试:

可以发现之前的age丢失了。

Elasticsearch基础学习——SQL使用_第6张图片

post 推荐

这种方式不会使数据丢失,灵活性更高。

POST /demo/user/3/_update
{
     
  "doc":{
     
    "name":"zhangsna"
  }
}

删除数据

通过DELETE命令实现删除,根据你的请求来判断是删除索引还是删除文档记录

DELETE /demo/user/1

条件搜索

查询demo索引下user类型name为tony11的文档。

主要是GET条件以及需要加上_search条件。

GET /demo/user/_search?q=name:tony11

Elasticsearch基础学习——SQL使用_第7张图片

复杂查询操作

条件查询

GET /demo/user/_search
{
     
  "query": {
     
  	"match": {
     
  		"name" : "zhang"
   	 }
  }
}

模糊查询

使用wildcard关键字,然后注意加上* 表示以ton开头的数据。

GET /demo/user/_search
{
     
  "query": {
     
    "wildcard": {
     
      "name": "ton*"
    }
  }
}

结果过滤

如果不想要全部属性显示,可以指定查询部分属性。

GET /demo/user/_search
{
     
  "query": {
     
    "match": {
     
      "name": "tony"
    }
  },
  "_source": ["name","age"]
}

Elasticsearch基础学习——SQL使用_第8张图片

排序

通过sort关键字实现。

GET /demo/user/_search
{
     
  "query": {
     
    "wildcard": {
     
      "name": "ton*"
    }
  },
  "sort": [
    {
     
      "age": {
     
        "order": "asc"
      }
    }
  ]
}

Elasticsearch基础学习——SQL使用_第9张图片

分页

通过form和size关键字实现。

GET /demo/user/_search
{
     
  "query": {
     
    "wildcard": {
     
      "name": "ton*"
    }
  },
  "sort": [ 
    {
     
      "age": {
     
        "order": "asc"
      }
    }
  ],
  "from": 0, //从第几个数据开始
  "size": 1  //返回几条数据
}

Elasticsearch基础学习——SQL使用_第10张图片

布尔值查询

must

所有的条件都需要匹配

GET /demo/user/_search
{
     
  "query": {
     
    "bool": {
     
      "must": [
        {
     
          "match": {
     
            "name": "tony"
          }
        },
        {
     
          "match": {
     
            "age": "3"
          }
        }
      ]
    }
  }
}

should

类似 or ,满足任一条件即可。

Elasticsearch基础学习——SQL使用_第11张图片

must_not

类似 not ,查询年龄不是55岁的人。

Elasticsearch基础学习——SQL使用_第12张图片

过滤器

通过filter关键字,我这查询的是年龄不是55岁并且小于10岁的。可以使用多个条件过滤。

过滤条件可以使用lte\get\lt\gt等。

GET /demo/user/_search
{
     
  "query": {
     
    "bool": {
     
      "must_not": [
        {
     
          "match": {
     
            "age": "55"
          }
        }
      ],
      "filter": {
     
        "range": {
     
          "age": {
     
            "lte": 10
          }
        }
      }
    }
  }
}

Elasticsearch基础学习——SQL使用_第13张图片

匹配多个条件查询

之前插入数据的时候我们可以在tags中采取多条件匹配

查询渣只会出现一条渣男的数据。

Elasticsearch基础学习——SQL使用_第14张图片

这个时候在输入哥,就可以将有帅哥信息的数据查询出来,中间需要使用空格分隔。

Elasticsearch基础学习——SQL使用_第15张图片

精确查询

term查询是直接通过倒排索引指定的词条进程精确查找的。

所以查询的时候注意类型。

关于分词:

  • term,会直接查询精确的。
  • match,会使用分词器解析。(先分析文档,然后再查询。)

两个类型:

  • text:分词器自动分割
  • keyword:不会分割
GET /demo/user/_search
{
     
  "query": {
     
    "term": {
     
      "name": "tony"
    }
  }
}

高亮查询

GET /demo/user/_search
{
     
  "query": {
     
    "term": {
     
      "name": "tony"
    }
  },
  "highlight": {
     
    "fields": {
     
      "name":{
     }
    }
  }
}

Elasticsearch基础学习——SQL使用_第16张图片

自定义高亮条件

GET /demo/user/_search
{
     
  "query": {
     
    "term": {
     
      "name": "tony"
    }
  },
  "highlight": {
     
    "pre_tags": "

", "post_tags": "

"
, "fields": { "name":{ } } } }

Elasticsearch基础学习——SQL使用_第17张图片

你可能感兴趣的:(#,ElasticSearch,elasticsearch,sql,大数据)