ES学习笔记
ES学习
1. 安装
1.1 ES 安装配置
curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.2.tar.gz
tar xvf elasticsearch-5.1.2.tar.gz
ln -s elasticsearch-5.1.2 elasticsearch
修改conf/elasticsearch.yaml文件,参考下面的文件
修改句柄 vm.max_map_count
sudo vim + /etc/sysctl.conf 添加一行 vm.max_map_count = 262144
sysctl -p 生效修改(查看more /proc/sys/vm/max_map_count)
临时修改 sysctl -w vm.max_map_count=262144
启动ES ./bin/elasticsearch -d
- 验证ES安装 curl 'http://localhost:9200/?pretty'
- 验证ES集群状态 curl 'http://10.9.81.198:9200/_cluster/nodes?pretty'
# ---------------------------------- Cluster(edit)-----------------------------------
cluster.name: tracing-es
# ------------------------------------ Node(edit) ------------------------------------
node.name: es01
#node.attr.rack: r1
# ----------------------------------- Paths ------------------------------------
#path.data: /path/to/data
#path.logs: /path/to/logs
# ----------------------------------- Memory -----------------------------------
#bootstrap.memory_lock: true
# ---------------------------------- Network(edit, 绑定所有)-----------------------------------
network.host: 0.0.0.0
http.port: 9200
# --------------------------------- Discovery(edit)-------------------------------
discovery.zen.ping.unicast.hosts: ["10.10.73.25", "10.10.73.34", "10.10.66.134"]
discovery.zen.minimum_master_nodes: 1
# ---------------------------------- Gateway -----------------------------------
#gateway.recover_after_nodes: 3
# ---------------------------------- Various(add)-----------------------------------
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
1.2 ES-Head 安装配置
es5.0之后不能通过.bin/plugin install mobz/elasticsearch-head安装
- 安装nodejs, 配置环境变量
- 安装npm(taobao npm)
- 安装grunt npm install grunt --save
- 修改head的配置Gruntfile.js
- npm install
- 启动服务:./bin/grunt server
- 访问:http://10.9.31.213:9100
es-head安装遇到的问题,显示集群链接不上,解决方法(第3点重要):
1、修改head源码:目录:head/Gruntfile.js,connect下增加hostname属性,设置为*
2、修改连接地址:目录:head/_site/app.js,修改head的连接地址:this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";把localhost修改成你es的服务器地址
3、修改elasticsearch的参数:编辑config/elasticsearch.yml:增加新的参数,这样head插件可以访问es 注意,设置参数的时候:后面要有空格! and
http.cors.enabled: true
http.cors.allow-origin: "*"
1.3 ES-Kibana 安装配置
启动方法
设置时区
Management->Advanced Settings
设置:tz->Asia/shanghai
1.4 ES-bigdesk 安装
1. 本地下载bigdesk
2. 打开index.html页面
3. 修改BigdeskStore.js, 定位到142行,major == 1改成major >=1
4.
2. ES基础知识
2.1 ES数据类型
- string相关的:text
- 数字相关的:long, integer, short, byte, double, float
- Boolean类型: boolean
- 二进制:binary
- 范围: integer_range, float_range, long_range, double_range, date_range
- 地理数据:geo_point, geo_shape
- token_count: count the number of tokens in a string
- completion to provide auto-complete suggestions
3. ES搜索
3.1 简易搜索
搜索_all字段,_all字段是所有字段集合
GET /index/type/_search?q=xxx
GET /index/type/_search?q=user:xxx
3.2 bool query
bool query对应的是lucene的boolquery
- must: 多个条件完全匹配, 相当于and
- filter: 字段必须匹配,不考虑score
- should: 至少匹配一个,相当于or
- must_not: 多个条件相反匹配,相当not
GET /_search
{
"query": {
"bool": {
"must": {
"term" : { "user" : "kimchy" }
},
"must_not": {
"term" : { "name" : "kimchy" }
},
"should" : {
{ "term" : { "tag" : "elasticsearch" } }
},
"filter": {
"term": { "content": "update" }
}
}
}
}
3.3 match query
match查询语句会进行分词,搜索
GET /_search
{
"query": {
"match": {
"title": "my first"
}
}
}
3.4 term query
term(项,分词最小项)表示完全匹配,查询语句不进行分词,文档中必须包含整个搜索的词
term:过滤,精确匹配
GET /_search
{
"query": {
"match": {
"title": "my first"
}
}
}
3.5 range query
range: 范围查询
GET /_search
{
"query": {
"range": {
"age": {
"gt":20,
"lt":30
}
}
}
}
3.6 过滤和查询的区别
过滤: 特定词和文档是否匹配,范围匹配,不考虑score,可以走缓存
查询: 特定词和文档过滤值匹配程度,考虑score,不能走缓存
3.7 处理控制
exists: tags字段有值的都会被返回
GET /my_index/posts/_search
{
"query" : {
"filtered" : {
"filter" : {
"exists" : { "field" : "tags" }
}
}
}
}
missing: 该字段没有值的都会返回
GET /my_index/posts/_search
{
"query" : {
"filtered" : {
"filter": {
"missing" : { "field" : "tags" }
}
}
}
}
4. ES Index管理
4.1 新建索引
put /myindex
{
"settings":{
"index" : {
"number_of_shards" : 3, //主分片数量
"number_of_replicas" : 2 //每个主分片的复制分片数量
}
},
"mappings":{
"mytype":{
"properties":{
"filed_a":{"type":"text/integer"}
}
}
}
}
ES深入分片
per-segment机制(动态索引)
Lucene中的索引是段(segment)集合,segment具有完整功能的倒排索引,一个segment可以包含多个文档,在文档初始写入时独占一个segment。
一个per-segment search如下工作
Lucene中的索引是ES的中的一个分片,ES中的索引是分片集合
- 新的文档首先写入内存区的索引缓存
- 同时这些buffer被提交:
- 一个新的段——额外的倒排索引——写入磁盘
- 新的提交点写入磁盘,包括新段的名称
- 磁盘是fsync’ed(文件同步)——所有写操作等待文件系统缓存同步到磁盘,确保它们可以被物理写入
- 新段被打开,它包含的文档可以被检索
- 内存的缓存被清除,等待接受新的文档
ES学习笔记的更多相关文章
- OpenGL ES学习笔记(三)——纹理
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记( ...
- OpenGL ES 学习笔记 - Overview - 小旋的博客
移动端图形标准中,目前 OpenGL ES 仍然是比较通用的标准(Vulkan 则是新一代),这里新开一个系列用于记录学习 OpenGL ES 的历程,以便查阅理解. OverView OpenGL ...
- OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--O ...
- OpenGL ES学习笔记(一)——基本用法、绘制流程与着色器编译
首先声明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. 在Android.iOS等移动平台上 ...
- Es 学习笔记 (1)
目录 前言 什么是es? es数据组织类比 应用场景 核心概念 集群 节点(node) 索引(Index) 文档类型(Type) 文档(Document) Mapping 核心简单域类型 分片(sha ...
- 【ES】elasticsearch学习笔记
ES学习 1 优势 1.1 简单 1.1.1 相比Solor配置部署等非常简单 1.2 高效 1.2.1 ES使用Netty作为内部RPC框架,Solor使用Jetty 1.3 插件化 1.3.1 E ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- TEX学习笔记
整理在这里, 方便以后容易查找. 毕竟每个tex的模板有些不一样. Beamer: Latex beamer 学习总结 http://blog.sina.com.cn/s/blog_6cf921f30 ...
- Android学习笔记(二)——探究一个活动
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 活动(Activity)是最容易吸引到用户的地方了,它是一种可以包含用户界面的组件,主要用于和用户进行交互.一 ...
随机推荐
- Hibernate基础学习(四)—对象-关系映射(上)
一.映射对象标识符 Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键值来识别或区分同一个表的不同记录.Hibernate使用对象标识符(OID)来建立内存中的对象和数 ...
- Entity Framework技术系列之0:开篇
小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/shareto ...
- Entity Framework Code First在Oracle下的伪实现
为什么要说是伪实现,因为还做不到类似MsSql中那样完全的功能.Oralce中的数据库还是要我们自己手动去创建的.这里,我们舍掉了Model First中的EDMX文件,自己在代码里面写模型与映射关系 ...
- js的apply()与call()的区别
1.各自对应的不同的语法: /*apply()方法*/ function.apply(thisObj[, argArray]) /*call()方法*/ function.call(thisObj[, ...
- c#控制台实现post网站登录
如题,首先我写了一个web页面来实现post登陆,只做演示,代码如下 public void ProcessRequest(HttpContext context) { context.Respons ...
- Spring MVC执行原理
spring的MVC执行原理 1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求 进行真正的处理工作. 2.DispatcherSer ...
- node-webkit学习之【无边框窗口用JS实现拖动改变大小等】
效果如下图 原生的如下图(原生的用在自己的app上面太丑了,并且还带边框,所以重写了左上角的三个功能键) 1.首先了解一下nw底下的package.json 文件 { "name" ...
- CentOS 'mysql/mysql.h': No such file or directory
需要安装mysql-devel # yum install mysql-devel
- Android SQLite与ListView的简单使用
2017-04-25 初写博客有很多地方都有不足,希望各位大神给点建议. 回归主题,这次简单的给大家介绍一下Android SQLite与ListView的简单使用sqlite在上节中有介绍,所以在这 ...
- Spring+SpringMVC+Mybaties整合之配置文件如何配置及内容解释--可直接拷贝使用--不定时更改之2017/4/27
以下配置可直接使用,只需更改包名. 关于内部标签的解释及用法,都以注解形式在代码内部说明.个人原创,转载需注明出处. 1,web.xml.添加jar包后首先需要配置WEB-INF下的web.xml文件 ...