java怎么拦截某个对象
278
2022-11-16
设置Elasticsearch索引
索引
索引(Index)是个虚拟表空间,类型数据库中的table, 一个索引由至少1个分片组成, 一个索引由可以由主分片与福分片组成。
索引别名
索引是虚拟表空间,索引别名则是在索引之上又一层虚拟的索引空间。 索引别名默认等同于索引名称 用途: 索引重建之后快速切换,应用无感知。
索引命名
命名规范建议: 业务类型:索引名+数字版本 如:article_001,video_001 日志类型:索引名+日期时间 如:system-log-2022.05.01 应用意义: 数据隔离 查询便利 模糊匹配 精确指定索引
索引创建
动态创建 索引无需提前创建,第一条数据插入即可常见完成。 应用场景:非严格数据模型限制的场景,如日志、监控。 索引模板:通常采用索引模板固定下来。 可限制自动机制:限制索引名称、限制索引自动创建。
POST /edu_001/_doc{ "name": "zhangsan"}
动态创建
依据客观背景提前创建索引,提前做好索引数据分布与相应设置 应用场景: 业务系统数据需要严格规范 索引分布在极端情况下需要消耗集群资源,避免集中创建索引时,集群响应慢。 PUT index-002 { }
滚动创建/自动创建
rollover特性
利用了别名alias 利用rollover特性 自动化滚动创建,达到一定阈值创建。 应用场景: 日志领域,需要自动化依据触发条件滚动创建。 大数据领域,单索引能力局限需要创建很多。
// 创建索引并带索引PUT index-03{ "aliases": {"index-03-alias": {}}}// 获取meta元数据信息,包括别名GET index-03//也可以用:GET index-03-alias// 绑定别名PUT index-03/_alias/index03-alias1// 别名跟索引是多对多的关系。
滚动索引创建命名规范
1、索引命名规范,必须符合自动增长模式 2、建议后缀是标准数字 3、索引名称中不要有特殊符号
# 语法1POST /
滚动索引触发条件
1、索引最大文档书 2、索引创建时间 3、索引最大空间
# 设置触发条件POST index-rollover-index/_rollover{ "conditions": {"max_docs": 2}}# 增加数据,用来触发条件(记得刷新refresh)POST index-rollover-index-000001/_doc?refresh{ "test": "abc"}# 也可以指定索引index-rollover-index-000006POST index-rollover-index/_rollover/index-rollover-index-000006{ "conditions": {"max_docs": 2}}# dry_run模拟触发,不真正触发POST index-rollover-index/_rollover?dry_run{ "conditions": {"max_docs": 2, "max_age": "7d", "max_size": "5gb"}}
索引设置
默认1,创建索引时需要指定,之后索引活动期间不可变,后期只能重建。
索引字段类型
字段类型不可变,一旦指定几乎不可变,若要修改,则需要刷新所有历史数据,等同于索引重建。
# 创建索引,设置分片数3、副本数2、更新间隔1秒PUT /index_04{ "settings": {"number_of_shards": 3, "number_of_replicas": 2, "refresh_interval": "1s"}}
索引副本数可以动态修改,默认1 索引有很多高级设置,可以动态修改。
文档模型
文档模型:JSON类型 元数据: _index 索引名 _type 类型 _id 唯一id _version 版本 _seqno 序列号 _primary_term 其他
源数据:JSON结构化
ES文档结构模型-常规
平铺型
简单、高效 应用场景:与数据表1-1对应,常规查询搜索
POST index/_doc{ "test1": "abc", "test2": "def"}
对象行:
适用复杂业务场景、复杂对象映射表达
数组型:
常规数据记录
关联类型:
父子关系:join字段类型 键值对关系:nested字段类型 优点:表达能力 缺点:效率低、复杂、维护 应用场景:问答场景、上下文关系、键值对关系 能不用则不用
索引设计经验建议
索引与分片与副本关系
分片数量:索引分片数量不超过节点数量 1个索引40个分片等同于40个1分片1索引
副本数量:索引副本数量少于节点数量。副本数量可多可少。
分片容量
数据容量:分片数据容量上限不超过50GB,建议30GB-50GB 数据条数:单分片不超过2^32-1(21亿条)
数据模型设计原则
简单模型原则 能用平铺模型搞定,尽量平铺 对象深度建议不要超过3级
最细粒度原则 对象嵌套遵循最细粒度原则,上层数据冗余处理
多索引原则 单一索引尽量满足单一业务场景 不同业务场景索引即使数据模型相似也要分开
大宽表索引原则 特殊场景合并多个表时,尽量全部合并在一起 ES不支持Join,大宽表可解决查询问题
源码:
代码入口: Bootstrap入口启动:Elasticsearch.main Rest接口层:RestController.dispatchRequest Action操作转换层:ActionRequest Execute操作执行层
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~