ES基础知识
Elasticsearch 是一个基于 Lucene 构建的开源、分布式、RESTful 搜索引擎,专为云计算环境设计,能够实现近乎实时的数据搜索和分析功能,但是不支持ACID事务。
基础概念
文档(Document):Elasticsearch 中的基本数据单元,使用 JSON 格式表示,每个文档有唯一 ID 和类型。
索引(Index):文档的集合,类似于关系数据库中的“数据库”概念,每个索引有自己的映射(mapping)和设置(settings)。
类型(Type):在 7.x 之前,用于表示索引中的文档类别,类似于关系数据库中的“表”。7.x 以后,每个索引只能有一个逻辑映射结构。
分片(Shard):索引的水平分割单元,每个分片本身是一个功能完整的“索引”,分为主分片(Primary Shard)和副本分片(Replica Shard),分布在不同节点上。
节点(Node):运行中的 Elasticsearch 实例,节点可以承担不同角色,如数据节点、主节点、协调节点等。
停顿词过滤
停顿词过滤是指在分词过程中去除常见的、没有实际意义的词汇,如“的”、“是”等,以提高搜索效率和准确性。
常见数据类型
text
、keyword
、integer
、long、float
、double、date、boolean、复合数据类型object(json对象)
等。
Text和keyword区别
text适合存储全文数据,会进行分词处理,拆分成多个单词或词元,便于进行全文搜索、match查询,不支持精确匹配。
keyword存储不需要分词的字符串,如用户ID、用户名等。适合精确匹配、term查询,不适合全文搜索。
ES和MYSQL区别
Elasticsearch:适合全文搜索、实时数据分析,支持分布式存储和高并发查询。存储非结构化数据的JSON数据。
MySQL:关系型数据库,适合事务处理、复杂查询,支持 ACID 事务,存储结构化数据。
match和term区别
term和match都属于query查询类型,match用于全文匹配,不适合精确。term用于精确匹配,不适合全文。