范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

ES在大数据中的应用

  一、相关软件介绍
  1. Elasticsearch
  Elasticsearch,简称为ES,是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。无论是结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。
  本文在linux环境使用Elasticsearch-7.14.0版本进行配置及操作。
  2. Kibana(辅助工具)
  Kibana 是一个开源的分析与可视化平台,可实现以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。它和Elasticsearch一起使用,用于搜索、查看存放在Elasticsearch中的数据。
  3. elasticsearch-head(辅助工具)
  elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。
  4. elasticsearch-py
  elasticsearch-py是官方提供的Elasticsearch python客户端库,它只是对Elasticsearch的rest API接口做了一层简单的封装。二、环境搭建
  1. Elasticsearch部署
  (1)下载
  elasticsearch-7-14-0
  (2)解压
  tar -zxvf elasticsearch-7.14.0-linux-x86_64.tar.gz
  (3)安装ES不用使用root用户
  创建普通用户work。
  (4)修改配置文件config/elasticsearch.yml
  配置项如下:
  cluster.name: es-cluster
  node.name: es-node
  node.master: true
  node.data: true
  node.max_local_storage_nodes: 1
  path.data: /data/elasticsearch/data
  path.logs: /data/elasticsearch/logs
  network.host: 0.0.0.0
  http.port: 9200
  transport.tcp.port: 9300
  transport.tcp.compress: true
  discovery.seed_hosts: ["192.168.1.90:9300"]
  cluster.initial_master_nodes: ["es-node"]
  http.cors.enabled: true
  http.cors.allow-origin: "*"
  (5)启动ES
  ./bin/elasticsearch
  elasticsearch启动成功样例图
  后台方式启动ES:
  ./bin/elasticsearch -d
  (6)可能出现的错误及解决方法
  错误1:
  max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
  解决方法:
  sudo vim /etc/security/limits.conf
  追加以下内容:
  * soft nofile 65536
  * hard nofile 65536
  * soft nproc 4096
  * hard nproc 4096
  错误2:
  max number of threads [3802] for user [work] is too low, increase to at least [4096]
  解决方法:
  sudo vim /etc/security/limits.d/20-nproc.conf
  修改为:
  * soft nproc 4096
  错误3:
  max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  解决方法:
  sudo vim /etc/sysctl.conf
  修改为:
  vm.max_map_count=262144
  执行以下命令生效:
  sysctl -p
  2. Kibana
  (1)下载
  kibana-7-14-0
  (2)解压
  tar -zxvf kibana-7.14.0-linux-x86_64.tar.gz
  (3)修改配置文件config/kibana.yml
  配置项如下:
  server.host: "192.168.1.90"
  server.shutdownTimeout: "5s"
  elasticsearch.hosts: ["http://192.168.1.90:9200"]
  monitoring.ui.container.elasticsearch.enabled: true
  server.port: 5601
  kibana.index: ".kibana"
  i18n.locale: "zh-CN
  (4)启动kibana
  ./bin/kibana
  kibana启动成功样例图
  (5)浏览器打开kibana开发工具
  kibana开发工具界面图
  3. elasticsearch-head
  (1)此处提供编译好的版本,解压后运行npm run start即可启动
  链接:
  https://pan.baidu.com/s/19F8zMdN94QhgqYP9vkPHHA
  提取码:a99y
  (2)自行下载编译
  cd elasticsearch-head
  npm install
  npm run start
  elasticsearch-head启动成功样例图
  (3)浏览器打开elasticsearch-head,查看ES状态
  elasticsearch-head界面图
  集群健康值
  green: 所有主要分片和复制分片都可用
  yellow: 所有主要分片可用,但不是所有复制分片都可用
  red: 不是所有的主要分片都可用
  当集群状态为red,它仍然正常提供服务,它会在现有存活分片中执行请求,此时需要尽快修复故障分片,防止查询数据的丢失。
  4. elasticsearch-py
  pip install elasticsearch==7.14.0三、核心概念
  索引(Index)
  索引就是一类文档的集合,类似于关系型数据库中的表。索引由其名称进行标识,每个索引名称必须是小写。
  文档(Document)
  Index中单条记录称为文档,等同于关系型数据库表中的行。
  字段(Field)
  json结构的字段,等同于关系型数据库表中的列。
  映射(Mapping)
  Mapping是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、分析器、是否被索引等等,都是映射里可以设置的。
  分片(Shards)
  一个索引可以存储超过单个节点硬件限制的大量数据,相当于分表的概念。ES提供了将索引划分成多份的能力,每一份称之为分片。当创建一个索引的时候,可以指定想要的分片数量。允许水平分割/扩展内容容量;允许在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量。
  副本(Replicas)
  在分片/节点失败的情况下,提供了高可用性。复制分片从不与原/主要分片置于同一节点上是非常重要的。扩展搜索量/吞吐量,因为搜索可以在所有副本上并行运行。四、python操作ES
  1. 连接ES
  from elasticsearch import Elasticsearch
  def main():
  # 连接ES
  es=Elasticsearch(["192.168.1.90:9200"],
  sniff_on_start=True, # 连接前测试
  sniff_on_connection_fail=True, # 节点无响应时刷新节点
  sniffer_timeout=60 # 设置超时时间)
  if__name__=="__main__":
  main()
  2. 增
  创建索引
  # 定义mapping body
  body_index = {
  "mappings": {
  "properties": {
  "name": {"type": "keyword"},
  "age": {"type": "long"},
  "tags": {"type": "text"}
  }},
  "settings": {
  "index": {
  "number_of_shards": "3",
  "number_of_replicas": "0"
  }}}
  # 创建index
  res = es.indices.create(index=index_name, body=body_index, ignore=400)
  插入单个数据
  person1 = {
  "name": "张三",
  "age": 18,
  "tags": "勤奋学习十载寒窗,凿壁借光,囊萤映雪,手不释卷,有良好的表达能力。有耐心心态好,善于维系客户关系。果断热情勇敢孤僻活力,思想成熟能够独立工作。"
  }
  res = es.index(index=index_name, body=person1)
  批量插入数据
  from elasticsearch import helpers
  insert_infos = []
  person2 = {
  "_index": index_name,
  "name": "李四",
  "age": 20,
  "tags": "有极强的领导艺术,公正严明铁面无私,公私分明。关心他人无微不至,体贴入微。精力充沛,并有很强的事业心。气吞山河正气凛然,善于同各种人员打交道。"
  }
  person3 = {
  "_index": index_name,
  "name": "王五",
  "age": 19,
  "tags": "尊敬师长团结同学,乐于助人学习勤奋,用心向上,用心参加班级学校组织的各种课内外活动。用心开展批评与自我批评。"
  }
  insert_infos.append(person2)
  insert_infos.append(person3)
  helpers.bulk(client=es, actions=insert_infos)
  elasticsearch-head数据浏览界面
  3. 删
  删除索引
  # 删除index
  res = es.indices.delete(index=index_name, ignore=[400])
  按id删除文档
  # 按id删除
  res = es.delete(index=index_name, id="bKTgXYUBfH4USN9RFMOh")
  按条件删除文档
  # 按条件删除
  body = {
  "query": {
  "match": {
  "name": "张三"
  }}}
  res = es.delete_by_query(index=index_name, body=body, ignore=[400, 404])
  4. 改
  index
  body = {
  "name": "王五",
  "age": 19,
  "tags": "尊敬师长团结同学,乐于助人学习勤奋,用心向上,用心参加班级学校组织的各种课内外活动。用心开展批评与自我批评。"
  }
  res = es.index(index=index_name, id="baTgXYUBfH4USN9RFMOh", body=body)
  index() 方法完成两个操作,如果数据不存在,那就执行插入操作,如果已经存在,那就执行更新操作。
  index实现更新时,body中必须写入全部字段,否则未包含的字段会被置为空。
  update
  body = {
  "doc": {
  "name": "王五"
  }}
  es.update(index=index_name, id="baTgXYUBfH4USN9RFMOh", body=body)
  5. 查
  查看es中的索引
  index_info = es.indices.get("*")
  查看索引的名称
  index_names = index_info.keys()
  判断索引是否存在
  index_name ="es_index"
  print(es.indices.exists(index_name))
  查询文档数量
  doc_count = es.count(index=index_name)
  按id查询
  body = {
  "query": {
  "match": {
  "_id": "baTgXYUBfH4USN9RFMOh"
  }}}
  res = es.search(index=index_name, body=body)
  按属性查询,结果过滤返回指定字段
  body = {
  "query": {
  "match": {
  "age": 20
  }},
  "_source": ["name", "tags"]
  }
  res = es.search(index=index_name, body=body)
  按年龄排序
  body = {
  "sort": {
  "age": {
  "order": "desc" # asc: 升序, desc: 降序
  }}}
  res = es.search(index=index_name, body=body)
  查询年龄大于18且小于等于20的文档
  body = {
  "query": {
  "range": {
  "age": {
  "gt": 18,
  "lte": 20
  }}}}
  res = es.search(index=index_name, body=body)
  按年龄降序且分页查询
  body = {
  "sort": {
  "age": {
  "order": "desc" # asc: 升序, desc: 降序
  }},
  "from": 0,
  "size": 1
  }
  res = es.search(index=index_name, body=body)
  精准查询
  body = {
  "query": {
  "match_phrase": {
  "tags": "耐心"
  }}}
  res = es.search(index=index_name, body=body)
  布尔查询:姓名为张三且tags中包含"耐心"
  body = {
  "query": {
  "bool": {
  "must": [{
  "match": {
  "name": "张三"
  }},
  {
  "match_phrase": {
  "tags": "耐心"
  }}]}}}
  res = es.search(index=index_name, body=body)
  布尔查询:姓名为王五且tags中不包含"耐心"
  body = {
  "query": {
  "bool": {
  "must": [{
  "match": {
  "name": "王五"
  }}],
  "must_not": [{
  "match_phrase": {
  "tags": "耐心"
  }}]}}}
  res = es.search(index=index_name, body=body)五、DSL语句
  Query DSL是一个Java开源框架用于构建类型安全的SQL查询语句。在查询时,通常先在Kibana中使用DSL验证查询语句的正确性,再转到python中使用。
  查询所有索引
  DSL执行界面图
  添加文档:id设为1
  PUT /es_index/_doc/1
  {
  "name": "赵六"
  }
  删除文档:id=1
  DELETE /es_index/_doc/1
  查询
  GET /es_index/_search
  {
  "query": {
  "match": {
  "age": 18
  }}}
  先验证结果正确,将GET /es_index/_search后{}的内容转到python的body中即可。
  智驱力-科技驱动生产力
  智驱力-科技驱动生产力

教师的价值与意义源于职责,当初为了梦想拼尽全力,青春无悔每个人的青春岁月都是难以忘怀的,无论是喜怒哀乐,还是拼搏努力,早已印刻在内心。学生时期谈论频繁的便是梦想,想象着自己终有一日能够独立,做自己喜欢的职业。那些年拼尽全力要成为老师的人大理游记这个世界尽管残缺破损笨拙不堪,却也不乏优美宜人富有意义之物。叶芝这次中秋请了个长假,去大理旅游了一番,现在旅程即将结束,谨以此文草草记录这次难忘的旅程。因为没有杭州直飞大理的飞机,被国台办点名表扬的台湾女孩,她到底经历了什么?李柔,她是一位来自台湾地区的女孩,她第一次来到祖国大陆旅行,正是这次旅行让她感受到了祖国的强大,人民子弟兵的热情。9月14日,在国台办举行的一次新闻发布会上,发言人朱凤莲特意点名表令人失望的三座城市,游客却不禁感叹,早知道不来了导语如今人们的生活越来越好,追求也会高了许多,旅游自然成为人们下班后放松的方式之一,中国资源丰富,自然有许多旅游景点,一定去过许多著名的旅游景点,但它们真的像人们说的那样好吗?今天比黄果树龙宫静美,安顺花4500万打造下九溪,宛若梦里江南水乡乡村,是中华民族的文明之源,更是炎黄子孙的精神原乡。那里有最原生态的自然山水,也有最丰富的人文民俗,更有最难忘的乡愁记忆。城市越繁华,乡村越迷人。在贵州安顺,有太多独具魅力的美丽乡煤山镇召开贯彻落实市县全委会议精神暨奋战一百天决胜全年红动员大会煤山镇召开贯彻落实市县全委会议精神暨奋战一百天决胜全年红动员大会9月16日至17日,煤山镇召开贯彻落实市县全委会议精神暨奋战一百天决胜全年红动员大会。16日,镇班子成员各村社主职干宜昌ampampquot彩葵至喜ampampquot向日葵展惊艳开幕9月18日,宜昌市点军大道百万朵向日葵惊艳绽放,众多的市民举家一道来赏花,感受金秋彩葵至喜的壮美景观。这次向日葵展起于至喜长江大桥桥头,止于车溪收费站,全长13。85公里,面积13秋天的第一场露营请大家注意个人防护,不扎堆不聚集,做到防疫三件套,防护五还要。又见炊烟小森营地你好,秋天过完中秋节,就要盼着国庆节啦。在秋风温柔的当下,很难不想做一些开怀的事,比如赶赴一场热情的乡最新!贵州这些景区发布闭园公告关于夜郎洞景区停园检修的公告尊敬的游客为进一步提升景区硬件设施服务品质,提升游客游玩体验,夜郎洞景区于2022年9月16日起停园检修,开放时间另行告知。暂停营业期间,给您带来的不便总台记者看世界乌兹别克斯坦为何称双内陆之国,出产哪四金?总台记者看世界!大家好,我是总台驻努尔苏丹记者王德禄。这两天,上合组织峰会,也就是上海合作组织成员国元首理事会会议,在乌兹别克斯坦的历史文化名城撒马尔罕举行。今天,我就带大家到素有嶂石岩之九女峰一米崖中秋节的前一天,阳历九月九。我们决定前去60公里外的内丘县岗底村购置一些过节用的水果,顺便到其附近的嶂石岩景区爬爬山,提前过一下阳历的登高节。正值白露伊始,我们早起从隆尧西良开车出
罚罪太能整活,三位卧底齐飚演技,姜昆徒弟表现最佳?也不知道是赵啸声聪明,还是赵鹏超聪明,或是罚罪剧组聪明,又或是罚罪观众太聪明。赵鹏征,这个曾经被观众戏谑过的名字居然在罚罪最后几集变成了现实,不知道这是罚罪剧组会做人还是会整活,反人世间,快乐自有来处文张泠人世间,应该没有人不喜欢快乐。现实生活中,它常常出现于重要日子重要事件的祝愿中,比如节日快乐生日快乐新婚快乐毕业快乐等等。如此重要而难得的快乐,源自何处?是富足的生活美满的家王皓收网红做徒弟!樊振东喜获师弟,大搞乒乓球宣传,发展国乒9月19日,近日,国乒历史上最好的球员之一王皓携手乒乓球网红大咖王开,拍摄了一则有关两人开启乒乓球大战的短视频发布在社交媒体上,收获了众多网友粉丝们的关注。视频中,王皓身穿黑色短袖小鹏G9和阿维塔11先后上市,它们有什么不同之处?这段时间,高端智能电动汽车领域好不热闹。先是8月8日长安汽车华为宁德时代三方合力打造的首款产品阿维塔11上市再到刚刚作为国产新势力的代表,小鹏推出首款定位为30万以上的高端电动SU北京环球度假区开业一周年园区各类表演演出超6。8万场北京环球度假区开业一周年园区各类表演演出超6。8万场霸天虎过山车一年跑了9。7万公里本报讯(记者赵婷婷)昨天,北京环球度假区迎来开园一周年。来自全国各地的游客及粉丝赶到现场,共同为特斯拉CEO马斯克嘲讽燃油车,认为人们将像看蒸汽机一样看燃油车前几天马斯克在推特上发了个帖子。大概意思是,不久之后,我们看待燃油车,就会像我们今天看待蒸汽机一样,另外现在购买汽油车,后面它的残余价值将会比人们想象的低得多。燃油车没有未来估计很氢能储能绿电一带一路点金互动易氢能储能绿电一带一路,19月累计订单额达70亿是去年全年营收的4。6倍,这家企业与一带一路沿线多国签订了供货合同,正积极拓展新能源产业氢能储能一带一路绿电,19月累计订单售价5。58万起,2023款凌宝BOX蔡文姬版上市,续航里程可达220公里在当下我们国内新能源汽车领域,纯电动微型车可以说是受到了越来越多国人的青睐,随着这一趋势的发展,不少车企于是纷纷不断投入其中,毕竟,面对巨大的市场份额,谁不想分得一杯羹呢?只不过,长沙地区生产总值跨越7个千亿台阶地方一般公共预算收入过千亿,常住人口过千万,跻身网红城市顶流十年来长沙以高质量发展书写精彩答卷长沙地区生产总值跨越7个千亿台阶(奋进新征程建功新时代非凡十年)制图王斌长沙晚报9月2广汽埃安再冲高发布全新LOGO,推新高端品牌,欲2023年底冲刺IPO每经记者孙磊每经编辑裴健如混改之后的广汽埃安正在加速品牌向上。9月15日晚,广汽埃安新能源汽车股份有限公司(以下简称广汽埃安)发布了品牌全新LOGOAI神箭。在2020年之前,我们NBA的小混混真不少但真有黑帮背景就5人,安东尼仅排第3NBA很多球星都来自贫民窟,就是小时候生活条件差,又不能享受丰富教育资源,他们很多就想通过打篮球改变生活。一旦进入NBA,那生活就彻底改变了,这样的案例很多。就是因为从小接触的人太