先把 Elasticsearch 最核心的五个概念摆正。
Elasticsearch
└── index(一个雷达库区)
├── document(一份被登记进雷达系统的资料)
│ ├── field(资料上的一个字段)
│ ├── field
│ └── field
├── mapping(这类资料的建档规则)
└── analyzer(文本字段的分词/归一化规则)可以这样类比:
| Elasticsearch 概念 | 城市类比 | 你真正该记住的含义 |
|---|---|---|
index |
一个雷达库区 | 一批按同类规则建立搜索结构的数据集合 |
document |
一份城市档案 | 一条 JSON 文档,是被搜索的基本单位 |
field |
档案栏目 | 文档里的具体字段,比如标题、品牌、价格 |
mapping |
建档蓝图 | 定义字段类型、索引方式、分析方式 |
analyzer |
线索拆解器 | 把文本拆成词项,并做小写化、去标点等处理 |
例如,一份商品文档可能长这样:
{
"title": "Wireless Noise Cancelling Headphones",
"brand": "AcmeAudio",
"category": "audio",
"price": 1299,
"in_stock": true
}这里:
title、brand、category、price、in_stock都是field- 整个 JSON 是一个
document - 这一批商品文档如果都放进
city_products,那么city_products就是一个index title是text还是keyword,price是integer还是float,这些由mapping决定title怎么被拆词,由analyzer决定