18

Elasticsearch 参考指南

Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许你快速,近实时地存储,搜索和分析大量数据,它通常用作底层引擎/技术,为具有复杂搜索功能和要求的应用程序提供支持。

入门

Elasticsearch既简单又复杂,到目前为止,我们已经了解了它的基础知识,如何查看它,以及如何使用一些REST API来使用它,希望本教程能让你更好地了解Elasticsearch的内容,更重要的是,启发你进一步尝试其余的强大功能!

设置Elasticsearch

本节包含有关如何设置Elasticsearch并使其运行的信息,包括:下载,安装,启动,配置。

支持的平台

官方支持的操作系统和JVM矩阵可在此处获得:支持矩阵,Elasticsearch在列出的平台上进行了测试,但它也可能在其他平台上运行。

升级Elasticsearch

API约定

Elasticsearch通过HTTP使用JSON公开REST API。

除非另有说明,本章列出的约定可以在整个REST API中应用。

基于URL的访问控制

许多用户使用基于url的访问控制的代理来安全访问Elasticsearch索引,对于多搜索、多获取和批量请求,用户可以选择在URL中以及在请求体中的每个请求上指定索引,这可能使基于url的访问控制具有挑战性。

为了防止用户覆盖URL中指定的索引,将此设置添加到elasticsearch.yml文件中:

rest.action.multi.allow_explicit_index: false

默认值为true,但当设置为false时,Elasticsearch将拒绝在请求体中指定的显式索引的请求。

文档 API

本节首先简要介绍Elasticsearch的数据复制模型,然后详细介绍以下CRUD API。

所有CRUD API都是单索引API,index参数接受单个索引名,或指向单个索引的别名。

搜索 API

  • Search API
  • URI搜索
  • 请求体搜索
  • 搜索模板
  • 批量搜索模板
  • 搜索碎片API
  • Suggesters
  • 多搜索API
  • Count API
  • 验证API
  • 解释API
  • 分析API
  • Field Capabilities API
  • 排名评估API

聚合

指标聚合

这个系列中的聚合基于以某种方式从正在聚合的文档中提取的值计算指标,这些值通常从文档的字段中提取(使用字段数据),但也可以使用脚本生成。

数值指标聚合是输出数值的一种特殊类型的指标聚合,一些聚合输出单个数值指标(例如avg),称为single-value numeric metrics aggregation,另一些聚合生成多个指标(例如stats),称为multi-value numeric metrics aggregation,当这些聚合充当一些桶聚合的直接子聚合时,单值和多值数字指标聚合之间的区别就发挥了作用(一些桶聚合使你能够根据每个桶中的数字指标对返回的桶进行排序)。

  • Avg聚合
  • 加权平均聚合
  • 基数聚合
  • 扩展的统计聚合
  • 地理边界聚合
  • 地理重心聚合
  • Max聚合
桶聚合

桶聚合不像指标聚合那样在字段上计算指标,而是创建文档桶,每个桶都与一个标准相关联(取决于聚合类型),这决定当前上下文中的文档是否“落入”它,换句话说,桶有效地定义了文档集,除了桶本身之外,bucket聚合还计算并返回“落入”每个桶中的文档数量。

metrics聚合相反,桶聚合可以包含子聚合,这些子聚合将聚合它们的“父”桶聚合创建的桶。

有不同的桶聚合器,每个聚合器都有不同的“bucketing”策略,一些定义单个桶,一些定义固定数量的多个桶,还有一些在聚合过程中动态创建桶。

单个响应中允许的最大桶数受到名为search.max_buckets的动态集群设置的限制,默认情况下它是禁用的(-1),但是试图返回超过10,000个桶(未来版本的默认值)的请求将记录一个弃用警告。
  • 邻接矩阵聚合
  • 子聚合
  • 合成聚合
  • 日期直方图聚合
  • 日期范围聚合
  • 多样化的取样器聚合
  • 过滤器聚合
  • 地理距离聚合
  • GeoHash网格聚合
  • 全局聚合
  • 直方图聚合
  • IP范围聚合

  • 管道聚合

    • Avg桶聚合
    • 导数聚合
    • Max桶聚合
    • Min桶聚合
    • Sum桶聚合

  • 矩阵聚合
  • 缓存重聚合
  • 仅返回聚合结果
  • 聚合元数据
  • 返回聚合的类型

索引API

索引API用于管理各个索引,索引设置,别名,映射和索引模板。

  • 创建索引
  • 删除索引
  • 获取索引
  • 索引是否存在
  • 打开/关闭索引API
  • 收缩索引
  • 分割索引
  • 滚动索引
  • Put Mapping
  • 获取映射
  • 获取字段映射
  • 类型是否存在
  • 索引别名
  • 更新索引设置
  • 获取设置
  • 分析
  • 索引模板
  • 索引统计
  • 索引段
  • 索引恢复
  • 索引碎片存储
  • 清除缓存
  • Flush
  • 刷新
  • 强制合并

cat API

  • cat别名
  • cat分配
  • cat count
  • cat字段数据
  • cat健康
  • cat索引
  • cat master
  • cat nodeattrs
  • cat节点
  • cat挂起的任务
  • cat插件
  • cat recovery
  • cat仓库
  • cat线程池
  • cat碎片
  • cat片段
  • cat快照
  • cat模版

集群API

  • 集群健康
  • 集群状态
  • 集群统计
  • 待处理的集群任务
  • 集群重新路由
  • 集群更新设置
  • 集群获取设置
  • 节点统计
  • 节点信息
  • 节点特性用法
  • 远程集群信息
  • 任务管理API
  • 节点hot_threads
  • 集群分配解释API

查询DSL

Elasticsearch提供基于JSON的完整的查询DSL(领域特定语言)来定义查询,将查询DSL看作查询的AST(抽象语法树),由两种类型的子句组成:

叶查询子句 - 叶查询子句查找特定字段中的特定值,例如matchtermrange查询,这些查询可以被它自己使用。

复合查询子句 - 复合查询子句包装其他叶子或复合查询,并用于以逻辑方式组合多个查询(如booldis_max查询),或更改其行为(如constant_score查询)。

查询子句的行为取决于它们是用于查询上下文还是过滤器上下文。

映射

分析

  • 分析器解析
  • 测试分析器
  • 分析器
  • 正常化
  • 分词器
  • Token过滤器
  • 字符过滤器

模块

  • 集群
  • 发现
  • 本地网关
  • HTTP
  • 索引
  • 网络设置
  • 节点
  • 插件
  • 脚本

    • 如何使用脚本
    • 访问文档字段和特殊变量
    • 脚本和安全性
    • Lucene表达式语言
    • 使用脚本引擎的高级脚本
  • 快照和恢复
  • 线程池
  • 传输
  • 部落节点
  • 跨集群搜索

索引模块

SQL访问

  • 概述
  • 开始使用SQL
  • 约定和术语
  • 安全
  • SQL REST API
  • SQL Translate API
  • SQL CLI
  • SQL JDBC
  • SQL语言
  • 数据类型
  • SQL命令
  • 函数和运算符
  • 保留关键字

重要更改

发布说明

  • Elasticsearch版本6.4.2

博弈
2.5k 声望1.5k 粉丝

态度决定一切