ES安装手册
时间:2019-08-23
本文章向大家介绍ES安装手册,主要包括ES安装手册使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html https://github.com/elastic/elasticsearch ###【在多台机器上执行下面的命令】### #es启动时需要使用非root用户,所有创建一个xiaoniu用户: useradd xiaoniu #为hadoop用户添加密码: echo 123456 | passwd --stdin xiaoniu #将bigdata添加到sudoers echo "xiaoniu ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/xiaoniu chmod 0440 /etc/sudoers.d/xiaoniu #解决sudo: sorry, you must have a tty to run sudo问题,在/etc/sudoer注释掉 Default requiretty 一行 sudo sed -i 's/Defaults requiretty/Defaults:xiaoniu !requiretty/' /etc/sudoers #创建一个bigdata目录 mkdir /{bigdata,data} #给相应的目录添加权限 chown -R xiaoniu:xiaoniu /{bigdata,data} ------------------------------------------------------------------------------------------------- 1.安装jdk(jdk要求1.8.20以上) 2.上传es安装包 3.解压es tar -zxvf elasticsearch-5.4.3.tar.gz -C /bigdata/ 4.修改配置 vi /bigdata/elasticsearch-5.4.3/config/elasticsearch.yml #集群名称,通过组播的方式通信,通过名称判断属于哪个集群 cluster.name: bigdata #节点名称,要唯一 node.name: es-1 #数据存放位置 path.data: /data/es/data #日志存放位置(可选) path.logs: /data/es/logs #es绑定的ip地址 network.host: centos7-2 #初始化时可进行选举的节点 discovery.zen.ping.unicast.hosts: ["node-4", "node-5", "node-6"] /bigdata/elasticsearch-5.4.3/bin/elasticsearch -d ------------------------------------------------------------------------------------------------- #出现错误 [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] #用户最大可创建文件数太小 sudo vi /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 #查看可打开文件数量 ulimit -Hn #最大虚拟内存太小 sudo vi /etc/sysctl.conf vm.max_map_count=262144 #查看虚拟内存的大小 sudo sysctl -p 5.使用scp拷贝到其他节点 scp -r elasticsearch-5.4.3/ node-5:$PWD scp -r elasticsearch-5.4.3/ node-6:$PWD 6.在其他节点上修改es配置,需要修改的有node.name和network.host 7.启动es(/bigdata/elasticsearch-5.4.3/bin/elasticsearch -h查看帮助文档) /bigdata/elasticsearch-5.4.3/bin/elasticsearch -d 8.用浏览器访问es所在机器的9200端口 http://centos7-2:9200/ { "name" : "node-2", "cluster_name" : "bigdata", "cluster_uuid" : "v4AHbENYQ8-M3Aq8J5OZ5g", "version" : { "number" : "5.4.3", "build_hash" : "eed30a8", "build_date" : "2017-06-22T00:34:03.743Z", "build_snapshot" : false, "lucene_version" : "6.5.1" }, "tagline" : "You Know, for Search" } kill `ps -ef | grep Elasticsearch | grep -v grep | awk '{print $2}'` #查看集群状态 curl -XGET 'http://centos7-1:9200/_cluster/health?pretty' http://centos7-2:9200/_cluster/health?pretty ------------------------------------------------------------------------------------------------------------------ elk提供了一个http形式的请求可以进行数据的访问curd elk底层使用的是lucene,那么这个底层存储就包括index content 结构和lucene完全不一样 与mysql的概念类似 index type id index相当于数据库 type 表 id主键 http://centos7-3:9200/bw/student/1 -d {} RESTful接口URL的格式: http://centos7-2:9200/<index>/<type>/[<id>] 其中index、type是必须提供的。 id是可选的,不提供es会自动生成。 index、type将信息进行分层,利于管理。 index可以理解为数据库;type理解为数据表;id相当于数据库表中记录的主键,是唯一的。 post get put delete update elk中存储的数据是带有id的,所以根据id的存储和删除以及修改 存储的时候elk是分布式的,所以可以理解为zk。他们的身份平等elasticSearch 只不过有一个主进程和其他的从进程,保持数据一致性 #向store索引中添加一些书籍 curl -XPUT 'http://centos7-1:9200/store/books/1' -d '{ "title": "Elasticsearch: The Definitive Guide", "name" : { "first" : "Zachary", "last" : "Tong" }, "publish_date":"2015-02-06", "price":"49.99" }' #在linux中通过curl的方式查询 curl -XGET 'http://centos7-2:9200/store/books/1' #通过浏览器查询 http://centos7-2:9200/store/books/1 #在添加一个书的信息 curl -XPUT 'http://centos7-1:9200/store/books/2' -d '{ "title": "Elasticsearch Blueprints", "name" : { "first" : "Vineeth", "last" : "Mohan" }, "publish_date":"2015-06-06", "price":"35.99", "wordcount":10000000000000 }' # 通过ID获得文档信息 curl -XGET 'http://centos7-2:9200/store/books/2' #在浏览器中查看 http://92.168.10.18:9200/store/books/1 # 通过_source获取指定的字段 curl -XGET 'http://centos7-2:9200/store/books/1?_source=title' curl -XGET 'http://centos7-2:9200/store/books/1?_source=title,price' curl -XGET 'http://centos7-2:9200/store/books/1?_source' #可以通过覆盖的方式更新 curl -XPUT 'http://centos7-2:9200/store/books/1' -d '{ "title": "Elasticsearch: The Definitive Guide", "name" : { "first" : "Zachary", "last" : "Tong" }, "publish_date":"2016-02-06", "price":"99.99" }' # 或者通过 _update API的方式单独更新你想要更新的 curl -XPOST 'http://centos7-2:9200/store/books/1/_update' -d '{ "doc": { "price" : 88.88 } }' curl -XGET 'http://centos7-2:9200/store/books/1' #删除一个文档 curl -XDELETE 'http://centos7-2:9200/store/books/1' curl -XPUT 'http://centos7-2:9200/store/books/1' -d '{ "title": "Elasticsearch: The Definitive Guide", "author": "Guide", "publish_date":"2016-02-06", "price":"35.99" }' #https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html # 最简单filter查询 # SELECT * FROM books WHERE price = 35.99 # filtered 查询价格是35.99的 # 返回的的分是1.0 curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query": { "bool": { "must": { "match_all": {} }, "filter": { "term": { "price": 35.99 } } } } }' # 返回的的分是1.0 curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query": { "constant_score": { "filter": { "term": { "price": 35.99 } } } } }' # 返回的的分是0.0 curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query": { "bool": { "filter" : { "term" : { "price" : 35.99 } } } } }' #指定多个值 curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query" : { "bool" : { "filter" : { "terms" : { "price" : [35.99, 99.99] } } } } }' curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query" : { "bool" : { "must": { "match_all": {} }, "filter" : { "terms" : { "price" : [35.99, 99.99] } } } } }' #use store; #github # SELECT * FROM books WHERE publish_date = "2015-02-06" curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query" : { "bool" : { "filter" : { "term" : { "publish_date" : "2016-02-06" } } } } }' # bool过滤查询,可以做组合过滤查询 #must must_not should # SELECT * FROM books WHERE (price = 35.99 OR price = 99.99) AND publish_date != "2016-02-06" # 类似的,Elasticsearch也有 and, or, not这样的组合条件的查询方式 # 格式如下: # { # "bool" : { # "must" : [], # "should" : [], # "must_not" : [], # } # } # # must: 条件必须满足,相当于 and # should: 条件可以满足也可以不满足,相当于 or # must_not: 条件不需要满足,相当于 not curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query" : { "bool" : { "should" : [ { "term" : {"price" : 35.99}}, { "term" : {"price" : 99.99}} ], "must_not" : { "term" : {"publish_date" : "2016-02-06"} } } } }' # 嵌套查询 # SELECT * FROM books WHERE price = 35.99 OR ( publish_date = "2016-02-06" AND price = 99.99 ) curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query": { "bool": { "should": [ { "term": { "price": 35.99 } }, { "bool": { "must": [ { "term": { "publish_date": "2016-02-06" } }, { "term": { "price": 99.99 } } ] } } ] } } }' # range范围过滤 # SELECT * FROM books WHERE price >= 10 AND price < 99 # gt : > 大于 # lt : < 小于 # gte : >= 大于等于 # lte : <= 小于等于 curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query": { "range" : { "price" : { "gte" : 10, "lt" : 100 } } } }' #mutilQuery #name和author都必须包含Guide,并且价钱等于33.99或者188.99 curl -XGET 'http://centos7-2:9200/store/books/_search' -d '{ "query": { "bool": { "must": { "multi_match": { "operator": "and", "fields": [ "name", "author" ], "query": "Guide" } }, "filter": { "terms": { "price": [ 35.99, 188.99 ] } } } } }' http://centos7-2:9200/store/books/_search
原文地址:https://www.cnblogs.com/JBLi/p/11402973.html
- 通过Chocolatey软件包管理器安装.NET Core
- rsync同步时,删除目标目录比源目录多余文件的方法(--delete)
- 近期一枚“大文娱”dawenyu.com域名以小六位价格易主
- 分布式监控系统Zabbix-3.0.3-完整安装记录(0)
- URL安全的Base64编码
- 温故而知新:设计模式之原型模式(Prototype)
- Windows 7上执行Cake 报错原因是Powershell 版本问题
- 温故而知新:类索引器
- Visual Studio Code 代理设置
- 温故而知新:设计模式之工厂模式(Factory)
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
- jquery.mobile手机网页简要
- 跟张志东深聊腾讯的“进化力”
- 详解微信小程序如何实现流程进度功能
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JAVA初级岗面试知识点——基础篇
- flink实战-flink streaming sql 初体验
- flink实战教程-使用set实时计算当天网站uv
- 贪心-HDU3348 coins(钱币问题)
- 归并排序详解 -HDU4911 Inversion(逆序对)
- 数据结构与算法——稀疏数组
- Maven安装配置详细教程
- 数据结构与算法——冒泡排序
- MyBatis Generator逆向工程-你还在手写mapper吗?
- JSR303后端校验详解
- SSM整合开发实战 SSM-MALL
- SQL Server获取元数据所有方法和示例
- 数据结构与算法——选择排序
- SmtpJS发送邮件教程
- 数据结构与算法——队列