Elasticsearch index及数据的基础操作

  • 环境

  • Elasticsearch 7.10.0

  • 操作index

    1. 创建index

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    PUT index_test
    {
    "settings": {
    "number_of_shards": 6,
    "number_of_replicas": 0,
    "analysis" : {
    "analyzer" : {
    "standard_and_english" : {
    "type" : "english",
    "stopwords" : "_standard_"
    }
    }
    }
    },
    "mappings": {
    "dynamic": "strict",
    "properties": {
    "name": {
    "type": "keyword"
    },
    "age": {
    "type": "integer"
    },
    "intro": {
    "type": "text"
    },
    "intro_str": {
    "type" : "text",
    "fields" : {
    "keyword" : {
    "type" : "keyword"
    }
    },
    "analyzer" : "standard_and_english"
    },
    "course": {
    "type": "nested",
    "dynamic": "strict",
    "properties": {
    "courseName": {
    "type": "keyword"
    },
    "teacherName": {
    "type": "keyword"
    },
    "courseDate": {
    "type" : "date",
    "format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_second"
    },
    "courseIntroduction": {
    "type": "text",
    "index": false
    },
    "isSuccess": {
    "type": "boolean"
    }
    }
    }

    }
    }
    }

    字段解释

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    settings设置index基础信息,如分片数和副本数。
    number_of_shards 是指索引要做多少个分片,只能在创建索引时指定,后期无法修改。
    number_of_replicas 是指每个分片有多少个副本,后期可以动态修改
    analysis自定义分词器

    mappings设置字段信息
    name的keyword数据类型,不进行分词,直接索引
    age的integer数据类型,常见的有long, integer, short, byte, double, float, half_float, scaled_float
    intro的text数据类型,会分词,然后进行索引
    intro_str的text数据类型,用定义好的standard_and_english进行分词,同时查询时,用intro_str.keyword就是keyword类型
    course的nested复杂类型,主要有Arrayobject、nested。nested需要建立对象数组的索引并保持数组中每个对象的独立性,则应使用nested数据类型而不是 object数据类型。在内部,嵌套对象索引阵列作为一个单独的隐藏文档中的每个对象,这意味着每个嵌套的对象可以被独立的查询。
    courseDate的date数据类型,设置的结构为yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_second,epoch_second为秒级,传入字符串和时间戳都行
    courseIntroduction的index设置为false,不需要索引,默认是存在索引,
    isSuccess的boolean,布尔类型
    1. 删除index

    1
    DELETE index_test
    1. 修改index,新增字段

    1
    2
    3
    4
    5
    6
    7
    8
    PUT /index_test/_mapping
    {
    "properties": {
    "fields_new": {
    "type": "keyword"
    }
    }
    }
    1. index新增别名

    1
    2
    3
    4
    5
    6
    POST / _aliases
    {
    "actions": [
    {"add": {"index": "index_test", "alias": "index_test2"}}
    ]
    }
  • 操作数据

    1. 添加数据

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    POST index_test/_doc/id_1
    {
    "name": "张三",
    "age": 20,
    "intro": "我是一名粉刷匠,粉刷本领强",
    "intro_str": "The business includes painting walls, touching up paint, cutting bricks",
    "course": [
    {
    "courseName":"论粉刷墙壁的重要性",
    "teacherName":"李四",
    "courseDate":"2024-01-04",
    "courseIntroduction":"墙面粉刷是对空间美学的一种诠释。通过巧妙的色彩搭配和质感处理,可以营造出不同的空间氛围和风格,使得室内空间更加符合人们的审美需求和生活习惯。",
    "isSuccess":true
    },
    {
    "courseName": "粉刷的三百六十五种技巧",
    "teacherName": "李四",
    "courseDate": 1714359588,
    "courseIntroduction": "《粉刷的三百六十五种技巧》是一本全面而详尽的粉刷技巧指南,适合从初学者到专业粉刷工的所有读者。这本书将带您深入了解粉刷的各个方面,让您掌握粉刷的艺术,为家庭和工作场所带来焕然一新的面貌。",
    "isSuccess": false
    }
    ]
    }
    POST index_test/_doc/id_2
    {
    "name": "小明",
    "age": 25,
    "intro": "打工人",
    "intro_str": "Migrant worker",
    "course": [
    {
    "courseName":"打工人必备技巧",
    "teacherName":"小亮",
    "courseDate":"2024-04-30",
    "courseIntroduction":"打工人必备技巧。",
    "isSuccess":true
    },
    {
    "courseName": "天选打工人",
    "teacherName": "杰克",
    "courseDate": 1715138087,
    "courseIntroduction": "天选打工人",
    "isSuccess": false
    }
    ]
    }
    POST index_test/_doc/id_3
    {
    "name": "小A",
    "age": 17,
    "intro": "打工人",
    "intro_str": "Migrant worker",
    "course": [
    {
    "courseName":"打工人必备技巧",
    "teacherName":"小亮",
    "courseDate":"2024-04-25",
    "courseIntroduction":"打工人必备技巧。",
    "isSuccess":false
    },
    {
    "courseName": "粉刷的三百六十五种技巧",
    "teacherName": "李四",
    "courseDate": 1714359588,
    "courseIntroduction": "《粉刷的三百六十五种技巧》是一本全面而详尽的粉刷技巧指南,适合从初学者到专业粉刷工的所有读者。这本书将带您深入了解粉刷的各个方面,让您掌握粉刷的艺术,为家庭和工作场所带来焕然一新的面貌。",
    "isSuccess": true
    }
    ]
    }
    1. 查询结果

    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
    GET index_test/_doc/id_1
    {
    "_index" : "index_test",
    "_type" : "_doc",
    "_id" : "id_1",
    "_score" : 1.0,
    "_source" : {
    "name" : "张三",
    "age" : 20,
    "intro" : "我是一名粉刷匠,粉刷本领强",
    "intro_str" : "The business includes painting walls, touching up paint, cutting bricks",
    "course" : [
    {
    "courseName" : "论粉刷墙壁的重要性",
    "teacherName" : "李四",
    "courseDate" : "2024-01-04",
    "courseIntroduction" : "墙面粉刷是对空间美学的一种诠释。通过巧妙的色彩搭配和质感处理,可以营造出不同的空间氛围和风格,使得室内空间更加符合人们的审美需求和生活习惯。",
    "isSuccess" : true
    },
    {
    "courseName" : "粉刷的三百六十五种技巧",
    "teacherName" : "李四",
    "courseDate" : 1714359588,
    "courseIntroduction" : "《粉刷的三百六十五种技巧》是一本全面而详尽的粉刷技巧指南,适合从初学者到专业粉刷工的所有读者。这本书将带您深入了解粉刷的各个方面,让您掌握粉刷的艺术,为家庭和工作场所带来焕然一新的面貌。",
    "isSuccess" : false
    }
    ]
    }
    }
    1. 删除数据

    1
    2
    3
    4
    5
    6
    7
    8
    POST index_test/_delete_by_query
    {
    "query": {
    "match": {
    "name": "张三"
    }
    }
    }
    1. 修改数据

    1
    2
    3
    4
    5
    6
    POST index_test/_update/demo1
    {
    "doc": {
    "name":"王五"
    }
    }

Elasticsearch index及数据的基础操作
https://flyfishs.top/2024/04/28/Elasticsearch index及数据的基础操作/
作者
飞鱼
发布于
2024年4月28日
许可协议