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"]
}
相关推荐
神秘打工猴2 小时前
数据仓库为什么要分层
大数据·数据仓库·spark
Hard_pea2 小时前
Spark 深入解析
大数据·分布式·spark
闯闯桑2 小时前
Scala 中的访问修饰符
大数据·开发语言·scala
后端小肥肠3 小时前
解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统
大数据·人工智能
说私域7 小时前
基于开源AI大模型的精准零售模式创新——融合AI智能名片与S2B2C商城小程序源码的“人工智能 + 线下零售”路径探索
人工智能·搜索引擎·小程序·开源·零售
24k小善11 小时前
flink集成tidb cdc
大数据·flink·tidb
郝开11 小时前
ElasticSearch 分词器介绍及测试:Standard(标准分词器)、English(英文分词器)、Chinese(中文分词器)、IK(IK 分词器)
elasticsearch·中文分词·ik·ik analyzer
kngines13 小时前
【实战ES】实战 Elasticsearch:快速上手与深度实践-3.2.3 案例:新闻搜索引擎的相关性优化
大数据·elasticsearch·搜索引擎
秦南北14 小时前
国内领先的宠物类电商代运营公司品融电商
大数据·人工智能·电商
problc16 小时前
Manus AI 全球首款通用型 Agent,中国制造
大数据·人工智能·制造