Elasticsearch 之Mapping设置

术语介绍
文档 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
实现自动补全: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)