elastic searchsearch到底能玩多大的数据量

1.查询指定索引下每个A_logtype有多少数据
2.查询多个索引下每个A_logtype下有多少数据
Elasticsearch分组聚合
1.查询指定索引下每个A_logtype有多少数据
curl -XPOST ':19200/ylchou-0-/_search?pretty' -d '
& & & & & "size": 0,
& & & & & "aggs": {
& & & & & & "group_by_state": {
& & & & & & & "terms": {
& & & & & & & & "field": "A_logtype"
& & & & & & & }
& & & & & & }
& & & & & }
& & & & }'
& "took" : 33,
& "timed_out" : false,
& "_shards" : {
& & "total" : 1,
& & "successful" : 1,
& & "failed" : 0
& "hits" : {
& & "total" : 30434,
& & "max_score" : 0.0,
& & "hits" : [ ]
& "aggregations" : {
& & "group_by_state" : {
& & & "doc_count_error_upper_bound" : 0,
& & & "sum_other_doc_count" : 0,
& & & "buckets" : [ {
& & & & "key" : "waf-214",
& & & & "doc_count" : 28928
& & & }, {
& & & & "key" : "waf-358",
& & & & "doc_count" : 1506
2.查询多个索引下每个A_logtype下有多少数据
curl -XPOST 'localhost:19200/ylchou-0-2015-*/_search?pretty' -d '
& & & & & "size": 0,
& & & & & "aggs": {
& & & & & & "group_by_state": {
& & & & & & & "terms": {
& & & & & & & & "field": "A_logtype"
& & & & & & & }
& & & & & & }
& & & & & }
& & & & }'
& "took" : 531,
& "timed_out" : false,
& "_shards" : {
& & "total" : 28,
& & "successful" : 28,
& & "failed" : 0
& "hits" : {
& & "total" : ,
& & "max_score" : 0.0,
& & "hits" : [ ]
& "aggregations" : {
& & "group_by_state" : {
& & & "doc_count_error_upper_bound" : 0,
& & & "sum_other_doc_count" : 23151,
& & & "buckets" : [ {
& & & & "key" : "error",
& & & & "doc_count" : 3880753
& & & }, {
& & & & "key" : "draglog-168",
& & & & "doc_count" : 3566095
& & & }, {
& & & & "key" : "策略测试数据004",
& & & & "doc_count" : 2999538
& & & }, {
& & & & "key" : "syslog-37",
& & & & "doc_count" : 1284500
& & & }, {
& & & & "key" : "waf-214",
& & & & "doc_count" : 667958
& & & }, {
& & & & "key" : "QimingStar13",
& & & & "doc_count" : 646717
& & & }, {
& & & & "key" : "136test",
& & & & "doc_count" : 201971
& & & }, {
& & & & "key" : "标准化策略测试数据101",
& & & & "doc_count" : 161039
& & & }, {
& & & & "key" : "Waf150test",
& & & & "doc_count" : 24208
& & & }, {
& & & & "key" : "waf-358",
& & & & "doc_count" : 21579听说能玩到PB级,听说可以上百个节点,但一切都是听说。网上搜索的结果大多就是做个日志分析之类的,一天几个T(只是峰值)就算大数据量了。到底有没有哪家公司用ES处理了很大数据量的?
应付常见的日志摘要和分析是没问题的,按三斗说的数据来看,上PB级的数据量也不是难事。但数据容量,二次抽洗,以及周边生态,还是没有Hadoop来得好
这邀请,我也没法回答啊,因为我就是那个“就是做个日志分析之类的,一天几个T(只是峰值)就算大数据量了”。每天6-8TB的水准吧。&br&&br&Elastic{ON}2015上是有公司的演讲说了自己单集群100+的nodes,然后一共有1000+的nodes在运行。关于PB的数据,我没印象。&br&&br&-------------------&br&&br&补充几个slide好了:&br&&a href=&///?target=http%3A//www.slideshare.net/TinLe1/elk-atlinked-in& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&slideshare.net/TinLe1/e&/span&&span class=&invisible&&lk-atlinked-in&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& linkedin的ELK演讲,单集群规模应该还没我大,不过也是有好多个集群。&br&&a href=&///?target=https%3A//www.elastic.co/elasticon/2015/sf/scaling-elasticsearch-for-production-at-verizon& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&elastic.co/elasticon/20&/span&&span class=&invisible&&15/sf/scaling-elasticsearch-for-production-at-verizon&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& Verizon的ELK演讲。
这邀请,我也没法回答啊,因为我就是那个“就是做个日志分析之类的,一天几个T(只是峰值)就算大数据量了”。每天6-8TB的水准吧。Elastic{ON}2015上是有公司的演讲说了自己单集群100+的nodes,然后一共有1000+的nodes在运行。关于PB的数据,我没印象。----…
已有帐号?
无法登录?
社交帐号登录
PHP / 手游 / 山寨架构师 / Mongo / Hadoop这个月初,正式开始做大数据相关工作,关于这一块,自己也是初生毛驴,不过慢慢来吧。
  大数据大数据大数据,都特么被说烂了的词语,在做这个工作之前,我对它有诸多不解,并且我相信很多没有接触的人,一定会有和我一样的底层基础问题。
  例如)hadoop输入源哪儿来:hadoop也是一个被玩烂的了的词语,我这边和ibm合作,由ibm提供硬件和hadoop环境,我们负责写hadoop的job,关于hadoop是干嘛的,如何搭建各种hadoop环境,网上早已经是烂大街,各种helloworld也是遍地都是,各种大神针对hadoop的各种文章五花八门,在之前我也看了非常多的hadoop文章,但是有一个问题至始至终都没有提到:所有的hadoop的文章都是把那个统计词语个数的例子拿来翻来覆去的讲,创建一个txt文本,然后去分析它,但是没有一个人提到,这个txt怎么来的,我们生产库是mysql,oracle这些关系库,它和txt没有半毛钱的关系,里面的数据如何交给hadoop分析?就是这么简单基础的问题,也许是我领悟低,各路大神都不屑于讲它,但它在我之前,就是实实在在困扰我的问题。
elasticsearch)
  一)精确搜索
  因为做的是数据分析的问题,所以搜索是一个精确查找的问题,当然不能使用联想搜索法,于是很自然的干掉分词法,但是我们知道,es自带smartcn分词法,也就是说不管如何,它都会给你分词,这可不是我想要的,放眼网上一看,都是如何使用第三方分词法替代es自己的分词法,像我这样的需求还真不好找。经过到大半夜的摸索,源码在手,何惧之有?找出三个解决办法:
  1)删掉文件:不同es版本文件位置不一样,直接搜索smartcn删除所有相关分词文件,当然有风险。
  2)创建序列的时候声明不分词:我们在创建es索引的时候,都是startObject()的方法,于是我们在里面增加filed,声明index为
not_analyzed,则能不使用分词,当然这个也有弊端,那就是如果有一天需要分词的时候,就需要重新创建索引了。
  3)修改输入:这个方法乃上上之策,也是非常非常简单,那就是在es里面,如果你的字符串是被双引号括起来,那么es就认为是一个原子,不会被分词,也就是我们需要转义引号,一起作为搜索字符串传递给es,这个简单点办法,发现之后我居然仰天长啸,你个二b es,这个神气你居然藏着掖着。
  二)es的filter
  es的fiter着实让我纠结,由于时间有限,我需要在实现not的搜索,也就是不包含某个结果,我们知道在es里面使用queryBuilder条件去设定过滤条件,会出现长度溢出,最好的做法当然是filter,于是很自然的创建了filter:
BoolFilterBuilder notFilter = FilterBuilders.boolFilter().mustNot(FilterBuilders.termsFilter("body", "fedde").cache(false));
  在es里面的filter有两类,not,or,and等这一类,还有一类是bool等这一类,他们的区别就是是否会使用es内部核心大数组,在性能下优先考虑bool类,因为它会使用内部数组,这个filter有个核心的坑就是仅仅只有body完全等于输入字符串的时候,才能被not,我觉得es不会没有解决这个问题,或许是我没有发现,时间有限,直接手动修改hits。。
  三)es的and
  我们在实现es的and功能的时候,一般也是建立filter,并且es内部提供了and操作,我们理想的and操作就是将我们的多个输入得到并结果,于是filter的建立如下:
QueryFilterBuilder queryFilterBuilder = FilterBuilders.queryFilter(QueryBuilders.multiMatchQuery(value, eachStringQueryRequest.getQueryFiled()).operator(MatchQueryBuilder.Operator.AND).minimumShouldMatch(Global.MARCHPERCENT));
  但是结果却始终不正确,都是or的结果,于是我一度恼火,后来发现这个坑,妈蛋的,multiMatchQuery这个方法传递两个参数,一个是object的输入,一个是可变长的es的filed的名字,原来es的and,是and它的可变长filed,而不是我们自己的多个输入。
  四)感悟
  所谓数据分析挖掘,自己的感觉就是从同一个通道进去,每个人根据自己不同的角色,配置不同的工作流,从数据源里面产生自己需要的分析报告,所有人用的四同一个数据同一个通道,但是根据不同的需求,能够产生不同的结果,就是这么简单。。。
  五)小东西还的玩
  在还没有做大数据的时候,我就有一个想法,那就是我们从出生到死去,所有的人生记录都被记录在不同的系统,甚至我们的每一次刷卡每一次买书每一次上厕所都有登记,那么只要我们能够合并这些数据,就能够计算一个人的人生轨迹。。
  这个数据有啥好处?当然我们有了这些数据,我们就可以逆向计算出一个人的成长,分析一个人的梦想。。
  比如:
  我输入10年后要成为科学家,那么系统能够根据足够的例子计算出,8年后要达到什么水平,5年后要成为什么,3年内要得到什么经验,从而推出今年应该考取什么证书,现在应该开始读哪本书。。。。
  六)书不能不读
  一直以来自己都想给自己量身做一款app用来定制自己的作息时间与学习轨迹,但是做了很多都不满意,都删除了,最近打算只做读书记录这一块,功能很简单,记录某本书读到那个位置,预定在哪个时间段读取哪本书,并且到点了提醒读书,没了。。
  android5的控件ui很漂亮,代码丢在:
  刚刚起步开始写,后面慢慢push代码吧,毕竟个人爱好嘛,留几张图:
  原文链接:
