Elasticsearch必知必会的干货知识二:ES索引操作技巧

  • 一次性创建包含完整的别名(alias)、字段(mappings)、设置(settings)的索引,如:
PUT /index_name
{
    "index_name":{
        "aliases":{
            "index_alias_name":{

            }
        },
        "mappings":{
            "index_type":{
                "dynamic":"false",
                "properties":{
                    "doubleField1":{
                        "type":"double",
                        "null_value":0
                    },
                    "keywordField2":{
                        "type":"keyword",
                        "null_value":""
                    },
                    "longField3":{
                        "type":"long",
                        "null_value":0
                    },
                    "textField4":{
                        "type":"text",
                        "fields":{
                            "raw":{
                                "type":"keyword",
                                "null_value":""
                            }
                        },
                        "analyzer":"ngram_analyzer"
                    },
                    "dateField5":{
                        "type":"date",
                        "null_value":"-62167420800000",
                        "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                    }
                }
            }
        },
        "settings":{
            "number_of_shards":"3",
            "number_of_replicas":"2",
            "max_inner_result_window":"130000",
            "max_result_window":"130000",
            "analysis":{
                "analyzer":{
                    "ngram_analyzer":{
                        "tokenizer":"ngram_tokenizer"
                    }
                },
                "tokenizer":{
                    "ngram_tokenizer":{
                        "token_chars":[
                            "letter",
                            "digit",
                            "punctuation"
                        ],
                        "type":"ngram",
                        "max_gram":"1"
                    }
                }
            }
        }
    }
}
  • index自动滚动【Rollover】,即:当索引达到预设的滚动条件时,会自动创建新的索引(index),并将别名(alias)指向最新的索引,原索引将被自动删除映射,如:(先创建索引并指名索引别名,然后执行_rollover API 且设定滚动的条件值,最后正常的插入文档数,当达到滚动条件后,则会自动触发index _rollover)
POST index_alias_name/_rollover/
{
  "conditions": {
    "max_age": "7d", //设置:最大时间7天
    "max_docs": 10000,//设置:最大文档记录数
    "max_size":  "5gb" //设置:索引最大容量
  }
}

//Response:
{
  "old_index": "旧索引名",
  "new_index": "新索引名",
  "rolled_over": true,
  "dry_run": false,
  "acknowledged": true,
  "shards_acknowledged": true,
  "conditions": {
    "[max_docs: 10000]": true,
    "[max_age: 7d]": false,
    "[max_size: 5gb]": false
  }
}

//POST index_alias_name/_doc -d {index文档JSON}  插入10000以上的文档记录
  • 重建索引(_reindex),即:一旦索引被创建,则无法直接修改索引字段的mapping属性,必需要重建索引然后将旧的索引数据迁移到新的索引中才行(迁移过程底层使用了scroll API ),如:
POST _reindex
{
  "conflicts": "proceed",//发生冲突继续执行
  "source": {
    "index": "old_index",
    "type": "_doc",
    "size": 5000,  //设置每批迁移的文档记录数
    "_source": ["user", "_doc"], //可设置要迁移的索引字段,不设置则默认所有字段
    "query": { //可设置要迁移的文档记录过滤条件
      "match_all": { }
    }
  },
  "dest": {
    "index": "new_index",
    "type": "_doc",
    "version_type": "internal" //"internal"或者不设置,则Elasticsearch强制性的将文档转储到目标中,覆盖具有相同类型和ID的任何内容
  }
}

其它说明可参见:ES数据库重建索引——Reindex(数据迁移)

Original: https://www.cnblogs.com/zuowj/p/13384701.html
Author: 梦在旅途
Title: Elasticsearch必知必会的干货知识二:ES索引操作技巧

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592260/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 草履虫都能看懂的系统环境变量配置

    超详细的环境变量配置教学(Windows10) 很多刚刚入坑计算机的小伙伴可能对环境变量的配置不太熟悉,如果你还在找教程,那么看到这里,你就不用继续找了(嘿嘿~),废话不多说,让我…

    Java 2023年6月5日
    079
  • Set集合

    一、Set集合简介 Set集合简单来说相当于一个桶,程序可以依次的把多个对象丢进桶中(Set集合) Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,…

    Java 2023年6月9日
    069
  • 集合 实现双色球案例

    import java.util.*; /** * @author Mxhlin * @Email fuhua277@163.com * @Date 2022/09/20/15:0…

    Java 2023年6月7日
    063
  • MyBatis创建第二个项目

    Mysql文件配置 配置pom.xml 创建数据库连接信息配置文件 db.properties 创建MyBatis核心配置文件 mybatis-config.xml 创建pojo实…

    Java 2023年6月5日
    058
  • Python模拟实现银行系统(平时的小练习)

    class Bankin_system: login = ”’ ******************************************** *** *** *** …

    Java 2023年6月9日
    077
  • 【手把手】光说不练假把式,这篇全链路压测实践探索

    Hello,大家好呀,前两篇文章,我们说了下关于全链路压测的意义、整体架构,以及5种压测的方案。 前面两篇基本都属于比较理论的内容,今天这篇咱们来点实践的东西,手把手带你搞出一个压…

    Java 2023年6月15日
    096
  • 流程与标准

    流程把一件事分解成多个步骤,将涉及到的人都串了起来。有了研发流程,每个人就知道自己要干什么。换句话说,研发流程界定了每个人的职责范围。接着推理,如果发现职责不明确,那就是流程出了问…

    Java 2023年6月16日
    062
  • Kibana——通过Nginx代理Kibana并实现登陆认证

    前言 在使用ELK进行日志统计的时候,由于Kibana自身并没有身份验证的功能,任何人只要知道链接地址就可以正常登录到Kibana控制界面。 由于日常的查询,添加日志和删除日志都是…

    Java 2023年5月30日
    065
  • 【Java】命令

    jar 一. 参数类型说明 1. 标准参数(-) 2. 非标准参数(-X) 3. 非Stable参数(-XX) 4. 程序参数(–) 5. 环境变量(-D) 二. 使用…

    Java 2023年5月29日
    077
  • 通用查询解决方案

    package cn.com.fmsh.nfcos.sapo.biz; import java.util.*; import java.util.regex.*; import j…

    Java 2023年6月9日
    071
  • Redis和Mysql保持数据一致性

    1、简述 在高并发的场景下,大量的请求直接访问Mysql很容易造成性能问题。所以,我们都会用Redis来做数据的缓存,削减对数据库的请求。但是,Mysql和Redis是两种不同的数…

    Java 2023年6月8日
    067
  • [javaweb]jsp,jstl,el表达式的使用

    jsp java server page:java服务器前端页面,和servlet一样,用于动态web开发。 特点: 写jsp页面就像在写html html只给用户提供静态数据,j…

    Java 2023年6月6日
    086
  • 吊炸天,Spring Security还有这种用法!

    在用Spring Security项目开发中,有时候需要放通某一个接口时,我们需要在配置中把接口地址配置上,这样做有时候显得麻烦,而且不够优雅。我们能不能通过一个注解的方式,在需要…

    Java 2023年6月8日
    059
  • Spring mvc源码分析系列–前言

    距离上次写文章已经过去接近两个月了,Spring mvc系列其实一直都想写,但是却不知道如何下笔,原因有如下几点: 现在项目开发前后端分离的趋势不可阻挡。Spring mvc这一套…

    Java 2023年6月8日
    067
  • Java lambda date排序

    使用lambda表达式,使用对象的时间字段将list排序。 不多说,直接上代码, Demo对象: 测试list: lambda排序: v 源码地址 Original: https:…

    Java 2023年6月8日
    0174
  • mybatis竟然报”Invalid value for getInt()”

    背景 场景 初探 再探 结局 背景 使用 mybatis遇到一个非常奇葩的问题,错误如下: Cause: org.apache.ibatis.executor.result.Res…

    Java 2023年6月8日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球