dynamic:true 字段可以动态创建,更新数据时可以保存索引中不存在的字段
dynamic:false 更新数据时,字段只能为索引现有字段
PUT /student-001
{
"mappings": {
"dynamic": "true",
"properties": {
"birthday": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy/MM/dd HH:mm:ss||strict_date_optional_time||epoch_millis"
},
"introduce": {
"type": "text"
},
"name": {
"type": "keyword"
},
"sex": {
"type": "keyword"
},
"stu_id": {
"type": "long"
}
}
}
}
POST _aliases
{
"actions": [
{
"add": {
"index": "student-001",
"alias": "student"
}
}
]
}
场景 原来别名索引student 对应真实索引为student-001,但是后面因为业务需求,该索引相关字段类型发生了变化,这时按照新的需求建立了新的索引student-002,对应别名也是student ,此时我们不再需要向student-001写入数据,只向student-002写入数据。
POST /student-001/_aliases/student
{
"is_write_index":false
}
POST /student-002/_aliases/student
{
"is_write_index":true
}
POST /student/_doc
{
"birthday":"1999-01-01",
"name":"小明",
"introduce":"xxxxxxxxxxxxxx....",
"sex":"男",
"stu_id":1
}
删除数据有两种方式,可以根据数据自身id直接删除,也可以根据条件删除
DELETE student/_doc/ieVaE4QBt9FqGj2fyOdD
POST student/_delete_by_query
{
"query": {
"term": {
"name": "小明"
}
}
}
修改数据可以根据id和条件来修改
POST student/_update/OediE4QBt9FqGj2fw1I2
{
"doc": {
"sex":"女"
}
}
POST student/_update_by_query
{
"query": {
"term": {
"name": "小明"
}
},
"script": {
"source": "ctx._source['sex'] = '男'"
}
}
查询涉及到的知识比较多,有term,terms,match,match_phrase,wildcard等等,这儿简单的列举一种
GET student/_search
{
"query": {
"term": {
"name": "小明"
}
}
}
这儿以name字段来分类统计
size:指定数量
GET student/_search
{
"aggs": {
"NAME": {
"terms": {
"field": "name",
"size": 10
}
}
}
}
通过截取name属性前5个字符长度来进行分类统计
GET student/_search
{
"aggs": {
"NAME": {
"terms": {
"field": "name",
"size": 10,
"script": "doc['name'].value.substring(0,5)"
}
}
}
}
根据某一属性进行拍重查询
GET /student/_search
{
"collapse": {
"field": "name"
}
}
添加一个int类型的班级id字段
PUT student/_mapping
{
"properties": {
"class_id": {
"type": "integer"
}
}
}
异常:Trying to create too many buckets. Must be less than or equal to: [65535] but was [65536
PUT /_cluster/settings
{
"persistent": {
"search.max_buckets": 100000
}
}
业务中,进行更新数据操作后,会发现数据没有立即更新,这是因为es会将索引数据进行缓存,根据需求,可以自己设置缓存刷新时间
PUT student/_settings
{
"refresh_interval": "50ms"
}
未完待续…
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?
在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.
a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],