关于Elasticsearch中Index与type、id、routing数据结构设计合理性的疑惑,有两套方案麻烦各位了 5C

各位大神:
我先简单讲述一下项目的业务逻辑。一个物联网的项目,设备连接网关(可以理解为中间介质),经由网关进行数据推送到服务器,我们做的事情需要在服务上接收各地项目网关上报的数据,进行不同时间维度的数据分析。
几个约定:
1、同一个项目,网关编号不会重复;
2、同一个网关下的设备编号不会重复,但是有可能与其他网关下的设备编号重复
3、设备拥有多种不同的参数编号及参数值

初步存放数据设计的格式有两种方案(基于es 5.x的版本)
方案一:
1、Index=存储项目编号+日期(yyyy-MM)
2、type=存储网关编号
3、id =存储设备编号
4、routing=设备参数
基于方案一,好处在数据分类上可能比较直观,坏处就是会产生多个type、id,而且id不唯一,需要id+routing才能表达唯一。但是不知道es对多个type的支持是否效率高。

方案二:
1、index=项目编号+日期(yyyy-MM)
2、type=data(仅仅说明这个是原始的数据)
基于方案二、好处就是type较少,检索数据直接通过字段查询。

上诉两种方案,可能是我理解的不够透彻,所以不懂那种方式属于es支持的方案

2个回答

es高版本中type将会被取消掉,个人建议是不使用type直接,而且既然使用了es,为什么不自定义存储对象

u013544048
knees_down 谢谢,有一定的帮助。
大约一年之前 回复

