创建

  1. 基本语法:
    • 请求方法:PUT
    • 请求路径:/索引名称
    • 请求参数:mapping
  2. 有这样一条文档,需要创建索引。
    • age:类型为 byte;参与搜索,因此需要index为true;无需分词器。
    • weight:类型为float;参与搜索,因此需要index为true;无需分词器。
    • isMarried:类型为boolean;参与搜索,因此需要index为true;无需分词器。
    • info:类型为字符串,需要分词,因此是text;参与搜索,因此需要index为true;分词器可以用ik_smart。
    • email:类型为字符串,但是不需要分词,因此是keyword;不参与搜索,因此需要index为false;无需分词器。
    • score:虽然是数组,但是我们只看元素的类型,类型为float;参与搜索,因此需要index为true;无需分词器。
    • name:类型为object,需要定义多个子属性
      • name.firstName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器。
      • name.lastName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器。
  3. 注意:所有的索引名都必须要小写。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
    "age": 21,
    "weight": 52.4,
    "isMarried": false,
    "info": "美好的一天从清晨开始",
    "email": "123456@qq.cn",
    "score": [99.1, 95.5, 98.9],
    "name": {
        "firstName": "三",
        "lastName": "张"
    }
}
  1. 创建demo。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
PUT /users
{
    "aliases": {
        "alias_users": {}
    },
    "settings": {
        "index.number_of_shards": 1,
        "index.number_of_replicas": 0,
        "index.refresh_interval": "3s",
        "index.max_result_window": 1000
    },
    "mappings": {
        "properties": {
            "age": {
                "type": "byte"
            },
            "weight": {
                "type": "float"
            },
            "isMarried": {
                "type": "boolean"
            },
            "info": {
                "type": "text",
                "analyzer": "ik_smart",
                "search_analyzer": "ik_max_word"
            },
            "email": {
                "type": "keyword",
                "index": "false"
            },
            "score": {
                "type": "float"
            },
            "name": {
                "properties": {
                    "firstName": {
                        "type": "keyword",
                        "index": "false"
                    },
                    "lastName": {
                        "type": "keyword",
                        "index": "false"
                    }
                }
            }
        }
    }
}

查询

  1. 基本语法:
    • 请求方法:GET
    • 请求路径:/索引名称
    • 请求参数:无
GET /users

修改

  1. 基本语法:

    • 请求方法:PUT
    • 请求路径:/索引名称/_mapping
    • 请求参数:properties
  2. 倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。因此索引库一旦创建,无法修改mapping

  3. 虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。

PUT /users/_mapping
{
    "properties": {
        "score": {
            "type": "float"
        }
    }
}

删除

  1. 基本语法:
    • 请求方法:DELETE
    • 请求路径:/索引名称
    • 请求参数:无
DELETE /users