其他
【ball ball you 不要再重复造轮子了】Elasticsearch 搜索之路(一)
以下文章来源于哈尔的数据城堡 ,作者Feng
戳蓝字“CSDN云计算”关注我们哦!
责编 | 阿秃
一般涉及大型数据库的电子商务和搜索引擎的产品都面临这样一个问题,产品信息检索花费时间太长。这不良的用户体验,可能导致失去潜在的客户。这种滞后搜索归因于产品设计所使用到关系数据库,数据分散在多个表中,关系型数据处理这些表中数据获取搜索结果时工作速度是远远不能瞒足。可以说,现在的企业正在寻找数据存储的替代品,以期促进快速检索,而 Elasticsearch(ES)的出现很好解决这些问题。
V5.x
Lucene 6.x 性能提升,默认打分机制从 TF-IDF 改为 BM 25 支持 Ingest 节点、 Completion suggested 、Java REST 客户端 Type 标记成 deprecated,支持了 Keyword 的类型 性能优化 减少了内部争竞争,防止对同一文档进行并发更新的竞争以及在同步事务日志时减少了锁定要求,索引吞吐量已得到了极大的提高 Instant Aggregations,在 Shard 层面提供了 Aggregation 缓存 新增了 Profile API
V6.x
Lucene 7.x Removal of types,在 6.0 里面,开始不支持一个 index 里面存在多个 type 跨多个Elasticsearch集群搜索,保留原来的索引在 5.x 群集,跨群集搜索来同时搜索 6.x 和 5.x 群集 跨群集复制(CCR) 更友好的的升级及数据迁移,在主要版本之间的迁移更为简化,体验升级 性能优化 稀疏区域改进,降低了存储成本 通过索引排序,可加快排序的查询性能
V7.x
Lucene 8.0 重大改进-正式废除单个索引下多 Type 的支持 7.1开始,Security 功能免费使用 ECK,允许用户在 Kubernetes 上配置,管理和操作 Elasticsearch 集群 TransportClient 被废弃 以至于,ES7 的 Java 代码,只能使用 restclient 新功能 新的集群协调 功能更完善的 REST Client Script Score Query,下一代的评分方式 性能优化 默认的 Primary Shard 数从 5 改为 1,避免 Over Sharding 性能优化,更快的 Top K 检索
Index 一索引是文档的容器,是一类文档的结合 Index 体现了逻辑空间的概念:每个索引都有自己的 Mapping,用于定义包含的文档的字段名和字段类型 Shard 体现了物理空间的概念:索引中的数据分散在 Shard 上 索引的 Mapping 与 Settings Mapping 定义文档字段的类型 Setting 定义不同的数据分布
{
"movies" : {
"settings" : {
"index" : {
"creation_date" : "1570452552",
"number_of_shards" : "5",
"number_of_replicas" : "1",
"uuid" : "pB0UsxjfQT2fW-s8Uy-Nsg",
"version" : {
"created" : "2030599"
}
}
}
}
}
{
"movie": {
"mappings": {
"doc": {
"properties": {
"songName": {
"type": "text"
},
"singer": {
"type": "text"
},
"price": {
"type": "integer"
}
}
}
}
}
}
Elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位 日志文件中的日志项 一本电影的具体信息 一首歌的详细信息 文档会被序列化成 JSON 格式,保存在 Elasticsearch 中 JSON 对象由字段组成, 每个字段都有对应的字段类型(字符串/数值/布尔/日期/二进制/范围类型) 每个文档都有一个 Unique ID 可以自己指定 ID 或者通过 Elasticsearch 自动生成
{
"songName" : "说好不哭",
"singer" : "周杰伦",
"price" : 3
}
{
"_index" : "song",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"songName" : "说好不哭",
"singer" : "周杰伦",
"price" : 3
}
}
元数据,用于标注文档的相关信息 _index :文档所属的索引名 _type :文档所属的类型名 _id :文档唯一 Id _source:文档的原始 JSON 数据 _all:整合所有字段内容到该字段,已被废除 _version:文档的版本信息 _score:相关性打分
在 7.0 之前,一个 Index 可以设置多个 Types 6.0 开始, Type 已经被 Deprecated。7.0 开始一个索引,只能创建一个 Type -"_doc"。
RDBMS | Elasticsearch |
🔔🔔🔔CSDN
博客免费入驻啦~福利多多,详情戳👇👇👇下方图片,么么哒~
推荐阅读:
阿里巴巴 29 个屌炸天的开源项目 leetcode 刷500道题,笔试/面试到底稳不稳 搞开发没加薪、也没升职?都被你浪没了!
估值被砍700亿美元后,Waymo发重磅公开信:即将推出全自动驾驶打车服务 Python GUI开发,效率提升10倍的方法!
【光说不练假把式】今天说一说Kubernetes 在有赞的实践 2019年胡润百富榜发布,比特大陆创始人詹克团成「中国区块链首富」! 揭秘 OceanBase 勇夺 TPC 榜首的王者攻略!