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)创建没有结构的索引

PUT /student(student是索引的名字)

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

POST /student/_mapping
{
  "properties":{
    "id":{
      "type":"integer"
    },
    "name":{
      "type":"text"
    },
    "age":{
      "type":"integer"
    }
  }
}

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

PUT /student
{
  "mappings": {
    "properties": {
      "stuName":{
        "type": "text"
      },
      "stuNo":{
        "type": "integer"
      }
    }
  }
}

(4)删除索引

DELETE /student(索引名)

(2)文档操作

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

(1)新增/修改文档

POST /索引/_doc/[id值]
{
    "field名":field值
}

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

(2)根据id查询文档

GET /索引/_doc/id值

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

(3)删除文档

DELETE /索引/_doc/id值

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

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

GET /索引/_mget
{
  "docs":[
     {"_id":id值},
     {"_id":id值}
   ] 
}

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

 (2)查询所有文档

GET /索引/_search
{
   "query": {
     "match_all": {}
   }
}

(3)修改文档部分字段

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,才能根据该域的关键词查询文档。

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

Elasticsearch介绍以及基本操作_第1张图片

(2)type

type
域的类型

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

(3)store

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

// 单独查询某个域:
GET /索引名/_search
{
 "stored_fields": ["域名"]
}
POST /student/_mapping
{
  "properties":{
    "id":{
      "type":"integer"
    },
    "name":{
      "type":"text",
      "index":true,
      "store":true
    },
    "age":{
      "type":"integer"
    }
  }
}
GET /student/_search
{
  "stored_fields": ["name"]
}

你可能感兴趣的:(搜索引擎,elasticsearch,大数据,搜索引擎)