创建 elastic search 索引的一些注意事项

举报
汪子熙 发表于 2023/08/27 08:55:37 2023/08/27
【摘要】 在创建 Elasticsearch(简称 ES)索引时,有多个注意事项需要考虑。以下是一些关键的注意事项,我会通过具体的例子进行详细说明。明确索引需求:在创建索引之前,我们需要对我们的数据和查询需求有清晰的理解。这包括数据的类型(例如文本,数字,日期等)、数据的大小(例如是否有大量的数据需要被索引)、查询的需求(例如是否需要全文搜索,是否需要聚合操作等)。这些因素都会影响我们如何设置索引的映...

在创建 Elasticsearch(简称 ES)索引时,有多个注意事项需要考虑。以下是一些关键的注意事项,我会通过具体的例子进行详细说明。

  1. 明确索引需求:在创建索引之前,我们需要对我们的数据和查询需求有清晰的理解。这包括数据的类型(例如文本,数字,日期等)、数据的大小(例如是否有大量的数据需要被索引)、查询的需求(例如是否需要全文搜索,是否需要聚合操作等)。这些因素都会影响我们如何设置索引的映射和设置。

    例如,假设我们有一个包含用户信息的数据集,每个用户有姓名、年龄、生日、地址等属性。如果我们需要对姓名进行全文搜索,对年龄进行范围查询,对生日进行聚合操作,那么我们在创建索引时就需要为每个字段设置相应的类型和分析器。

  2. 索引映射:映射是定义索引中字段如何存储和如何搜索的过程。我们可以为每个字段定义类型(例如 text,keyword,date,long 等),也可以定义分析器、格式化器等。

    例如,我们可以为上述用户信息数据集创建如下的映射:

    PUT /user
    {
      `mappings`: {
        `properties`: {
          `name`: { `type`: `text` },
          `age`: { `type`: `integer` },
          `birthday`: { `type`: `date`, `format`: `yyyy-MM-dd` },
          `address`: { `type`: `keyword` }
        }
      }
    }
    

    在这个映射中,name 字段被设置为 text 类型,可以进行全文搜索。age 字段被设置为 integer 类型,可以进行范围查询。birthday 字段被设置为 date 类型,并定义了日期的格式。address 字段被设置为 keyword 类型,可以进行精确搜索。

  3. 索引设置:在创建索引时,我们可以定义一些设置,包括分片数、副本数、刷新间隔等。

    例如,假设我们的用户信息数据集非常大,我们可以将分片数设置为 5,将副本数设置为 1,以提高搜索性能和数据的可用性:

    PUT /user
    {
      `settings`: {
        `number_of_shards`: 5,
        `number_of_replicas`: 1
      },
      ...
    }
    

    需要注意的是,索引的分片数在创建时就需要定义好,之后无法更改。而副本数可以在之后进行修改。

  4. 动态映射:ES 默认开启动态映射功能,这意味着如果索引中新加入的文档包含新的字段,ES 会自动为这些新字段创建映射。虽然这个功能在某些情况下很有用,但在某些情况下也可能导致问题。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。