Elasticsearch介绍以及基本操作

目录

一、Elasticsearch介绍

二、关于Elasticsearch的基本操作

(1)索引操作

(2)文档操作

三、域的属性

(1)index

(2)type

(3)store


一、Elasticsearch介绍

Elasticsearch 是一个开源的分布式搜索和分析引擎,最初由 Elasticsearch N.V. 公司(现在是 Elastic 公司)开发。它基于 Apache Lucene 引擎构建,提供了强大的全文搜索、分析和数据可视化功能。以下是 Elasticsearch 的一些基本介绍:

  1. 分布式架构: Elasticsearch 是一个分布式系统,允许你在多个节点上水平扩展,以处理大规模的数据和查询。这种分布式特性使其适用于大型数据集和高吞吐量的应用。

  2. 全文搜索: Elasticsearch 提供了高效的全文搜索功能,支持复杂的查询、过滤和排序。它能够在大量数据中快速定位相关的文档。

  3. 实时数据分析: Elasticsearch 支持实时数据分析,可以迅速处理和分析大量的实时数据。这对于监控、日志分析和实时仪表板非常有用。

  4. 多种数据类型: Elasticsearch 支持多种数据类型,包括文本、数值、日期、地理位置等。这使得它适用于各种类型的数据分析应用。

  5. 灵活的数据模型: Elasticsearch 使用 JSON 格式存储文档,这种灵活的数据模型允许你动态地定义文档结构。字段映射可以自动根据文档内容进行调整。

  6. RESTful API: Elasticsearch 提供基于 RESTful API 的接口,使得与各种编程语言和工具的集成变得非常容易。通过 HTTP 请求,你可以执行索引、查询、删除等操作。

  7. 数据聚合: Elasticsearch 支持强大的数据聚合功能,可以对文档进行统计、汇总和分组,以便生成有关数据的复杂分析。

  8. 开源和社区支持: Elasticsearch 是开源的,拥有强大的社区支持。它的源代码可以在 GitHub 上找到,社区提供了丰富的文档和论坛,方便用户获取帮助和分享经验。

  9. Elastic Stack(ELK Stack): Elasticsearch 通常与 Logstash 和 Kibana 一起使用,构成了 Elastic Stack(以前称为 ELK Stack)。Logstash 用于数据采集和预处理,Kibana 用于数据可视化和仪表板构建,与 Elasticsearch 一起提供了完整的日志和数据分析解决方案。

总体而言,Elasticsearch 是一个功能强大、灵活且易于使用的搜索和分析引擎,广泛应用于全文搜索、日志分析、监控、业务分析等各种领域。

二、关于Elasticsearch的基本操作

(1)索引操作

(1)创建没有结构的索引

javascript 复制代码
PUT /student(student是索引的名字)

(2)为没有结构的索引添加结构

javascript 复制代码
POST /student/_mapping
{
  "properties":{
    "id":{
      "type":"integer"
    },
    "name":{
      "type":"text"
    },
    "age":{
      "type":"integer"
    }
  }
}

(3)也可以一开始创建的索引就是有结构的

javascript 复制代码
PUT /student
{
  "mappings": {
    "properties": {
      "stuName":{
        "type": "text"
      },
      "stuNo":{
        "type": "integer"
      }
    }
  }
}

(4)删除索引

javascript 复制代码
DELETE /student(索引名)

(2)文档操作

这里我个人对于文档的理解就是数据库中的具体数据的意思,id值的不同和唯一性标志了每一个数据。

(1)新增/修改文档

javascript 复制代码
POST /索引/_doc/[id值]
{
    "field名":field值
}

注:id值不写时自动生成文档id,id和已有id重复时修改文档
javascript 复制代码
POST /student/_doc/1
{
  "id":120,
  "name":"rb",
  "age":10
}

(2)根据id查询文档

javascript 复制代码
GET /索引/_doc/id值

具体的举例:
GET /student/_doc/1

(3)删除文档

javascript 复制代码
DELETE /索引/_doc/id值

具体的举例:
DELETE /student/_doc/1

(1)根据id批量查询文档

javascript 复制代码
GET /索引/_mget
{
  "docs":[
     {"_id":id值},
     {"_id":id值}
   ] 
}

例:
Get /student/_mget
{
  "docs":[
    {"_id":1},
    {"_id":2},
    {"_id":3}
    ]
}

(2)查询所有文档

javascript 复制代码
GET /索引/_search
{
   "query": {
     "match_all": {}
   }
}

(3)修改文档部分字段

javascript 复制代码
POST /索引/_doc/id值/_update
{ 
  "doc":{ 
    域名:值
    } 
}

举例:
POST /student/_doc/1/_update
{
  "doc":{
    "name":"opoop"
  }
}

注:

Elasticsearch执行删除操作时,ES先标记文档为deleted状态,而不是直接物理删除。当ES存储空间不足或工作空闲时,才会执行物理删除操作。

Elasticsearch执行修改操作时,ES不会真的修改Document中的数据,而是标记ES中原有的文档为deleted状态,再创建一个新的文档来存储数据。

三、域的属性

(1)index

该域是否创建索引。只有值设置为true,才能根据该域的关键词查询文档。

javascript 复制代码
// 根据关键词查询文档
GET /索引名/_search
{
    "query":{
    "term":{ 
            搜索字段: 关键字
        } 
   }
}
javascript 复制代码
Get /student/_search
{
  "query":{
    "term":{
        "name":"is"//name是自己取的域名的名字
    }
  }
}

(2)type

javascript 复制代码
type
域的类型

核心类型	具体类型
字符串类型	    text
整数类型	        long, integer, short, byte
浮点类型	        double, float
日期类型     	date
布尔类型	        boolean
数组类型      	array
对象类型	        object
不分词的字符串	keyword

(3)store

是否单独存储。如果设置为true,则该域能够单独查询。

javascript 复制代码
// 单独查询某个域:
GET /索引名/_search
{
 "stored_fields": ["域名"]
}
javascript 复制代码
POST /student/_mapping
{
  "properties":{
    "id":{
      "type":"integer"
    },
    "name":{
      "type":"text",
      "index":true,
      "store":true
    },
    "age":{
      "type":"integer"
    }
  }
}
GET /student/_search
{
  "stored_fields": ["name"]
}
相关推荐
暗影八度37 分钟前
Spark流水线数据质量检查组件
大数据·分布式·spark
白鲸开源1 小时前
Linux 基金会报告解读:开源 AI 重塑经济格局,有人失业,有人涨薪!
大数据
海豚调度1 小时前
Linux 基金会报告解读:开源 AI 重塑经济格局,有人失业,有人涨薪!
大数据·人工智能·ai·开源
白鲸开源1 小时前
DolphinScheduler+Sqoop 入门避坑:一文搞定数据同步常见异常
大数据
学术小八2 小时前
第二届云计算与大数据国际学术会议(ICCBD 2025)
大数据·云计算
求职小程序华东同舟求职3 小时前
龙旗科技社招校招入职测评25年北森笔试测评题库答题攻略
大数据·人工智能·科技
二二孚日3 小时前
自用华为ICT云赛道Big Data第六章知识点-分布式搜索服务ElasticSearch
大数据·华为
武子康7 小时前
大数据-34 HBase 单节点配置 hbase-env hbase-site xml
大数据·后端·hbase
Edingbrugh.南空7 小时前
Hadoop MapReduce 入门
大数据·hadoop·mapreduce
huisheng_qaq7 小时前
【ElasticSearch实用篇-01】需求分析和数据制造
大数据·elasticsearch·制造