index对应mysql中的数据库,而不是索引

    1. $params = [
    2. 'index' => 'myindex', #index的名字不能是大写和下划线开头
    3. 'body' => [
    4. 'settings' => [
    5. 'number_of_shards' => 2,
    6. 'number_of_replicas' => 0
    7. ]
    8. ]
    9. ];
    10. $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映射,在文档写入的时候,会自动根据文档字段自动设别类型,
    静态映射,事先定义好映射,包含文档的字段类型,分词器等