如何创建Elasticsearch索引?

在Elasticsearch中,可以使用CREATE INDEX命令来创建一个新索引

Elasticsearch索引创建指南

Elasticsearch是一款基于Lucene构建的开源搜索引擎,它提供了分布式多用户能力的全文搜索引擎,并支持RESTful操作,本文将详细介绍如何在Elasticsearch中创建索引,包括基本概念、操作方法以及常见问题解答。

如何创建Elasticsearch索引?

一、什么是索引?

在Elasticsearch中,索引是一个逻辑概念,用于存储文档(类似于关系数据库中的表),每个索引由一个或多个分片组成,每个分片又有一个副本,以提高数据的可用性和容错性。

二、索引命名规范

小写字母命名:索引名称应以小写英文字母命名。

避免驼峰命名法:不要使用驼峰命名法。

单词间用下划线分隔:如果索引名称包含多个单词,应使用全小写加下划线的方式,如test_index

三、创建索引

1、使用PUT命令创建索引

   PUT /索引名称

创建一个名为es_db的索引:

   PUT /es_db

2、查询索引

   GET /索引名称

查询名为es_db的索引:

   GET /es_db

3、删除索引

如何创建Elasticsearch索引?

   DELETE /索引名称

删除名为es_db的索引:

   DELETE /es_db

4、设置Settings

在创建索引时,可以指定一些设置,如分片数和副本数,这些设置只能在创建索引时或在关闭状态的索引上进行修改。

   PUT /索引名称
   {
     "settings": {
       "number_of_shards": 3,
       "number_of_replicas": 2
     }
   }

创建一个名为es_db的索引,并设置其主分片数量为3,每个主分片的副本数量为2:

   PUT /es_db
   {
     "settings": {
       "number_of_shards": 3,
       "number_of_replicas": 2
     }
   }

四、创建映射(Mapping)

映射定义了索引中的字段类型、分析器等信息,可以在创建索引时直接指定映射,也可以在索引创建后单独更新映射,但需要注意的是,Elasticsearch不允许对已存在字段的类型进行修改(除了某些特殊情况)。

1、直接在创建索引时指定映射

   PUT /索引名称
   {
     "mappings": {
       "properties": {
         "title": {
           "type": "text"
         },
         "price": {
           "type": "double"
         },
         "published_date": {
           "type": "date"
         }
       }
     }
   }

创建一个名为my_index的索引,并定义三个字段:title(类型为text)、price(类型为double)和published_date(类型为date):

   PUT /my_index
   {
     "mappings": {
       "properties": {
         "title": {
           "type": "text"
         },
         "price": {
           "type": "double"
         },
         "published_date": {
           "type": "date"
         }
       }
     }
   }

2、单独更新映射

如果索引已经创建,也可以单独更新映射,但需要注意的是,Elasticsearch不允许对已存在字段的类型进行修改(除了某些特殊情况)。

   PUT /索引名称/_mapping
   {
     "properties": {
       "new_field": {
         "type": "keyword"
       }
     }
   }

向已经存在的my_index索引中添加一个新的字段new_field,类型为keyword:

   PUT /my_index/_mapping
   {
     "properties": {
       "new_field": {
         "type": "keyword"
       }
     }
   }

五、实战演示

如何创建Elasticsearch索引?

假设我们要创建一个商品索引,并指定分片数和副本数,同时定义商品的映射,我们可以使用以下CURL命令来实现:

curl -X PUT "localhost:9200/commodity?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "commodity_id": {
        "type": "long"
      },
      "commodity_name": {
        "type": "text"
      },
      "picture_url": {
        "type": "keyword"
      },
      "price": {
        "type": "double"
      }
    }
  }
}'

执行上述命令后,如果成功,将返回以下结果:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "commodity"
}

这表明索引commodity已经成功创建,并且具有指定的分片数和副本数,以及定义的映射。

六、FAQs

1、Q: 如何修改已有索引的副本数?

A: 你可以使用以下API来修改已有索引的副本数:

   PUT /索引名称/_settings
   {
     "number_of_replicas": 新的副本数
   }

commodity索引的副本数更新为3:

   PUT /commodity/_settings
   {
     "number_of_replicas": 3
   }

2、Q: 如何在创建索引时加入别名定义?

A: 你可以在创建索引时通过aliases字段来定义别名。

   PUT /索引名称
   {
     "aliases": {
       "alias_1": {},
       "alias_2": {
         "filter": { "term": { "user": "kimchy" } },
         "routing": "kimchy"
       }
     }
   }

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1256218.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希的头像未希新媒体运营
上一篇 2024-10-31 23:58
下一篇 2024-03-21 02:32

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入