V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hush3
V2EX  ›  问与答

请教下 ElasticSearch 开发相关问题

  •  
  •   hush3 · 2020-11-09 20:15:07 +08:00 · 868 次点击
    这是一个创建于 1475 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近要在项目中上 es 了,对于一些开发上的选择不知如何决定,是否有类似 Java 开发规范一样的 es 规范?

    主要用于非日志数据的存储与检索,有如下 2 个问题:

    1 ES 中可以使用动态模板,但对于一个索引中确定的字段,是像 mysql 一样把字段都写在 mapping 中,基本不使用动态模板,还是依赖动态 mapping 去生成?(规定好一个全局动态模板)

    2 ES 中推荐使用别名,但插入数据时需要真实索引名,在开发中是否有必要一定要上别名?如果要上的话,别名与真实索引名的对应关系是不是应该硬编码在某个地方?(没有查到怎么根据别名查对应索引名...)

    3 条回复    2020-11-10 14:02:45 +08:00
    gtexpanse
        1
    gtexpanse  
       2020-11-09 20:44:03 +08:00 via iPhone
    1. 尽量一开始就指定 mapping 类型,因为数据量大了之后肯定要考虑这个问题
    2. 插入数据没限制真实索引名啊(莫非是新特性?),别名建议读写分离两个别名,后期 rebuild 全靠别名
    alexfarm
        2
    alexfarm  
       2020-11-09 20:46:56 +08:00
    索引量较大建议按日拆分索引,那就需要别名了
    hush3
        3
    hush3  
    OP
       2020-11-10 14:02:45 +08:00
    @gtexpanse 比如还没采用按日期分索引,一个索引叫 idx_user 给他弄个别名叫 user 的话 我在代码里就要针对查询操作,使用 user 作为索引名的参数, 针对插入数据的操作,使用 idx_user 作为索引名参数,是这样吗? 那是不是就要有个地方保存这两个名字之间的对应关系...
    另外后期加个字段,不给之前旧的索引加,或者干脆使用 update_by_query 批量加可不可以呢?一定要 reindex 吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1419 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:28 · PVG 01:28 · LAX 09:28 · JFK 12:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.