1、概述
Elasticsearch是一个分布式文档的储存引擎,它可以实时的储存并检索发杂的数据结构(其实是一个序列化的json文档),一旦数据被储存在es服务器中,我们可以在集群的任何一个节点进行搜索。
2、几个重要的概念
1、集群(cluster):
代表一个集群,一个集群可以有多个节点,一个节点只属于一个集群,
不同的集群是通过名字来区别的,elasticsearch目录下的data文件夹下的目录名字代表的就是集群的名字。
2、节点(node):
代表一个节点,是集群的一部分,提供建索和检索的功能,node都有自己的名字,启动时会随机生成一个名字,也可以自己定义一个名字。集群文件夹里面存在node文件夹,存在文件夹0,这个文件夹就是所说的节点。
3、索引库名(indexName):
索引是document的一个集合,名字必须是小写。类似数据库。假设es服务器集群的名字是elasticsearch,索引库名是myindex,那么es服务器目录下的data/elasticsearch/nodes/0/indices文件夹下的myindex文件夹就是索引库名。
4、索引类型(type):
索引类型是对索引库一个更细的划分,类似数据库中具体的某一张表。
5、文档(document)
这个类似数据表中的一行数据。
6、字段(field)
这个类似数据表中的某一列数据。
7、分片
一个分片本身就是一个完整的搜索引擎,文档储存在分片中,而分片储存在集群里的节点中,随着集群的扩大与缩小,es自动将分片在各节点进行迁移,以保证集群的平衡性。
8、mapping
索引映射就是对索引里面的字段和字段类型进行定义。
1、index:定义字段的检索方式和分析类型
1、默认值analyzed:进行分词,编入索引以供搜索;
2、no:则无法通过检索查询到该字段;
2、no:则无法通过检索查询到该字段;
3、not_analyzed:不进行分词(整个字段存储为关键词),编入索引以供搜索;
2、store
默认值no,不存储,从_source字段取出;
yes:独立存储。
yes:独立存储。
在ES中原始的文本会存储在_source里面(除非你关闭了它)。默认情况下其他提取出来的字段都不是独立
存储的,是从_source里面提取出来的。当然你也可以独立的存储某个字段,只要设置store:true即可。
独立存储某个字段,在频繁使用某个特殊字段时很常用。而且获取独立存储的字段要比从_source中解析快得
独立存储某个字段,在频繁使用某个特殊字段时很常用。而且获取独立存储的字段要比从_source中解析快得
多,而且额外你还需要从_source中解析出来这个字段,尤其是_source特别大的时候。
不过需要注意的是,独立存储的字段越多,那么索引就越大;索引越大,索引和检索的过程就会越慢....
不过需要注意的是,独立存储的字段越多,那么索引就越大;索引越大,索引和检索的过程就会越慢....
3、建立索引
1、获取需要建立索引的数据
2、建立客户端对象
3、如果此索引类型下的索引已经存在,对此索引进行删除操作,否则直接进行建索
4、定义索引类型映射
5、批量进行索引