栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 云计算 > 云平台

Elasticsearch

云平台 更新时间:发布时间: 百科书网 趣学号

目录

什么是Elasticsearch?

安装 

 验证安装

 按装图形化界面Kibana

安装

 验证安装

 ES中常见的概念

ES常用API接口

基本操作

创建索引

创建索引并往索引中添加一条文档

创建索引但不指定id 

创建索引指定数据类型

删除索引

查询有哪些索引

文档

添加文档(记录)

查询文档

删除文档

修改文档

 按条件查询

查询所有文档

根据指定条件搜索

将查询的条件封装成json数据

指定列名和值查询

 只查询部分列

 分页查询

查询指定范围的

 查询并排序

 多条件查询

and 

or 

 取反

高亮显示


什么是Elasticsearch?

The Elastic Stack, 包括 Elasticsearch【搜索,分析】、 Kibana【可视 化】、 Beats 和 Logstash【数据的搜集】(也称为 ELK Stack)。能够安 全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、 分析和可视化。 Elaticsearch,简称为 ES, ES 是一个开源的高扩展的分布式全文搜索引 擎, 是整个 ElasticStack 技术栈的核心。 它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台 服务器,处理 PB 级别的数据。

安装 

安装很简单,下载好压缩包后,解压运行就可以了

解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务 。

 验证安装

注意: 9300 端口为 Elasticsearch 集群间组件的通信端口, 9200 端口为 浏览器访问的 http协议 RESTful 端口。

 按装图形化界面Kibana

Elasticsearch是专门用来作搜索的,图形化界面需要安装kibana,他是es数据的前端展现,数据分析时,可以方便地看到数据。作 为开发人员,可以方便访问es。

安装

他的安装也很简单,下载完毕后,解压后直接运行。

解压后进入in目录

 验证安装

访问5601端口

 ES中常见的概念

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。

ES 里的 Index 可以看做一个库,而 Types 相当于表, Documents 则相当 于表的行。这里 Types 的概念已经被逐渐弱化, Elasticsearch 6.X 中,一 个 index 下已经只能包含一个type, Elasticsearch 7.X 中, Type 的概念已 经被删除了。

将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比

ES常用API接口

基本操作

创建索引

创建索引并往索引中添加一条文档

PUT /索引名称/类型名称/1
{
   文档(数据)
}

PUT /test/demo/1
{
  "name":"张三",
  "age":15
}
 

创建索引但不指定id 

POST /test2/demo
{
  "name":"李四",
  "age":45
}

创建索引指定数据类型


PUT /test3
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "age":{
        "type": "integer"
      }
    }
  }
}

删除索引

相当于删除数据库

DELETe /索引名

查询有哪些索引

查询用GET,部分get命令

相当查询所有表

GET _cat/indices

 查询详细信息

GET _cat/indices?v

 查询索引结构,相当于查看表节构

GET /索引名

文档

添加文档(记录)

使用put添加

使用put添加必须指定id值

 注意使用put添加记录可以说是覆盖,他会之前的记录

 

 使用post添加

这就不用指定id值了

 使用post添加字段的话需要指定id,但他和put基本一样,也是覆盖,上面的添加完毕生成了id,取到id进行操作。

查询文档

查询指定索引

GET /索引/类型/id

删除文档

相当于删除一条记录

DELETE /索引/类型/id

修改文档

修改和上面的添加一样,只是这里处理一下上面的修改就覆盖原来的字段的bug

POST /test4/demo/1/_update
{
  "doc":{
    "name":"王五"
  }
}

 

 按条件查询

查询所有文档

GET /索引/类型/_search

根据指定条件搜索

GET /索引/类型/_search?q=条件 

可以模糊查询

GET /test4/demo/_search?q=王

将查询的条件封装成json数据

指定列名和值查询

类型可省去,默认为_doc,

query后的值有:

match:匹配

range:范围匹配

term:精准匹配

GET /索引/类型/_search
{
  "query": {
    "match": {
      "name": "王"
    }
  }
}

 

 只查询部分列

GET /test4/_search
{
  "query": {
    "match": {
      "name": "王"
    }
  },
  "_source":["sex","name"]

 分页查询

GET /test4/_search
{
  "query": {
    "match": {
      "name": "王"
    }
  },
  "_source":["sex","name"],
  "from": 0,
  "size": 1
}
 

查询指定范围的

GET /test4/_search
{
  "query": {
    "range": {
      "age":{
        "gt":3
      }
    }
  },
  "_source":["sex","name","age"],
  "from": 0,
  "size": 6
}

 查询并排序

GET /test4/_search
{
  "query": {
    "range": {
      "age":{
        "gt":3
      }
    }
  },
  "_source":["sex","name","age"],
  "from": 0,
  "size": 6,
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

 多条件查询

must:等同于sql中的and

should:等同于sql中的or

must_not:等同于sql中的!

and 

GET /test4/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "王"
          }
        },
        {
          "match": {
            "age": "5"
          }
        }
      ]
    }
  }
}

or 

 
GET /test4/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "王"
          }
        },
        {
          "match": {
            "age": "5"
          }
        }
      ]
    }
  }
}


 取反

GET /test4/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "name": "王"
          }
        }
      ]
    }
  }
}
 

高亮显示

GET /test4/_search
{
  "query": {
    "match": {
      "name": "王"
    }
  },
  "highlight": {
    "fields": {
      "name": {}
    }
  }
}
 

GET /test4/_search
{
  "query": {
    "match": {
      "name": "王"
    }
  },
  "highlight": {
    "pre_tags": "", 
    "post_tags": "", 
    "fields": {
      "name": {}
    }
  }
}

分词搜索

Test和keyword类型区别

text:它会为该字段的内容进行拆词操作,并放入倒排索引表中

keyword:它不会进行拆词操作

使用match匹配查询---对匹配的关键字进行拆词操作,并和倒排索引表中对应。
使用term精准匹配---它不会对关键字进行拆词操作,而且把关键字作为一个整体和倒排索引表进行匹配

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1044672.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号