怎么用spring获取es数据

怎么用spring获取es数据,第1张

1 ES和solr都是作为全文搜索引擎出现的。都是基于Lucene的搜索服务器。

2 ES不是可靠的存储系统,不是数据库,它有丢数据的风险。

3 ES不是实时系统,数据写入成功只是trans log成功(类似于MySQL的bin log),写入成功后立刻查询查不到是正常的。因为数据此刻可能还在内存里而不是进入存储引擎里。同理,删除一条数据后也不是马上消失。写入何时可查询?ES内部有一个后台线程,定时将内存中的一批数据写入到存储引擎,此后数据可见。默认后台线程一秒运行一次。该线程运行的越频繁,写入性能越低。运行的频率越低,写入的性能越高(不会无限高)。

4 目前已知的单ES集群可以存储PB级别的数据,不过这个就非常费劲了。TB级别数据没压力。

5 如果使用ES官方提供的jar包访问,需要JDK17及以上。

6 使用对应的版本访问ES server。如果ES server端的版本是17,那么请使用ES 17的client。如果ES server是21,请使用21的client。

7 ES索引存在Linux服务器的文件系统之上(背后是文件系统,不是类似于HDFS的分布式文件系统)

8 ES Java client是线程安全的,全局构建一个即可满足读写需求,不要每次都创建ES client。每次访问ES都构建新的es client即会抛出次异常。

9 非常不建议使用ES的动态识别和创建的机制,因为很多情况下这并非你所需要。推荐的做法是在写数据之前仔细的创建mapping。

10 强烈不建议在ES中使用深分页。可能会导致集群不可用。

11 ES是静态分片,一旦分片数在创建索引时确定那么后继不能修改。

12 ES里提供了type,很多人以为type是物理表,一个type的数据是独立存储的;但是在ES内部并不是这样,type在ES内部仅仅是一个字段。所以在很多数据能分为独立index的情况下,不要放到一个index里用type去分。只有嵌套类和父子类的情况下使用type才是合理的。

13 ES并不提供原生的中文分词的能力。有第三方的中文分词的插件,比如ik等。Ik是个toy分词器,有严肃的分词需求的话,请在使用ES之前使用独立的分词器分好词后向ES写入。

14 ES中的index,首先会进行分片,每一个分片数据一般都会有自己的副本数据,ES分配分片的策略会保证同一个分片数据和自己的副本不会分配到同一个节点上。当集群中的某一节点宕机后,ES的master在ping该节点时通过一定的策略会发现该节点不存活;会开启ES的恢复过程

15 ES没有update的能力。所有的update都是标记删除老文档,然后重新insert一条新文档。

可以

在es 中, 可以在没有索引,没有类型的情况下直接插入文档,插入后会自动创建索引和类型,es是一个分布式的文档数据库,索引的文档都是以json序列化形式存贮的,而不是像关系型数据库那样是列数据行的形式存贮的。

在es 70之前,常把es和关系型数据库的名词做如下映射

以access数据库为例,Window7 系统,配置数据源, *** 作步骤如下:

1、打开电脑,点击开始菜单。

2、打开<控制面板>。

3、在<调整计算机的设置>中,点击<系统和安全>。

4、点击<管理工具>。

5、点击<数据源(ODBC)>。

6、点击<系统用户>,然后,点击按钮<添加>。

7、在<创建数据源>里,找到Microsoft Access Driver(mdb),选中然后点击完成。

8、在<ODBC Microsoft Access 安装>的<数据源名(N)>,填写数据有名称,然后点击<数据库>中的<选择(S)>。

9、在<选择数据库>里,<目录(D):>里,按路径找到数据库文件,选中,点击确定。回到<ODBC Microsoft Access 安装>点击确定。最后回到<ODBC数据源管理器>,点击确定,完成配置。

es替换mysql,MySQL属于关系数据库,有些逻辑在es上不方便。MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。

不推荐代替数据库哦~

ES团队不推荐完全采用ES作为主要存储,缺乏访问控制还有一些数据丢失和污染的问题

建议还是采用专门的 DB存储方案,然后用ES来做serving。

es没有事务,而且是近实时。成本也比数据库高,几乎靠吃内存提高性能。最逆天的是,mapping不能改。

我们使用Elasticsearch存储的文档数量接近50亿(算上1份复制,接近

100亿文档),总共10个数据节点和2个元数据节点(48GB内存,8核心CPU,ES使用内存达到70%),每天的文档增量大概是3000W条(速度

持续增加中)。目前来看,单个文档的查询效率基本处于实时状态;对于1到2周的数据的聚合统计 *** 作也可以在10秒之内返回结果。

但是,还有提升的空间:

1 对于查询单条数据的应用场景来说,我们可以使用ES的路由机制,将同一索引内的具有相同特征(比如具有相同的userid)的文档全部存储于一个节点上,这样我们之后的查询都可以直接定位到这个节点上,而不用将查询广播道所有的节点上;

2 随着数据节点的增加,适当增加分片数量,提升系统的分布水平,也可以通过分而治之的方式优化查询性能;

 

 个人以为Elasticsearch作为内部存储来说还是不错的,效率也基本能够满足,在某些方面替代传统DB也是可以的,前提是你的业务不对 *** 作的事

性务有特殊要求;而权限管理也不用那么细,因为ES的权限这块还不完善。由于我们对ES的应用场景仅仅是在于对某段时间内的数据聚合 *** 作,没有大量的单文

档请求(比如通过userid来找到一个用户的文档,类似于NoSQL的应用场景),所以能否替代NoSQL还需要各位自己的测试。如果让我选择的话,我

会尝试使用ES来替代传统的NoSQL,因为它的横向扩展机制太方便了。

首先,你的表肯定是做了外键等约束的,所以删除,要从最外层删除。假设你的数据库是Sql Server的。

1、技能表

delete from 技能表 where 人物id in (select 人物id from 人物表 where 账号id in (select 账号id from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3))

2、装备属性表

delete from 装备属性表 where 装备id in (select 装备id from 装备表 where 人物id in (select 人物id from 人物表 where 账号id in (select 账号id from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3)))

3、装备表

delete from 装备表 where 人物id in (select 人物id from 人物表 where 账号id in (select 账号id from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3))

4、人物表

delete from 人物表 where 账号id in (select 账号id from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3)

5、账号表

delete from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3

以上就是关于怎么用spring获取es数据全部的内容,包括:怎么用spring获取es数据、es可以不创建索引库直接添加文档吗、cboard配置es数据源等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10198883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存