Elasticsearch6.X版本已经不支持多个type了,将来7版本会取消type。所以是不建议在type上下功夫。
id是单个index内唯一的,直观的看是文档id,其实Elasticsearch内部是转换成_uid来构建唯一,_uid=type+_id,所以_id唯一跟 routing没任何关系。_ routing是你写入的时候指定,相同_ routing的文档一定会存储到同一个shard上,这种情况查询的时候也要指定_ routing,否则是查不到文档的。
对你你所列的,第一种方案显然行不通,如果是按照第一种方案的思路,可以在第二种方案上考虑一下嵌套文档

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Elasticsearch之核心元数据:_index,_type,_id [学习笔记]
1、通过Kibana添加一条数据: PUT /test_index/test_type/1 { "test_content":"test test" } 执行后的效果如下: 获取数据: PUT /test_index/test_type/1 { "test_content":"test test" } 显示效果: 结果内容是: { "_index": ...
elasticsearch数据结构设计文档
真实开发环境的es设计开发文档,可以参考试试,版本比较老了
c#中数据结构设计的疑惑?
rnrn我编码的时候,发现需要各类复杂结构的数据结构。比如有的是两个String组成一个结构体,有的是一个string,一个int组成一个结构体等等。许多的这种临时构成的结构体。我总感觉这么设计数据结构会很别扭,但是有不知道怎么处理,想要用datatable,但是datatble当做函数的返回值,你单独从函数的申明看,你不知道函数返回的数据是哪些组成的,因为datatable有不同的列组成,这样的 话,datatable无法固定我返回值的结构。rnrn请问下,遇到我这类的情况都是如何处理的。
Elasticsearch学习(三)————元数据(_index、_type、_id、_score、_source)
一.元数据 ==概念:==元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。元数据是关于数据的组织、数据域及其关系的信息,简言之...
怎么判断ElasticSearch index 和 type 存不存在
1. 判断index是否存在curl -XHEAD -i 'http://localhost:9200/twitter'如果返回200证明index (twitter)存在,404说明index不存在。2. 判断type是否存在curl -XHEAD -i 'http://localhost:9200/twitter/tweet'同样的,如果返回200证明type (tweet)存在,404说明t
elasticsearch创建index和type操作日志记录
为了学习elasticsearch,跟着官方文档及网上例子操作了一些,整理记录下来,以供大家参考。 本文所用测试工具:火狐插件HttpRequester。 elasticsearch:2.3
**********************关于程序结构设计的方案请教***************************
我现在要开始着手一个大项目rn项目的开发是按阶段的。每个阶段都会推出一些新的功能模块rnrn请问在这样的情况下,我的项目结构设计的时候需要注意些什么呢
elasticsearch实践之代码结构设计
之前说过我们项目要集成es搜索引擎模块,这几天一直在做集成个事情。这过程中遇到过很多的坑,也尝试过很多的解决办法,今天给大家分享一下elasticsearch的实践过程。首先我们的接口要怎么命名、接口的字段要设置多少、分别是什么类型、实现类中要如何实现接口、工具类要定义哪一些的方法。 1.首先我们先看看接口中要定义哪些通用方法,如下所示: package com.infun.platfo...
关于子窗口ID的疑惑
使用CreateWindow函数建立子窗口的时候,有一个参数是HMENU类型的,是子窗口ID,迎来区分子窗口的。如果我的程序需要在运行时动态的创建和删除子窗口。rn如果第一次建立的时候子窗口ID取1rn再建立一个取2rn然后我删掉第一个子窗口rn再建立一个的时侯我怎么做?如果要取1,那么我就要记录下所有的删除操作,否则ID就会一直递增。虽说是个long,溢出的话很难,但总觉得良心不安啊。rn哪位教教我这样的情况如何处理?
关于数据结构设计的大纲
用c语言描述十进制到任意进制间的转换。使用到堆栈
GRIDVIEW的 INDEX问题,疑惑中
表结构为:物资代码(主键),序号,物资名称型号(主键),规格(主键) rn 代码+序号可以确定行的唯一性,代码+型号+规格也可以确定行的唯一性rnGIRDVIEW DATAKEYS设定为:物资代码,物资序号rnrn在GRIDVIEW进行数据更新时,报错:rn "指定的参数已超出有效值的范围。参数名: index"rn应该是未取得Index值的问题,却不知道错在哪儿。请各位指点迷津。rn更新代码如下:rnrn protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)rn rn rn //UltraGridRow oldrow = (UltraGridRow)e.Data;rn if (e.RowIndex > -1)rn rnrn string sqlupdate = "update XTXHGG SET 物资代码='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() +"',物资规格='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() +"' WHERE 物资代码='" + GridView1.DataKeys[e.RowIndex]["物资代码"].ToString() + "' and 序号='" + GridView1.DataKeys[e.RowIndex]["型规序号"].ToString() + "'";rn SqlCommand sqlcom = new SqlCommand(sqlupdate, conn);rn conn.Open();rn sqlcom.ExecuteNonQuery();rn conn.Close();rn GridView1.EditIndex = -1;rn BindList();rn rnrn
Elasticsearch模块功能之-路由(routing)
Elasticsearch模块功能之-路由(routing)   索引分片分配能够控制索引分片在节点上怎么分布,那对于具体的文档能否控制具体节点的分布呢?答案是可以,根据路由公式shard = hash(routing) % number_of_primary_shards,Elasticsearch使用相同的routing参数来实现这个功能,但我们在创建索引时需如下进行配置:   ...
logstash输出日志到elasticsearch,index和type如何动态赋值?
文章内容在felk6.0测试通过。在filebeat配置文件中启用fields字段,如下,fields: document_type: test2在logsstash配置中添加如下配置,input{ beats{ host => "0.0.0.0" port => "8888" } }filter{ } output{ elasticsearch { ho
有一道数据结构设计的题目
有一个包含成千上万个电邮地址的表mailaddresslist,现在给你一个电邮地址,要你在表中查找是否存在这个电邮,由于表很大很大,不可能一次性将所有表项放入内存,问你怎么样去设计数据结构,怎么样去进行比较快速地查找。
关于“由Type ID生成”
在MFC中编写COM DLL 服务器时,在创建一个COM类时,选择“由Type ID生成”和 选择“Automation"有什么区别?我观察了一下代码,发现多了一个宏的差别,这样做有什么目的?
Elasticsearch删除一个type下的所有数据
Elasticsearch删除一个type下的所有数据
【MFC中 关于ID 还有CLASSWIZARD的疑惑】
RTrn我不是很清楚MFC 中 一个控件的ID属性有什么用处 ?是唯一的么?他是对象名么?rn还有为什么要给控件在CLASSWIZARD里加成员变量 rn比如一个BUTTON 要在CLASSWIZARD里添加ctrol类型成员变量 ,用来使用那个控件时候 是用这个成员变量名调用它控件的函数 难道说 这个成员变量名代表了 这个控件?rn一个控件的对象实例到底是什么 ?rnrn不好意思 新手 可能表达不太好 rnrn谢谢回答~
elasticsearch 创建type及插入数据
创建 type ("store":"yes") PUT my_index {   "mappings": {     "type_one": {       "properties": {         "text": {            "type": "string",           "analyzer": "standard"         }      
雏鸟提问--关于type is table of index by
我在plsql里看到一个存储过程 其中有一句话 就是rntype x is table of number(10,5) index by BINARY_INTEGER;rn我完全不能明白什么意思呢rn请教一下 我要怎么理解呢 越详细越好。。。rnrn谢谢!
数据结构设计
在数据结构课程设计中有关图的相关知识
关于调查问卷的数据结构设计?
首先是一个人调查问卷基本功能都有,就像腾讯,新浪的那种调查,让用户自己投票,问题答案有单选和多选,问题和选项都是管理员后台自己设置。但是这里我遇见一个棘手问题,就是客户需要调查清单, 调查清单是这样显示.rn [img=https://img-bbs.csdn.net/upload/201307/21/1374382711_1344.jpg][/img]rn请问大家如果要显示这样的结果,该怎么设计数据库结果以方便显示.
ElasticSearch6.0 同个Index中不可以有相同的Type
1.简介 用ES你可能会接触到这么一个类比,index类比数据库,type类比表。 很可惜,ElasticSearch6.0以上的版本,不支持在同一个Index中拥有不同的Type。 同时官方还声明,将在7.0版本删除Type。 具体看链接 懒得点链接的同学,我直接截图到这里了   2.使用 诶...根据你们的业务需求,选择 ES5.0版本 或者 选择不使用type属性来区分数...
查询ES中所有index和type的定义
GET _mapping
超长数据的数据结构设计
现有的数据类型不能存储超过long类型的数据,设计一种数据结构能够满足对超长数据(比如:100位的数字)的基本运算(比如:加减乘除…)操作。
关于数据表设计规划的合理性
table : mytablern字段:rnt_id : mediumint(8) unsigned auto_incrementrnt_topic: varchar(200) not null defalut ''rnt_type : char(1)rnt_url : varchar(200) nullrnt_text : text nullrnrn当 t_type = '1', t_url = nullrn当 t_type = '0', t_text = nullrnrn想知道, 当数据量比较大, 例如几万甚至几十万条的时候rnrn数据的容量和检索时候的效率会不会有很大的影响?rnrn有没有更好的方法来实现或者规划这个数据表的结构?rnrn环境 : php + mysql
多index,多type查询
n <span style="font-size:14px;">课程介绍:</span>nn<p style="font-size:14px;background-color:#FFFFFF;">n <br /></p>n<p style="font-size:14px;background-color:#FFFFFF;">n         本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索,并详细分析了搜索的原理,最后讲解了在JAVA应用中如何集成ElasticSearch并实现搜索。n</p>
Elasticsearch最佳实践之Index与Shard设计
作为专栏的第三篇,本文主要探讨实际应用中Index与Shard的设计方法。主要包括这样几方面:基于时间的Index设计、Mapping设计技巧、巧妙的Alias、Shard分配原则、整体思路。
elasticsearch通过批量id进行数据删除
Writing in the front In the reproduction environment,we neet delet the data according to the ids.So we need branch query statement. _delete_by_query ‘_delete_by_query’ used by post and this statement ...
Elasticsearch迁移数据方案(不停服重建索引)
背景 Elasticsearch是一个高扩展的开源全文搜索和分析引擎,它允许存储、搜索和分析大量的数据。 ES 的索引创建之后的 mapping 结构是不能够修改的,如果系统中的 ES 索引没有使用别名指向真正的索引,那么要达到增删mapping字段的需求,就需要对索引进行重建。 方案 流程图 打开临时索引 在系统中定义开关,读取外部配置文件,当开关置为 true 时,所有数据将交给临时...
手机ID设计MD结构设计
手机ID设计MD结构设计
Automation与Createable by type ID有何区别
使用Mfc编写com,用ClassWizard生成一个类,从CCmdTarget继承来,Automation里有None、Automation与Createable by type ID三个选项。有什么区别?
两套xsl有什么区别
我看xsl的书,发现有两套xslrn一套的域名为:rnrnrn另一套为:rnrnrn这两套xsl有什么区别。。。rn我们应该用那种?
验证电话号码合理性,电话号码验证合理性,电话号码合理性验证。
rn如题。rn请用脚趾头思考一下。不要随便说3-8或者4-7之类。rnrn要求:rn1、兼容中国大陆所有座机、手机、小灵通。rn2、特殊号码验证为不合理,如:110、119、10086、12315、95512等。rn3、认为不合理的号码:400、800等。rn4、手机号码13x、013x均合理,186x、188x、189x合理,但是185、187等为不合理。rn5、座机号码010x合理,0010x不合理。rn6、部分地区座机号码4-8格式也认为合理。rnrn总之一句话:验证号码的真实合理性,而非理论合理性,越真实越好。rn这个要求很BT,但是很实用。rn
为什么有两套jre
JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:\Program Files\Java\jdk1.5.x\目录下的JRE。而C:\Program Files\Java\目录下的JRE是用来执行我们自己编写的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是JDK里面的工具只能由C:\Program Files\Java\jdk1.5.x\目录下的JRE来执行。rnrnrn也就是说rnjdk(java development kit)是开发工具包,相当于是一个编译器。rnjre(java runtime environment)是运行环境,相当于jvm虚拟机。jdk开发出来的java程序必须在jvm中运行,jre就提供了这么一个环境。rnrn--------rn上面是某人的解释,解释用了“只能”这个词。rn仅仅是只能吗,jdk开发出来的程序也可以在jdk里的jre里执行的吧。rn
java软件结构设计上的疑惑,请各位大侠指点。
最近,有个稍微小型的java软件开发项目,我一个人做,有点像分布式软件设计(没有做过分布式系统开发),软件的处理的数据量>10万条数据库记录,就是由于数据量有点庞大,所以在软件设计的时候感觉有点疑虑和疑惑。rnrn下面我将我的软件设计的集中方案说出来,大家帮我看看哪种更合适。rnrn软件使用环境: n台客户端PC,1台ORACLE数据库服务器,或者使用 1-3台中间MySQL/Oracle数据库服务器,在局域网中运行,采用java C/S模式结构。从使用n台客户端PC将采集的数据开始输出,到最终使用ORACLE数据库服务器输出最终数据结束。rnrn方案A:n台客户端PC,分别项1-3台MySQL/Oracle数据库提交采集来的数据,然后n台客户端PC再重这1-3台Mysql/Oracle数据库服务器上取得数据返回进行数据库核对校验操作,完成后,在提交到n台客户端PC再重这1-3台Mysql/Oracle数据库,最后由n台客户端PC再重这1-3台Mysql/Oracle数据库分析综合采集的数据库,再提交到ORACLE数据库服务器上。rnrn方案B:n台客户端PC,在初步采集完成数据后,在本地对数据进行核对和校验,完成后再将核对完成的数据提交到这 1-3台中间MySQL/Oracle数据库服务器 ,最后在 1-3台中间MySQL/Oracle数据库服务器 上分析综合数据提交到 ORACLE数据库服务器上。rnrn方案C:n台客户端PC,集成初步数据采集、本地核对校验、本地数据分析综合,最后直接将分析综合完成的数据直接提交到Oracle数据库服务器上。rnrn上面三种方案各有优缺点。rnrn希望各位大侠,给点实际可行的设计方案。
关于结构设计
我觉得软件工程中最复杂的就属于结构设计了,什么流程、数据、模块、接口等等总让我摸不到头脑,希望大家提供结构设计方面的步骤、方法、要点等等?
有关于Session的疑惑!
大家,都应该知道。rn比如做一个网站记数功能rn首先:rn在Servlet中,使用request.getSession()方法得到一个HttpSession对象countSessionrn这个时候,如果,rn使用判断语句:rn如果这个countSession对象为空:则——使用SetAttribute("countNum",integerNum),其中integerNum 是已经定义了的Int类型的变量rn否则,如果不为空的话,rn就使用getAttribute("countNum")读取integerNum,并使得数字加1rn最后,,再把这个integerNum绑定到countSession对象上!rnrn在这里,我想问下,各位大侠,你的服务器中,可能有很多的Session对象在运行,客户怎么就能怎么准确的取得那个绑定了countNum属性的Session对象呢?rnrn大家,有建议的,可以在这里提提,,,~~~~~~~谢谢了。
有关elasticsearch的attachment type的使用
最近在用elasticsearch做全文搜索。需求:在一个正文中有若干的附件,当搜索时,搜索的域可能是正文的题目,也可能是正文的内容,也可能是附件的题目或者内容。而且附件的格式有可能是各种格式,比如xml,docx等等。于是,我定义了一个Mapping,里面的附件类型为attachment类型,具体的如下定义。[code=java]rn "mary": rn "properties": rn "id": rn "type": "string",rn "index": "not_analyzed"rn ,rn "name": rn "type": "string",rn "index": "analyzed",rn "store": "yes"rn ,rn "file": rn "type": "attachment",rn "fields": rn "fileName": rn "index": "not_analyzed"rn ,rn "date": rn "index": "analyzed",rn "store": "yes"rn ,rn "content": rn "analyzer": "ik"rn rn rn rn rn rn[/code]rn。根据官网的api,在content中输入base64编码的格式,但是我想知道的是为什么定义的Mapping是上面的格式,但是查出来的格式却是:rn[code=java]rnrn myes_index: rn mappings: rn mary: rn properties: rn file: rn type: attachmentrn path: fullrn fields: rn file: rn type: stringrn rn author: rn type: stringrn rn title: rn type: stringrn rn name: rn type: stringrn rn date: rn type: datern index: analyzedrn store: truern format: dateOptionalTimern rn keywords: rn type: stringrn rn content_type: rn type: stringrn rn content_length: rn type: integerrn rn language: rn type: stringrn rn rn rn id: rn type: stringrn index: not_analyzedrn rn name: rn type: stringrn store: truern rn rn rn rn rnrn[/code]。rn另外出现了一些没有定义的字段。我是按照官网做法直接把每个文件首先用base64编码,然后输入content字段,给name输入的是正文文件的文件名,建立索引。但是搜索的时候却什么也没有搜出来啊?只能搜索文件名的关键字。应该怎么给其他的在原Mapping中没有定义的的字段附上field,还有,有的文件并没有相关的date或者author怎么办?如果是elasticsearch自动给其他字段附上field,elastic是怎么个实现的啊?我并没有一一指定field,所以新生成的Mapping中的field是不是都要一一指定 啊?
疑惑,麻烦高人指点
项目经理交给我这样一个任务:别人做的一个软件(里面的功能实现全部是他们写的类,界面是用QT做的)然后现在需要我们在里面扩充功能,说白了差不多就是在里面加一个菜单,实现某一个功能。现在别人需要我们最好不要直接在原来的程序里面加代码,所以项目经理叫我研究研究有没有什么别的方法实现,即类似于做一个独立的exe,他原来的程序能打开我们这个exe,并用。请问有谁知道该怎么办嘛?
疑惑麻烦来解惑
在数据库中:rn外模式对应视图rn模式对应基本表rn一个数据库只有一个模式rn为什么数据库却可以有好多表呢?rn还有一个问题rnrn就是视图的那些优点,用sql语句对基本表同样能有视图这些优点,为什么还要视图呢?rn
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件