TL;DR

  • 场景: ES 零基础入门,快速完成索引创建、文档 CRUD、搜索查询
  • 结论: ES 入门简单,3-10 分钟可完成最小示例跑通
  • 产出: 完整 CRUD 操作示例、架构概念、错误速查

ES 简单使用

创建索引

PUT http://h121.wzk.icu:9200/wzk_blog01/?pretty

返回结果:

{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "wzk_blog01"
}

插入文档

POST http://h121.wzk.icu:9200/wzk_blog01/_doc/1?pretty
{"id": "1", "title": "What is lucene"}

返回结果:

{
    "_index": "wzk_blog01",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

查询文档

GET http://h121.wzk.icu:9200/wzk_blog01/_doc/1?pretty

返回结果:

{
  "_index": "wzk_blog01",
  "_id": "1",
  "_version": 3,
  "_seq_no": 2,
  "_primary_term": 1,
  "found": true,
  "_source": {
    "id": "1",
    "title": "Apache Spark is a unified analytics engine for large-scale data processing"
  }
}

更新文档

POST http://h121.wzk.icu:9200/wzk_blog01/_doc/1?pretty
{"id": "1", "title": " What is elasticsearch"}

返回结果:

{
  "_index": "wzk_blog01",
  "_id": "1",
  "_version": 4,
  "result": "updated",
  "_shards": {
      "total": 2,
      "successful": 1,
      "failed": 0
  },
  "_seq_no": 3,
  "_primary_term": 1
}

搜索文档

POST http://h121.wzk.icu:9200/wzk_blog01/_search?pretty
{"query": {"match": {"title": "What"}}}

返回结果:

{
  "query": {
    "match": {
      "title": "What"
    }
  }
}

架构与概念

基本简介

Elasticsearch 是一个面向文档(document oriented)的分布式搜索和分析引擎,它能够以文档为单位存储和管理数据。

与关系型数据库对比

ElasticsearchMySQL
索引 Index数据库
类型 Type(7.x 已移除)
文档 Document行记录
字段 Field

核心概念

概念说明
索引 Index拥有相似特征文档的集合
类型 Type索引的逻辑分类/分区(7.x 后移除)
字段 Field数据表的字段
映射 Mapping定义每个字段的类型(表结构)
文档 Document可被索引的基础信息单元(JSON)
近实时 NRT索引文档到可搜索有轻微延迟(通常1秒内)
集群 Cluster多节点组成,共同标识为集群名称
节点 Node一个 ES 实例
分片 Shard索引的水平分片(主分片 + 副本分片)
副本 Replica主分片的拷贝,提高恢复能力和性能

错误速查

症状根因修复
?pertty 无效/报错参数拼写错误改为 ?pretty
创建索引无效用了 GET 访问 /index改用 PUT /{index}?pretty
插入文档报 405/400用 GET 发送 JSON用 POST/PUT /{index}/_doc/{id} 并放 JSON 到请求体
/{index}/_doc/_search/1 返回异常端点写错按 ID 查:GET /{index}/_doc/{id};搜索:POST /{index}/_search
搜索无结果把查询 DSL 放到”返回结果”而非请求体将 DSL 放请求体,POST /_search
HTTP/HTTPS 混用或跨域同域名下 http/https 混搭统一协议;若走浏览器,配置 CORS/反代
401/403 未授权8.x 默认启用安全启用内置用户/API Key,或在内网/反代鉴权
index_not_found_exception索引未创建/名错先 PUT /{index} 再写入;核对小写命名
版本冲突 version_conflict_engine_exception并发更新_update 或乐观锁带 if_seq_no/if_primary_term
集群 Red/分片分配失败分片/磁盘问题释放磁盘、修复分片、调整副本数