Elasticsearch 之Mapping设置

网友投稿 673 2022-05-29

术语介绍

文档 Document:用户存储在es 中的数据文档,es中存储的最小单元,类似于MySQL表中的一行数据

索引 Index:由具有相同字段的文档列表组成,表示一个文档的集合,类似于table,在6.0后一个Index下只有一个type。(在6后的版本会把type去除)

节点 Node:一个elasticsearch的运行实例,是集群的构成单元

集群 Cluster:由一个或多个节点组成,对外提供服务

每一个文档都有唯一的id标识

自行指定

es自动生成

数据类型

核心数据类型

字符串型 text、keyword

数值型 long、integer、short、byte、double、float、half_float、scaled_float

日期类型 date

布尔类型 boolean

二进制类型 binary

范围类型 integer_range、float_range、long_range、double_range、date_range

如果清楚知道字段要设置的类型,最好作为选择,比如,float 比double可以节省近50%的存储空间

复杂数据类型

数组类型 array

对象类型 object

嵌套类型 nested object (与object不同是此类型会被特殊处理,文档不会和父文档混在一起)

地理位置数据类型

geo_point

geo_shape

专用类型

记录ip地址:ip

Elasticsearch 之Mapping设置

实现自动补全:completion

记录分词数:token_count

记录字符串hash值:murmur3

percolator

父子查询:join

多字段特性multi-fields

允许对同一个字段采用不同的配置,比如分词,常见例子如 对人名实现拼音搜索,只需要在人名中新增一个子字段为pinyin即可(要安装文字转拼音插件)

es 批量导入数据后,结果

$result = $this->elasticsearch->bulkDoc($params);

//var_dump($result);

// $result结果:

array(3) {

["took"]=>int(5)

["errors"]=>bool(false)

["items"]=>array(12) {

[0]=>array(1) {

["index"]=> array(8) {

["_index"]=>string(8) "rss_data"

["_type"]=>string(8) "rss_data"

["_id"]=>string(19) "1126102154422484923"

["_version"]=> int(2)

["result"]=> string(7) "updated"

["_shards"]=> array(3) {

["total"]=> int(1)

["successful"]=> int(1)

["failed"]=> int(0)

}

["created"]=> bool(false)

["status"]=> int(200)

}

}

}

};

Elasticsearch 数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Doxygen 介绍和下载,安装
下一篇:Swagger框架学习
相关文章