阅读排行榜ElasticSearch 导入数据的一个坑,肯定不止我一人中招
· Ruby China
今天使用 ES 时,碰到一个坑,估计其他同学或许也会碰到,特此分享一下。
step 1 Model
BetOrder 是一个订单的 model,搜索时我打算使用 term query。我把 mapping 设置为
index: 'not_analyzer' ,故意不分词,以便精确搜索。
Gem 用的是
# model/bet_order.rb
# Set up index configuration and mapping
# Searching tokens exactly
settings do
mappings do
indexes :title,
index: 'not_analyzed'
indexes :nickname,
index: 'not_analyzed'
indexes :user_key,
index: 'not_analyzed'
indexes :out_trade_no, index: 'not_analyzed'
indexes :trade_no,
index: 'not_analyzed'
indexes :buyer_email,
index: 'not_analyzed'
step 2 导入数据
BetOrder.import
step3 悲剧了,导入数据后 mapping 不对
然后是debug 呀,debug。。。。。
翻来覆去的找,没找到原因,最后去翻了翻 elasticsearch-rails 的源码,原来导入数据的时候需要加上参数 force: true,才会根据 mapping 创建索引。
BetOrder.import force:true
源码地址:
问题解决,上一个正常 mapping
顺便请教一个问题:为什么第一次 import 数据时,作者不根据 model 中定义的 mapping 创建。这算不算一个bug?
昨天也遇到这个, 这应该算是文档没写清楚吧 , 我学得按照model定义创建 mapping。另外,想请教下有没有用中文分词,用的哪个?谢谢
可以先BetOrder.__elasticsearch__.create_index!来创建索引,这个时候会按照map来配置。然后可以index各个document。
直接导入没有具体测试,确定import前没有建立index mapping哦。
model里面我是直接用
mapping do
settings do
mappings do
不知具体什么区别?
我测过了,直接 import 时创建的 mapping 是错误的。
中文分词我用的 mmseg_analyzer,效果还不错。
分词以前一直用mmseg,从sphinx到es。不过最近代码里面产品只需要sql like的程度就够,还没有去配置分词。
这个问题之前我也遇到过,还是得读源码。另外使用ik进行处理性能不高,会出现HTTP timeout。后来换成mmseg了。
问下,mapping时比如标签列表tags: [''abc','def']去存储,
当index not_analyzed时候,可以用filter查询查找到
当默认string analyzed时候,可以query match来,这个时候用filter搜索不到
如何让他可以filter又可以在搜索时候被match到,是怎么mapping的
我也被坑了,3q
后方可回复, 如果你还没有账号请点击这里 。
共收到 8 条回复

我要回帖

更多关于 elasticsearch 的文章

 

随机推荐