一:集群的安装php
###【在多台机器上执行下面的命令】### #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: 192.168.10.16 #初始化时可进行选举的节点 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] ---su root 切换到root用户 #用户最大可建立文件数过小 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 -----TMD 改完这些,我机器还得重启一下才行!!!! 7.启动es(/bigdata/elasticsearch-5.4.3/bin/elasticsearch -h查看帮助文档) /bigdata/elasticsearch-5.4.3/bin/elasticsearch -d 8.用浏览器访问es所在机器的9200端口 http://192.168.10.16: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://192.168.10.16:9200/_cluster/health?pretty' http://192.168.10.16:9200/_cluster/health?pretty curl -XGET 'http://ES-01:9200/_cluster/health?pretty' http://ES-02:9200/_cluster/health?pretty ------------------------------------------------------------------------------------------------------------------ RESTful接口URL的格式: http://192.168.10.16:9200/<index>/<type>/[<id>] 其中index、type是必须提供的。 id是可选的,不提供es会自动生成。 index、type将信息进行分层,利于管理。 index能够理解为数据库;type理解为数据表;id至关于数据库表中记录的主键,是惟一的。 #向store索引中添加一些书籍 curl -XPUT 'http://192.168.10.16: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://192.168.10.18:9200/store/books/1' #经过浏览器查询 http://192.168.10.18:9200/store/books/1 #在添加一个书的信息 curl -XPUT 'http://192.168.10.18:9200/store/books/2' -d '{ "title": "Elasticsearch Blueprints", "name" : { "first" : "Vineeth", "last" : "Mohan" }, "publish_date":"2015-06-06", "price":"35.99" }' # 经过ID得到文档信息 curl -XGET 'http://192.168.10.18:9200/store/books/1' #在浏览器中查看 http://92.168.10.18:9200/store/books/1 # 经过_source获取指定的字段 curl -XGET 'http://192.168.10.16:9200/store/books/1?_source=title' curl -XGET 'http://192.168.10.16:9200/store/books/1?_source=title,price' curl -XGET 'http://192.168.10.16:9200/store/books/1?_source' #能够经过覆盖的方式更新 curl -XPUT 'http://192.168.10.16: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://192.168.10.16:9200/store/books/1/_update' -d '{ "doc": { "price" : 88.88 } }' curl -XGET 'http://192.168.10.16:9200/store/books/1' #删除一个文档 curl -XDELETE 'http://192.168.10.16:9200/store/books/1' curl -XPUT 'http://192.168.10.16:9200/store/books/4' -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://192.168.10.16:9200/store/books/_search' -d '{ "query": { "bool": { "must": { "match_all": {} }, "filter": { "term": { "price": 35.99 } } } } }' # 返回的的分是1.0 curl -XGET 'http://192.168.10.16:9200/store/books/_search' -d '{ "query": { "constant_score": { "filter": { "term": { "price": 35.99 } } } } }' # 返回的的分是0.0 curl -XGET 'http://192.168.10.16:9200/store/books/_search' -d '{ "query": { "bool": { "filter" : { "term" : { "price" : 35.99 } } } } }' #指定多个值 curl -XGET 'http://192.168.10.16:9200/store/books/_search' -d '{ "query" : { "bool" : { "filter" : { "terms" : { "price" : [35.99, 99.99] } } } } }' curl -XGET 'http://192.168.10.16:9200/store/books/_search' -d '{ "query" : { "bool" : { "must": { "match_all": {} }, "filter" : { "terms" : { "price" : [35.99, 99.99] } } } } }' # SELECT * FROM books WHERE publish_date = "2015-02-06" curl -XGET 'http://192.168.10.16:9200/store/books/_search' -d '{ "query" : { "bool" : { "filter" : { "term" : { "publish_date" : "2015-02-06" } } } } }' # bool过滤查询,能够作组合过滤查询 # 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://192.168.10.16: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://192.168.10.16: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://192.168.10.16:9200/store/books/_search' -d '{ "query": { "range" : { "price" : { "gte" : 10, "lt" : 99 } } } } #name和author都必须包含Guide,而且价钱等于33.99或者188.99 curl -XGET 'http://192.168.10.16: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://192.168.10.16:9200/store/books/_search
二:Head插件安装与使用html
只须要在一台机器上安装便可node
head 插件安装linux
http://blog.csdn.net/napoay/article/details/53896348 #更新 sudo yum update -y sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-6-8.noarch.rpm sudo rpm -ivh https://kojipkgs.fedoraproject.org//packages/http-parser/2.7.1/3.el7/x86_64/http-parser-2.7.1-3.el7.x86_64.rpm sudo yum install npm sudo yum install -y git sudo yum install -y bzip2 git clone git://github.com/mobz/elasticsearch-head.git #将源码包下载后剪切到/bigdata目录,并改所属用户和组 sudo chown -R xiaoniu:xiaoniu /bigdata/elasticsearch-head #进入到elasticsearch-head中 cd elasticsearch-head #编译安装 npm install 打开elasticsearch-head-master/Gruntfile.js,找到下面connect属性,新增hostname: '0.0.0.0', connect: { server: { options: { hostname: '0.0.0.0', port: 9100, base: '.', keepalive: true } } } 编辑elasticsearch-5.4.3/config/elasticsearch.yml,加入如下内容: http.cors.enabled: true http.cors.allow-origin: "*" -------------先启动ES再启动插件---------------- #运行服务 必定要在插件目录下执行 npm run start --------------------------------------------------------------------------------------------- 关闭ES集群 kill `ps -ef | grep Elasticsearch | grep -v grep | awk '{ print $2}'` 安装IK分词器 下载对应版本的插件 https://github.com/medcl/elasticsearch-analysis-ik/releases 首先下载es对应版本的ik分词器的zip包,上传到es服务器上,在es的安装目录下有一个plugins的目录,在这个目录下建立一个叫ik的目录 而后将解压好的内容,拷贝到ik目录 将ik目录拷贝到其余的es节点 从新启动全部的es #建立索引名字叫news curl -XPUT http://192.168.100.211:9200/news #建立mapping(至关于数据中的schema信息,表名和字段名以及字段的类型) curl -XPOST http://192.168.100.211:9200/news/fulltext/_mapping -d' { "properties": { "content": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } } }' curl -XPOST http://192.168.100.211:9200/news/fulltext/1 -d' {"content":"美国留给伊拉克的是个烂摊子吗"}' curl -XPOST http://192.168.100.211:9200/news/fulltext/2 -d' {"content":"公安部:各地校车将享最高路权"}' curl -XPOST http://192.168.100.211:9200/news/fulltext/3 -d' {"content":"中韩渔警冲突调查:韩警平均天天扣1艘中国渔船"}' curl -XPOST http://192.168.100.211:9200/news/fulltext/4 -d' {"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}' curl -XPOST http://192.168.100.211:9200/news/fulltext/_search -d' { "query" : { "match" : { "content" : "中国" }}, "highlight" : { "pre_tags" : ["<font color='red'>", "<tag2>"], "post_tags" : ["</font>", "</tag2>"], "fields" : { "content" : {} } } }' ------------------------------------------------------------------- curl -XGET 'http://192.168.100.211:9200/_analyze?pretty&analyzer=ik_max_word' -d '联想是全球最大的笔记本厂商' curl -XGET 'https://192.168.100.211:9200/_analyze?pretty&analyzer=ik_smart' -d '联想是全球最大的笔记本厂商' curl -XPUT 'https://192.168.100.211:9200/iktest?pretty' -d '{ "settings" : { "analysis" : { "analyzer" : { "ik" : { "tokenizer" : "ik_max_word" } } } }, "mappings" : { "article" : { "dynamic" : true, "properties" : { "subject" : { "type" : "string", "analyzer" : "ik_max_word" } } } } }' curl -XPUT 'https://192.168.100.211:9200/iktest?pretty' -d '{ "settings" : { "analysis" : { "analyzer" : { "ik" : { "tokenizer" : "ik_max_word" } } } }, "mappings" : { "article" : { "dynamic" : true, "properties" : { "subject" : { "type" : "string", "analyzer" : "ik_max_word" } } } } }' curl -XGET 'http://192.168.10.16:9200/_analyze?pretty&analyzer=ik_max_word' -d ‘中华人民共和国’ --------------------------------------------------------------------------------------------- es安装SQL插件 ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.3.0/elasticsearch-sql-5.4.3.0.zip #而后将解压到plugins目录下的内容拷贝到其余es的节点的plugins目录 下载SQL的Server wget https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/es-sql-site-standalone.zip 用npm编译安装 unzip es-sql-site-standalone.zip cd site-server/ npm install express --save 修改SQL的Server的端口 vi site_configuration.json 启动服务 node node-server.js &
四:遇到 的问题c++
1:解决CentOS缺乏共享库:libstdc++.so.6git
当在CentOS 6.2下执行某些命令时,有缺乏共享库的报错: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory 解决办法: 1、执行命令: yum whatprovides libstdc++.so.6 而后会提示哪一个安装包有这个库文件以下: [root@localhost ~]# yum whatprovides libstdc++.so.6 Loaded plugins: aliases, changelog, downloadonly, fastestmirror, kabi, presto, refresh-packagekit, security, tmprepo, verify, : versionlock Loading support for CentOS kernel ABI Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * centosplus: centos.ustc.edu.cn * contrib: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn libstdc++-4.4.7-3.el6.i686 : GNU Standard C++ Library Repo : base Matched from: Other : libstdc++.so.6 2、而后执行: yum install libstdc++-4.4.7-3.el6.i686 本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文连接:https://www.linuxidc.com/Linux/2013-04/82494.htm
2:Centos6.5 升级glibc解决“libc.so.6: version GLIBC_2.14 not found”报错问题github
从上面报错能够看出,程序运行时候,没有找到“GLIBC_2.14”这个版本库,而默认的Centos6.5 glibc版本最高为2.12, 因此须要更新系统glibc库。sql
继续完成后续的安装: 数据库
接下来当你创建新的软连接时候,会发现ln命令不能用了。express
收集整理用的,用到的原文连接太多了,找不回来了