首页 > 其他分享 >创建 elastic search 索引的一些注意事项

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

时间:2023-08-22 19:57:58浏览次数:34  
标签:search elastic 映射 创建 索引 字段 设置 type

在创建 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 会自动为这些新字段创建映射。虽然这个功能在某些情况下很有用,但在某些情况下也可能导致问题。

标签:search,elastic,映射,创建,索引,字段,设置,type
From: https://www.cnblogs.com/sap-jerry/p/17649544.html

相关文章

  • Easysearch 跨集群复制实战
    在之前的文章中,有通过网关实现容灾的案例。今天给大家介绍Easysearch的跨集群复制功能。该功能可在集群之间复制数据,应用场景包括但不限于以下举例:灾备同步:将数据同步到灾备中心,灾备中心可对外提供查询服务。读写分离:单一集群读写压力都较大时,为了避免读写互相干扰造成性能降级,可......
  • Easysearch 跨集群复制实战
    在之前的文章中,有通过网关实现容灾的案例。今天给大家介绍Easysearch的跨集群复制功能。该功能可在集群之间复制数据,应用场景包括但不限于以下举例:灾备同步:将数据同步到灾备中心,灾备中心可对外提供查询服务。读写分离:单一集群读写压力都较大时,为了避免读写互相干扰造成性能降......
  • oracle 查询表,索引列等
    1、查找表的所有索引(包括索引名,类型,构成列):selectt.,i.index_typefromuser_ind_columnst,user_indexesiwheret.index_name=i.index_nameandt.table_name=i.table_nameandt.table_name=要查询的表2、查找表的主键(包括名称,构成列):selectcu.fromuser_cons_c......
  • ios开发之--UISearchDisplayController的简单使用
    控件就不介绍了,UISearchDisplayController就是把searbar和tableview结合到一块了,直接上代码:.h#import<UIKit/UIKit.h>@interfaceThirdViewController:UIViewController<UITableViewDelegate,UITableViewDataSource>{NSArray*_array;NSArray*_filterData;UI......
  • ios开发之--ios11适配:TableView的heightForHeaderInSection设置高度无效/UISearchBar
    更新到ios11,然后使用x-code9运行项目,发现tableview的-(CGFloat)tableView:(UITableView*)tableViewheightForHeaderInSection:(NSInteger)section方法不走,所以页面也华丽丽的变成了一排的cell,通过查看文档和资料,原来是ios11默认开启self-sizing,把这个属性关系即可,具体代码如下:sel......
  • elasticsearch
    最典型的是两个应用场景:全文检索 和 复杂查询。正排索引,也叫正向索引(ForwardIndex),是通过文档ID去查找关键词(文档内容)。倒排索引,也叫反向索引(InvertedIndex),是通过关键词查找文档ID。must:其查询子句必须全部被满足,逻辑相当于and,并且会计算分数。filter:与must作用一......
  • Elasticsearch实战 | match_phrase搜不出来,怎么办?
    1、问题抛出某个词组在Elasitcsearch中的某个document中存在,就一定通过某种匹配方式把它搜出来。举例:title=公路局正在治理解放大道路面积水问题。输入关键词:道路,能否搜索到这个document呢?实际应用中可能需要:1)检索关键词”理解”、”解放”、”道路”、“理解放大”,都能搜出......
  • Odoo - xml 的action/search继承修改
    直接对action动作视图进行修改<?xmlversion="1.0"encoding="UTF-8"?><odoo><recordmodel="ir.actions.act_window"id="(模块名).(想要修改的action_id)"><fieldname="domain">[('asset_ty......
  • 记:Elasticsearch 的 告警机制 和 jvm 内存分配
    Elasticsearch的告警机制导致的更新失败问题总结:由于测试环境资源占用比例过高导致elasticsearch触发保护机制,导致的更新失败的问题Es告警日志:查看服务器资源使用情况:此时Es所在的挂载磁盘已经占用了95%,Es默认的保护机制:属性名属性值(可配置为固定值)含义保......
  • mysql 聚簇索引
    聚簇索引概念聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但InnoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但InnoDB的聚簇......