博客
关于我
ElasticSearch简单入门介绍
阅读量:191 次
发布时间:2019-02-28

本文共 2820 字,大约阅读时间需要 9 分钟。

初识 Elasticsearch

Elasticsearch 是一个分布式、RESTful 式的搜索和数据分析引擎,简称 ES。在国内也被称为 ES。它是基于 Lucene 开发的全文检索引擎,提供了更高级的功能和接口。虽然 Lucene 本身是一个强大的全文检索库,但直接使用 Lucene 可能会比较复杂。Elasticsearch 在 Lucene 的基础上扩展,提供了更高级的搜索和数据分析功能。

Elasticsearch 的功能与适用场景

Elasticsearch 的主要功能包括:

  • 分布式搜索引擎和数据分析引擎:支持将海量数据分布式存储和检索,能够处理大规模数据。
  • 全文检索、结构化检索和数据分析:支持对文本、结构化数据等进行检索和分析。
  • 对海量数据进行近实时处理:能够快速响应和分析大规模数据。
  • Elasticsearch 的底层是 Lucene,但它提供了 RESTful API,用户可以通过简单的 HTTP 请求来操作,无需直接调用 Lucene 的低层接口。相比单机的 Lucene,Elasticsearch 支持分布式架构,能够处理更大的数据量和更复杂的查询需求。

    Elasticsearch 的安装

    安装 Elasticsearch 相对简单。以下是基于 macOS 的安装步骤:

  • 访问官方下载页面:https://www.elastic.co/cn/downloads/elasticsearch
  • 下载对应平台的压缩包(例如:elasticsearch-7.9.0-darwin-x86_64.tar.gz)
  • 解压压缩包:
    tar -zxvf elasticsearch-7.9.0-darwin-x86_64.tar.gz /usr/local/Cellar
  • 启动 Elasticsearch:
    cd /usr/local/Cellar/elasticsearch-7.9.0/darwin-x86_64/bin./elasticsearch
  • 访问默认端口 9200,访问 http://localhost:9200/ 即可。
  • Kibana 的安装

    Kibana 是 Elasticsearch 的可视化工具,支持通过图表和可视化界面操作 Elasticsearch 数据。安装步骤类似于 Elasticsearch:

  • 访问下载页面:https://www.elastic.co/cn/downloads/kibana
  • 下载对应平台的压缩包(例如:kibana-7.9.1-darwin-x86_64.tar.gz)
  • 解压压缩包:
    tar -zxvf kibana-7.9.1-darwin-x86_64.tar.gz
  • 启动 Kibana:
    cd /usr/local/Cellar/kibana-7.9.1/darwin-x86_64/bin./kibana
  • 访问默认端口 5601,访问 http://localhost:5601 即可。
  • Elasticsearch 的存储结构

    Elasticsearch 的存储结构与传统数据库(如 MySQL)有所不同:

    Elasticsearch MySQL
    Index (索引) Database (数据库)
    Document (文档) Row (行)
    Field (字段) Column (字段)
    Mapping (映射) Table Structure (表结构)

    Index(索引)

    索引相当于 MySQL 的数据库,代表一组文档数据的集合。

    Document(文档)

    文档是 Elasticsearch 存储的基本单位,通常以 JSON 格式存储。每个文档可以包含多个字段,字段类型包括数值类型、日期类型、布尔类型、Text(支持全文搜索)、Keyword(精确匹配)、Geo(地理信息)。

    Mapping(映射)

    Mapping 定义了索引中文档的结构和字段类型。Elasticsearch 会根据文档数据自动推断映射规则,但在实际应用中,建议手动定义映射规则以确保字段类型准确。

    Elasticsearch 的查询

    Elasticsearch 的查询语法基于 RESTful API,主要包括以下参数:

  • 查询语句
    GET /{index}/_search{  "size": 10,  "from": 0,  "_source": ["field1", "field2"],  "query": {    "match": {      "field1": "text"    }  }}
  • 匹配单个字段
    GET /{index}/_search{  "query": {    "term": {      "field1": "value1"    }  }}
  • 多值匹配
    GET /{index}/_search{  "query": {    "terms": {      "field1": ["value1", "value2"]    }  }}
  • 范围查询
    GET /{index}/_search{  "query": {    "range": {      "field1": {        "gte": 100,        "lte": 200      }    }  }}
  • 布尔查询
    GET /{index}/_search{  "query": {    "bool": {      "must": ["term1", "term2"],      "should": ["term3"]    }  }}
  • 排序

    Elasticsearch 支持根据查询结果的指定字段排序:

    GET /{index}/_search{  "sort": [    {"field1": "asc"},    {"field2": "desc"}  ]}

    聚合查询

    Elasticsearch 的聚合查询类似于 SQL 的 GROUP BY 和聚合函数,常用于统计分析:

    GET /{index}/_search{  "size": 0,  "aggs": {    "type_count": {      "terms": {        "field": "type"      }    }  }}

    常用的聚合函数包括 value_count(统计文档总数)、cardinality(去重统计)、avg(求平均值)、sum(求和)、max(求最大值)、min(求最小值)等。

    总结

    Elasticsearch 是一个强大且灵活的搜索和数据分析引擎,适用于处理海量数据的高性能需求。通过简单的 HTTP 接口和丰富的功能,Elasticsearch 减少了对技术细节的依赖,使开发者能够快速上手并实现高效的数据处理任务。

    转载地址:http://awln.baihongyu.com/

    你可能感兴趣的文章
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>
    multiprocessing.Pool:map_async 和 imap 有什么区别?
    查看>>
    MySQL Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>
    mysql CPU使用率过高的一次处理经历
    查看>>
    Multisim中555定时器使用技巧
    查看>>
    MySQL CRUD 数据表基础操作实战
    查看>>
    multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
    查看>>
    mysql csv import meets charset
    查看>>
    multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
    查看>>
    MySQL DBA 数据库优化策略
    查看>>
    multi_index_container
    查看>>
    MySQL DBA 进阶知识详解
    查看>>
    Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)
    查看>>
    Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
    查看>>