一:elasticsearch windows下安装:
1 https://www.elastic.co/downloads/elasticsearch 下载elasticsearch
2 在cmd命令行下, 进入到 ../bin/目录,运行 Service install 命令,得到
3 再输入servicemanager,得到
然后点击”Start“, elasticsearch将立即开始运行。
-
name: "Masque",
-
cluster_name: "elasticsearch",
-
version:
-
number: "2.2.1",
-
build_hash: "d045fc29d1932bce18b2e65ab8b297fbf6cd41a1",
-
build_timestamp: "2016-03-09T09:38:54Z",
-
build_snapshot: false,
-
lucene_version: "5.4.1"
-
-
tagline: "You Know, for Search"
二:elasticsearch head插件:
elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es。在elasticsearch安装完以后
三:elasticsearch bigdesk插件:
bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等,下载地址: https://github.com/lukas-vlcek/bigdesk。和head一样,它也是个独立的网页程序,使用方式和head一样。
详解elasticsearch
一 elasticsearch介绍:
elasticsearch 的索引index:跟lucene索引相同,类似于关系型数据库的一张表,mogodb的一个集合
elasticsearch 的文档document:跟lucene文档相同,类似于一张表的一条记录
elasticsearch 的文档类型:一个索引可以存储许多不同用途的对象,例如博客索引我们可以存储文章信息 和评论信息,文档类型可以帮我们区分它们,而且每个文档可以有不同的结构;但是将文档划分为不同类型有一些限制条件:例如不同的文档类型针对同一个字段不能设置不同的字段类型;
支持 集群 分片 和副本
分片:
当需要存储大规模数据时,由于内存或磁盘空间的限制,或者cpu计算能力的问题,不能达到复杂功能的要求时;可以考虑将数据拆分,每部分是一个单独的索引,称为分片;
每个分片可以存储在不同节点上,当需要查询一个有多个分片构成的索引时,elasticsearch会将查询发送到每个相关的分片上,并将结果合并;这个过程对整个应用而言是透明的;
副本:
为了提高查询的吞吐量或实现高可用,可以启用分片副本功能;副本分片是对原始分片的一个精确拷贝,原始分片被称为主分片;对索引的所有修改和操作都作用在主分片上,每隔主分片可以有0个或多个副本,当主分片不可用时集群可以将一个副本分片提升为主分片;
elasticsearch 配置信息查看命令:
curl -XGET http://localhost:9200/_cluster/health?pretty --查询elasticsearch的健康信息
curl -XGET http://localhost:9200/ --查询实例的相关信息
curl -XGET http://localhost:9200/_cluster/nodes/ --得到集群中节点的相关信息
curl -XPOST http://localhost:9200/_cluster/nodes/_shutdown --关闭整个集群
curl -XPOST http://localhost:9200/_cluster/nodes/aaaa/_shutdown --关闭集群中指定节点
curl -XPOST http://localhost:9200/lishuai --创建名为lishuai的索引
curl -XDELETE http://localhost:9200/lishuai --删除名为lishuai的索引
elasticsearch 索引的增删改:
使用命令行发送请求总是报错,此处也可以使用 postman插件发送rest请求:添加一条数据:
其他增删改查与rest动词一致
二 elasticsearch中的模式映射:
1 curl -XPUT http://127.0.0.1:9200/proweb/product/1 -d '{"name":"阿克苏苹果","price":12.8}'
命令会在elasticsearch中创建索引proweb,并在此索引中创建文档类型product ,1是指定的文档标识符,不指定会自动生成 -d后面的是插入到此文档中的数据
模式映射用于指定索引的结构,每个索引可以有多个类型,每个类型的结构也可以不一样,例如索引中product文档类型可以有:name字段和price字段,log文档类型中可以有logtype,logcontent,logtimer;每个字段的类型也可能都不一样;elasticsearch支持自动识别文档类型结构,就像上面1中你可以直接往索引中插入数据,他会自动识别他的索引文档结构(mappings中就是):
{
- "state": "open",
}
手动指定模式映射:
方法:
curl -XPOST 'http://127.0.0.1:9200/logweb' -d @posts111.json 创建索引logweb并发送posts111文件的内容到elasticsearc,创建索引文档结构(字段名和类型和属性)
你也可以直接通过postman发送posts111文件里的json对象到elasticsearch创建索引和索引文档结构;
posts111.json 里的内容其实是一个json对象:
mappings结构说明:
一个索引中所有的类型结构定义都嵌套在mappings对象里,多个文档的结构以,号分割:就像logweb和logmobile;文档类型结构中所有的字段都包含在properties对象中;
每一个字段是结构是: “字段名”:{type:字段类型,通用属性key:通用属性value} 例如: "logtype": {"type": "long", "index": "not_analyzed"}
多个字段field以,号隔开;
{
"mappings": {
"logweb": {
"properties": {
"logtype": {
"type": "long",
"index": "not_analyzed"
},"logcontent": {
"type": "string",
"index": "analyzed"
}
}
},"logmobile": {
"properties": {
"logtype": {
"type": "long",
"index": "not_analyzed"
},"logcontent": {
"type": "string",
"index": "analyzed"
},"logtime": {
"type": "date",
"index": "analyzed"
}
}
}
}
}
字段类型说明:
核心类型 | 通用属性 | 特定属性 |
字符串型 | index 值:analyzed(被索引被分析被搜索) ,no , not_analyzed(不被分析被索引被搜索) store 值:yes,no 默认值no(不能再结果中返回字段的原始值,即没有存储原始值) boost 默认值1 定义该字段在文档中的权重 null_value 指定某字段在索引的文档中不存在时应写入什么值 include_in_all 该属性指定某字段是否应被包含在_all字段中 index_name |
term_vector向量设置,ignore_above 字段的最大长度,omit_norms 是否禁用lucene norms计算, index_option,analyzer,index_analyzer,search_analyzer |
数值型 | (long float double..) Precision_step 设置为字段的每个取值设置的项数,值越低生成的项越多 执行range时的速度越快,索引也越大,默认值4 ignore_malformed是否忽略格式错误的数值 默认值false |
|
日期型 | format用于指定日期格式 Precision_step 设置为字段的每个取值设置的项数,值越低生成的项越多 执行range时的速度越快,索引也越大,默认值4 ignore_malformed是否忽略格式错误的数值 默认值false |
|
布尔型 | ||
二进制 | 只支持index_name属性 |
multi_field 它允许我们将多个核心类型映射到同一个字段,并且进行不同的分析,例如
"name":{"type":"multi_field","fields":{"name":{"type":"string","index":"analyzed"},"facet":{"type":"string","index":"not_analyzed"}}}
elasticsearch将会产生两个不同的字段,使用name和name.facte引用
elasticsearch Linux安装:
1 安装jdk 配置环境变量
2 安装elasticsearch //可能涉及针对非root账号提权的问题,gedit /etc/sudoers 命令添加账号的sodo权限
3 安装marvel/license/head/kopf插件
4 在非root账号下运行 elasticsearch
5 修改elasticsearch.yml 在 /elasticsearch_2.3.3/config
6 针对9200端口添加防火墙例外在 /etc/sysconfig/iptables