1.创建索引

语句

PUT /${idnexName}

可选参数

  1. aliases:相当于对索引做了第二层封装。可以通过指定别名的方式,在重建索引时,重置别名指向新的索引,进而实现对应用程序而言无缝切换。对于客户端来说是无感知的
  2. mappings:对文档中字段的描述,类似于关系型数据库中的schema
  3. settings:对于索引的设置,包括分片数,副本数,分词器,refresh时间频率等相关设置

    aliases

    别名,可以理解为对于索引的概念进行了一个上层封装。一个别名可以对应多个索引,一个索引也可以对应多个别名。
    别名的使用通常在于,客户端使用别名来对索引进行查询,当重建索引时,只需要将别名指向新的索引即可。对于客户端来说,没有做任何变更即可对新索引进行查询
    需要注意的是,别名与索引不可同名,且按照规范,最好是索引名称的子集。例如索引名称:student_1,别名:student

    添加索引别名

  4. 一个别名适配一个索引

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "add":{
    6. "index":"indexName",
    7. "alias":"aliasName"
    8. }
    9. }
    10. ]
    11. }
  5. 一个别名适配多个索引

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "add":{
    6. "indices":[
    7. "indexName1",
    8. "indexName2"
    9. ],
    10. "alias":"aliasName"
    11. }
    12. }
    13. ]
    14. }
  6. 一个索引添加多个别名

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "add":{
    6. "index":"indexName",
    7. "aliases":[
    8. "aliasName1",
    9. "aliasName2"
    10. ]
    11. }
    12. }
    13. ]
    14. }

    查询索引别名

    GET ${indexName}/_alias
    image.png

    删除索引别名

  7. 一个别名适配一个索引

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "remove":{
    6. "index":"indexName",
    7. "alias":"aliasName"
    8. }
    9. }
    10. ]
    11. }
  8. 一个别名适配多个索引

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "remove":{
    6. "indices":[
    7. "indexName1",
    8. "indexName2"
    9. ],
    10. "alias":"aliasName"
    11. }
    12. }
    13. ]
    14. }
  9. 一个索引添加多个别名

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "remove":{
    6. "index":"indexName",
    7. "aliases":[
    8. "aliasName1",
    9. "aliasName2"
    10. ]
    11. }
    12. }
    13. ]
    14. }

    修改索引别名

    其实就是将删除和新增两个动作结合

  10. 一个别名适配一个索引

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "remove":{
    6. "index":"indexName",
    7. "alias":"aliasName"
    8. }
    9. },
    10. {
    11. "add":{
    12. "index":"newIndexName",
    13. "alias":"newAliasName"
    14. }
    15. }
    16. ]
    17. }
  11. 一个别名适配多个索引

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "remove":{
    6. "indices":[
    7. "indexName1",
    8. "indexName2"
    9. ],
    10. "alias":"aliasName"
    11. }
    12. },
    13. {
    14. "add":{
    15. "indices":[
    16. "newIndexName1",
    17. "newIndexName2"
    18. ],
    19. "alias":"newAliasName"
    20. }
    21. }
    22. ]
    23. }
  12. 一个索引添加多个别名

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "remove":{
    6. "index":"indexName",
    7. "aliases":[
    8. "aliasName1",
    9. "aliasName2"
    10. ]
    11. }
    12. },
    13. {
    14. "add":{
    15. "index":"newIndexName",
    16. "aliases":[
    17. "newAliasName1",
    18. "newAliasName2"
    19. ]
    20. }
    21. }
    22. ]
    23. }

    mapping

    参考:ElasticSearchMapping详解

    settings

    setting属性用于设置当前索引的分片数,副本数等信息
    常用项包括:

  13. index.number_of_shards:索引分片数

  14. index.number_of_replicas:索引副本数
  15. index.refresh_interval:refresh频率,默认1s。当数据对实时刷新要求不那么高时,可以适当调大改值。当值=-1时,代表不会进行refresh操作,但是请保证es的虚拟机内存足够大,不然会造成内存溢出

常见创建如下:

  1. PUT student-2
  2. {
  3. "settings":{
  4. "index":{
  5. "number_of_shards":3,
  6. "number_of_replicas":1,
  7. "refresh_interval":"3s"
  8. }
  9. }
  10. }

完整创建索引示例

  1. PUT student-2
  2. {
  3. "aliases":{
  4. "student":{
  5. }
  6. },
  7. "mappings":{
  8. "properties":{
  9. "age":{
  10. "type":"long"
  11. },
  12. "name":{
  13. "type":"text",
  14. "fields":{
  15. "keyword":{
  16. "type":"keyword",
  17. "ignore_above":256
  18. }
  19. }
  20. }
  21. }
  22. },
  23. "settings":{
  24. "index":{
  25. "refresh_interval":"3s",
  26. "number_of_shards":"3",
  27. "number_of_replicas":"1"
  28. }
  29. }
  30. }

2.查询索引

查询当前集群全部索引

GET _cat/indices?v
image.png

查询单个索引

GET ${indexName}
image.png

查询单个索引的部分字段

按照restful形式,需要在/indexName后再追加对应属性的_路由即可
示例:

  1. 只查询mappping:GET /{indexName}/_mapping

image.png

  1. 只查询settings:GET /${indexName}/_settings

image.png

3.修改索引

es基于lucene,而lucene中的每个segment都具有不变性。因此每个Index一旦创建完成就不可修改。可以通过建立新索引,旧数据迁移到新索引的形式更新索引

  1. 建立新索引

    1. POST _reindex
    2. {
    3. "source":{
    4. "index":"oldIndex"
    5. },
    6. "dest":{
    7. "index":"newIndex"
    8. }
    9. }
  2. 删除旧索引

    1. DELETE oldIndex
  3. 别名重置

    1. POST _aliases
    2. {
    3. "actions":[
    4. {
    5. "add":{
    6. "index":"indexName",
    7. "alias":"aliasName"
    8. }
    9. }
    10. ]
    11. }

    4.删除索引

    删除单个

    DELETE ${indexName}
    image.png

    删除多个

    DELETE ${indexName}, ${indexName}