ElasticSearch 系列:Index

Index

  • (Index)索引就像关系数据库中的“数据库”。它有一个定义多种类型的映射。
  • (index)索引是一个逻辑命名空间,它映射到一个或多个主分片,并且可以有零个或多个副本分片。

Index配置

  • Index 的配置可以参考官方文档
  • 这里只是说明比较重要的两个参数。
  • “number_of_shards”: 分片数量
  • “number_of_replicas”: 副本数量

分片

  • ES里面的索引可能存储大量数据,这些数据可能会超出单个节点的硬件限制。

  • 为了解决这个问题,ES提供了将索引细分为多个碎片的功能,这就是分片。这里咱们可以简单去理解,在创建索引时,只需要咱们定义所需的碎片数量就可以了,其实每个分片都可以看作是一个完全功能性和独立的索引,可以托管在集群中的任何节点上。

注意

通过分片技术,咱们可以水平拆分数据量,同时它还支持跨碎片(可能在多个节点上)分布和并行操作,从而提高性能/吞吐量;
ES可以完全自动管理分片的分配和文档的聚合来完成搜索请求,并且对用户完全透明;
主分片数在索引创建时指定,后续只能通过Reindex修改,但是较麻烦,一般不进行修改。

副本

为了实现高可用、遇到问题时实现分片的故障转移机制,ElasticSearch允许将索引分片的一个或多个复制成所谓的副本分片。

注意

当分片或者节点发生故障时提供高可用性。因此,需要注意的是,副本分片永远不会分配到复制它的原始或主分片所在的节点上;
可以提高扩展搜索量和吞吐量,因为ES允许在所有副本上并行执行搜索;
默认情况下,ES中的每个索引都分配5个主分片,并为每个主分片分配1个副本分片。主分片在创建索引时指定,不能修改,副本分片可以修改。

索引操作

创建索引

这个时候默认是Dynamic mapping

PUT /colinrs_csdn_blog
{"settings": { "number_of_shards": "1", "number_of_replicas": "0"} 
}

查看索引

GET /colinrs_csdn_blog

往索引插入数据,指定ID

POST /colinrs_csdn_blog/_doc/
{"id":1,"name":"colinrs_csdn_blog","page":"https://blog.csdn.net/baidu_32452525","say":"Hello,World" 
}

往索引插入数据,不指定ID

POST /colinrs_csdn_blog/_doc/1
{"id":1,"name":"colinrs_csdn_blog","page":"https://blog.csdn.net/baidu_32452525","say":"Hello,World" 
}

获取到索引数据

GET /colinrs_csdn_blog/_doc/1

搜索索引数据

GET /colinrs_csdn_blog/_search

按照条件搜索索引数据

POST /colinrs_csdn_blog/_search
{"query": {"match_all": {}},"sort": [{"id": {"order": "asc"}}]
}

全局更新索引数据

PUT  /colinrs_csdn_blog/_doc/1
{"id":1,"name":"colinrs_csdn_blog_1","page":"https://blog.csdn.net/baidu_32452525","say":"Hello,World" 
}

局部更新索引数据

POST /colinrs_csdn_blog/_update/1 
{"doc":{"name":"colinrs_csdn_blog_16"}
}

删除索引数据

POST /colinrs_csdn_blog/_delete_by_query
{"query":{"match":{"name":"colinrs_csdn_blog"}}
} 

删除一个索引

DELETE /colinrs_csdn_blog

Mapping

Index 只是类似一个数据库,数据里面还需要字段的定义,这个时候我们就需要使用到 Mapping,Mapping 就是类似数据库字段里面的定义

它有以下几个作用:

  • 定义索引中的字段的名称
  • 定义字段的数据类型,比如字符串、数字、布尔
  • 字段,倒排索引的相关配置,比如设置某个字段为不被索引、记录 position 等
    Mapping

支持的数据类型:见文档:一文搞懂 Elasticsearch 之 Mapping

定义一个Mapping

创建Index 的时候指定 mapping
PUT /my-index-000001
{"mappings": {"properties": {"age":    { "type": "integer" },  "email":  { "type": "keyword"  }, "name":   { "type": "text"  }     }}
}

参考

  • 最清晰易懂的Elasticsearch操作手册|收藏夹必备


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部