index对应mysql中的数据库,而不是索引
$params = [
'index' => 'myindex', #index的名字不能是大写和下划线开头
'body' => [
'settings' => [
'number_of_shards' => 2,
'number_of_replicas' => 0
]
]
];
$client->indices()->create($params);
在MySQL里面,光有了数据库还不行,还需要建立表,ES也是一样的,ES中的type对应MySQL里面的表。
注意:ES6以前,一个index有多个type,就像MySQL中一个数据库有多个表一样自然,但是ES6以后,每个index只允许一个type,在往以后的版本中很可能会取消type。现在ES7,已经取消设置type了
type等,一些配置项
$params = [
'index' => 'myindex',
'type' => 'mytype',
'body' => [
'mytype' => [
'_source' => [
'enabled' => true
],
'properties' => [
'id' => [
'type' => 'integer'
],
'first_name' => [
'type' => 'text',
'analyzer' => 'ik_max_word'
],
'last_name' => [
'type' => 'text',
'analyzer' => 'ik_max_word'
],
'age' => [
'type' => 'integer'
]
]
]
]
];
$client->indices()->putMapping($params);
数据类型
text:该类型被用来索引长文本,在创建索引前会将这些文本进行分词,转化为的组合 ,建立索引,允许ES来检索这些词,但是不能用来排序和聚合
keyword:该类型不能分词,可以用来检索过滤,排序,聚合,不可用text进行分词模糊检索,只能全等于
数值型;long,integer,short,byte,double,flost
日期型:date
布尔型:boolean
ES中的映射分为,
动态映射,跟静态映射
动态映射,不用在创建index的时候定义Mapping映射,在文档写入的时候,会自动根据文档字段自动设别类型,
静态映射,事先定义好映射,包含文档的字段类型,分词器等