elasticsearch索引的创建过程index create逻辑分析

下面是关于elasticsearch索引的创建过程的完整攻略:

1. 创建 index

Elasticsearch 索引的创建过程主要分为三个步骤:创建 index、配置 index、预热 index。其中,第一个步骤是最基础也最重要的步骤,我们可以通过以下REST API 请求来创建索引:

PUT /my-index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "body": {
        "type": "text"
      }
    }
  }
}

上述请求中,我们创建了一个名为 my-index 的索引,设置了 1 个分片和 0 个副本。在 mappings 中定义了两个字段 titlebody,它们的类型都是 text。另外,我们也可以不设置 mappings,这时 Elasticsearch 会自动根据文档中的属性进行推导。

2. 配置 index

索引创建完成后,我们需要根据实际需求进行一些配置。这里介绍两个常用的配置项:

2.1 分片和副本

在步骤一中,我们已经设置了索引的分片和副本数量。这里再详细讲解一下:

分片是 Elasticsearch 对数据的水平切分,可以将数据分散到多台机器上进行存储和检索。当一个索引太大,无法存储在单个节点上时,我们需要将它分散到多个节点上。分片的数量不能太小,也不能太大,最好根据数据量和硬件条件进行调整。

副本是 Elasticsearch 对数据的备份,它可以提供高可用和负载均衡。当某个节点宕机或网络不通时,其他节点可以接管并继续提供服务;当查询请求过多时,副本可以分摊负载。副本数量也不能太少,也不能太多,最好考虑性能和容错性的平衡。

可以通过以下 API 修改分片和副本数:

PUT /my-index/_settings
{
  "number_of_replicas": 1
}

上述请求将 my-index 的副本数改为 1。

2.2 索引别名

索引别名是 Elasticsearch 对索引的引用,它可以隐藏底层的真实索引名称,并提供如下功能:

  • 可以在不改变索引名称的情况下修改索引配置;
  • 可以通过别名来进行搜索;
  • 可以将多个索引合并成一个虚拟索引。

可以通过以下 API 创建索引别名:

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "my-index",
        "alias": "my-alias"
      }
    }
  ]
}

上述请求将 my-index 的别名改为 my-alias

3. 预热 index

索引创建完成后,我们需要等待 Elasticsearch 将数据加载到内存中,进行一定的预热操作。这个过程可能会花费一些时间,具体时间也取决于数据量和硬件环境。可以通过以下 API 查看索引状态:

GET /my-index/_stats

上述请求返回的响应中,有一个字段叫 primaries,它包含了主分片的一些统计信息,如存储空间、文档数、分词器等等。

示例说明

为了更好的理解上述过程,下面举两个具体的示例说明:

  1. 创建一个名为 goods 的索引,包含 2 个分片和 1 个副本,定义了一个属性 title 和一个属性 tags
PUT /goods
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "tags": {
        "type": "keyword"
      }
    }
  }
}
  1. 修改名为 students 的索引的副本数为 2。
PUT /students/_settings
{
  "number_of_replicas": 2
}

以上就是关于 Elasticsearch 索引创建过程的详细说明,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:elasticsearch索引的创建过程index create逻辑分析 - Python技术站

(0)
上一篇 2023年6月13日
下一篇 2023年6月13日

相关文章

  • 如何在Pandas中删除数据框架中的随机符号

    在Pandas中删除数据框架中的随机符号,可以采用str.replace()或者正则表达式的方式进行操作。 首先我们要导入Pandas库。 import pandas as pd 然后,可以创建一个包含随机符号的数据框架,来演示删除随机符号的过程。例如: df = pd.DataFrame({ ‘A’: [‘a!b’, ‘c@d’, ‘e#f’], ‘B’:…

    python-answer 2023年3月27日
    00
  • 利用Pandas求两个dataframe差集的过程详解

    求两个dataframe的差集其实就是找到第一个dataframe中不在第二个dataframe中出现的记录。利用Pandas可以非常方便地完成这个过程。 在实现中,首先需要将两个dataframe进行合并(即concat),然后对该合并后的表进行去重(即drop_duplicates),最后再筛选出不在第二个dataframe的记录(即~df3.isin(…

    python 2023年5月14日
    00
  • 详解Python连接MySQL数据库的多种方式

    详解Python连接MySQL数据库的多种方式 在Python中连接MySQL数据库有多种方式,包括使用原生库、使用ORM框架和使用第三方库等等。下面将逐一介绍这些方式的使用方法。 使用原生库 Python原生库mysql-connector-python是Python官方推荐的mysql库,支持Python 3.x版本和MySQL 8.0。以下是使用该库连…

    python 2023年6月13日
    00
  • 如何获得Pandas数据框架的描述性统计

    要获得Pandas数据框架的描述性统计,需要使用Pandas中的describe()方法。该方法将生成基本统计信息,例如计数、均值、标准偏差、最小值、25%位数、50%位数、75%位数和最大值,以帮助用户更好地理解各列数据的分布情况。下面是详细的步骤和实例说明: 步骤1:导入Pandas库和数据集 import pandas as pd # 读取csv文件 …

    python-answer 2023年3月27日
    00
  • pandas 根据列的值选取所有行的示例

    下面是针对“pandas根据列的值选取所有行”的详细攻略: 1. 使用boolean mask 在pandas中,可以使用boolean mask来根据列的值选取所有行。具体的步骤如下: 使用pandas读取数据,并将其保存为DataFrame类型。 对于目标列,使用比较运算符生成boolean mask。 使用boolean mask过滤DataFrame…

    python 2023年5月14日
    00
  • Python字符串中如何去除数字之间的逗号

    要去除Python字符串中数字之间的逗号,可以使用正则表达式或字符串的split()方法。下面分别讲解这两种方法。 使用正则表达式 可以使用re模块中的sub()函数来替换字符串中的逗号。示例如下: import re s = ‘1,000,000’ s = re.sub(r’,’, ”, s) # 将s中的逗号替换为空字符串 print(s) # 输出:…

    python 2023年5月14日
    00
  • pandas实现滑动窗口的示例代码

    关于如何使用pandas实现滑动窗口, 我们可以按照以下步骤进行: 1. 安装pandas 在开始使用pandas之前,我们需要先安装pandas。可以通过以下命令在终端上安装pandas: pip install pandas 2. 导入必要的库 在开始使用pandas时,我们需要导入numpy、pandas等必要的库。在这里,我们可以使用以下代码: im…

    python 2023年5月14日
    00
  • 如何在Pandas中用频率确定周期范围

    在Pandas中,我们可以使用频率来确定日期或时间段的周期范围。具体步骤如下: 1.导入常用的Python库和数据:首先需要导入常用的Python库,如Pandas、Numpy等。然后,我们需要加载我们要处理的数据,这里我们以一份包含销售数据的数据集为例,加载方式可以使用Pandas库的read_csv方法。 import pandas as pd impo…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部