题记

[Elasticsearch6.X相关核心知识点必知必会](http://elasticsearch-cheatsheet.jolicode.com/ 
Elasticsearch5.X相关核心知识点必知必会(如下)。

0. ES相关推荐

首先,不要再使用curl,请安装sense(kibana5.x中默认包含sense) 
1)ES官方向导 
https://www.elastic.co/guide/en/elasticsearch/guide/master/index.html

2)ES官方文档(API相关) 
https://www.elastic.co/guide/en/elasticsearch/reference/master/index.html

3)ES资源清单(全) 
https://github.com/dzharii/awesome-elasticsearch

4)ES云 
https://www.found.no/play

5)ES官方论坛(英文) 
https://discuss.elastic.co/

6)ES|stackOverflow论坛地址 
https://stackoverflow.com/questions/tagged/elasticsearch

7)ES 性能测试相关(NB) 
https://www.datadoghq.com/blog/monitor-elasticsearch-performance-metrics/

1. 查询操作

基本查询有两种语法:左边是一个简单的语法,你不能使用任何选项, 
右边是一个扩展。 大多数初学者头痛的DSL来自于:

GET _search
{"query": {"match": {"FIELD": "TEXT"}}
}
GET _search
{"query": {"match": {"FIELD": {"query": "TEXT","OPTION": "VALUE"}}}
}

1.1 包含高亮、聚合、过滤器的完整的检索示例

GET /_search
{"query": {"bool": {"must": [{"match": {"title": "smith"}}],"must_not": [{"match_phrase": {"title": "granny smith"}}],"filter": [{"exists": {"field": "title"}}]}},"aggs": {"my_agg": {"terms": {"field": "user","size": 10}}},"highlight": {"pre_tags": ["<em>"],"post_tags": ["</em>"],"fields": {"body": {"number_of_fragments": 1,"fragment_size": 20},"title": {}}},"size": 20,"from": 100,"_source": ["title","id"],"sort": [{"_id": {"order": "desc"}}]
}

1.2 普通检索

多字段检索

"multi_match": {"query": "Elastic","fields": ["user.*", "title^3"],"type": "best_fields"
}

bool检索

"bool": {"must": [],"must_not": [],"filter": [],"should": [],"minimum_should_match" : 1
}

范围检索

"range": {"age": {"gte": 10,"lte": 20,"boost": 2}
}

1.3 QueryString语法概述

1.3.1 检索所有的_all字段

GET /_search?q=pony

1.3.2 包含运算符和包含boost精确检索的复杂检索

GET /_search?q=title:(joli OR code) AND author:"Damien Alexandre"^2

1.3.3 使用通配符和特殊查询进行检索

GET /_search?q=_exists_:title OR title:singl? noneOrAnyChar*cter

1.3.4 模糊搜素和范围检索

GET /_search?q=title:elastichurch~3 AND date:[2016-01-01 TO 2018-12-31]

1.3.5 使用 DSL检索(不推荐用于用户搜索):

GET /_search
{"query": {"query_string": {"default_field": "content","query": "elastic AND (title:lucene OR title:solr)"}}
}

2. 索引操作

2.1 创建包含设置和mapping的索引

PUT /my_index_name
{"settings": {"number_of_replicas": 1,"number_of_shards": 3,"analysis": {},"refresh_interval": "1s"},"mappings": {"my_type_name": {"properties": {"title": {"type": "text","analyzer": "english"}}}}
}

2.2 动态的更新设置

PUT /my_index_name/_settings
{"index": {"refresh_interval": "-1","number_of_replicas": 0}
}

2.3 通过向类型添加字段更新索引

PUT /my_index_name/_mapping/my_type_name
{"my_type_name": {"properties": {"tag": {"type": "keyword"}}}
}

2.4 获取Mapping和设置

GET /my_index_name/_mapping
GET /my_index_name/_settings

2.5 创建document

POST /my_index_name/my_type_name
{"title": "Elastic is funny","tag": ["lucene"]
}

2.6 创建或更新document

PUT /my_index_name/my_type_name/12abc
{"title": "Elastic is funny","tag": ["lucene"]
}

2.7 删除文档

DELETE /my_index_name/my_type_name/12abc

2.8 打开或关闭索引已节约内存和CPU

POST /my_index_name/_close
POST /my_index_name/_open

2.9 移除和创建别名

POST /_aliases
{"actions": [{"remove": {"index": "my_index_name","alias": "foo"}},{"add": {"index": "my_index_name","alias": "bar","filter" : { "term" : { "user" : "damien" } }}}]
}

2.10 列举别名

GET /_aliases
GET /my_index_name/_alias/*
GET /*/_alias/*
GET /*/_alias/foo

2.11 索引监控和信息

GET /my_index_name/_stats
GET /my_index_name/_segments
GET /my_index_name/_recovery?pretty&human

2.12 索引状态和管理

POST /my_index_name/_cache/clear
POST /my_index_name/_refresh
POST /my_index_name/_flush
POST /my_index_name/_forcemerge
POST /my_index_name/_upgrade
GET /my_index_name/_upgrade?pretty&human

3. 调试和部署

3.1 检索调试

3.1.1 获取query操作到底做了什么?

GET /blog/post/_validate/query?explain
{"query": {"match": {"title": "Smith"}}
}

3.1.2 获取文档是否匹配?

GET /blog/post/1/_explain
{"query": {"match": {"title": "Smith"}}
}

3.2 分析

3.2.1 测试内容如何在文档中被标记?

GET /blog/_analyze?field=title&text=powerful

3.2.2 测试分析器输出?

GET /_analyze?analyzer=english&text=powerful

3.3 集群管理和插件管理

3.3.1 集群和节点信息

GET /_cluster/health?pretty
GET /_cluster/health?wait_for_status=yellow&timeout=50s
GET /_cluster/state
GET /_cluster/stats?human&pretty
GET /_cluster/pending_tasks
GET /_nodes
GET /_nodes/stats
GET /_nodes/nodeId1,nodeId2/stats

3.3.2 手动移动分片

索引1的分片移动到索引2

POST /_cluster/reroute
{"commands": [{"move": {"index": "my_index_name","shard": 0,"from_node": "node1","to_node": "node2"}},{"allocate": {"index": "my_index_name","shard": 1,"node": "node3"}}]
}

3.3.3 更新设置

动态更新最小节点数。

PUT /_cluster/settings
{"persistent": {"discovery.zen.minimum_master_nodes": 3}
}PUT /_cluster/settings
{"transient": {"discovery.zen.minimum_master_nodes": 2}
}

使分片失效,在rolling重启前有效。

PUT /_cluster/settings
{"transient" : {"cluster.routing.allocation.enable" : "none"}
}PUT /_cluster/settings
{"transient" : {"cluster.routing.allocation.enable" : "all"}
}

4.最有用的插件

ES5.X版本已不再支持站点插件,请查看kibana应用或类似Cerebro等其他独立的app做管理。 
Cerebro地址: https://github.com/lmenezes/cerebro

Analysis ICU 
从Unicode ICU库中添加有用的tokenizer和令牌过滤器。

bin/elasticsearch-plugin install analysis-icu

AWS Cloud 
允许在Amazon云(EC2和S3)中发现和存储。

bin / elasticsearch-plugin install discovery-ec2 bin / elasticsearch-plugin install repository-s3

Azure Cloud 
允许在微软云(EC2和S3)中发现和存储。

bin/elasticsearch-plugin install discovery-azure-classicbin/elasticsearch-plugin install repository-azure

插件管理:

bin/elasticsearch-plugin install file:///path/to/plugin
bin/elasticsearch-plugin list
bin/elasticsearch-plugin remove [pluginname]

5.其他信息

5.1 如何发现其他插件

RPM: /usr/share/elasticsearch/bin
Debian: /usr/share/elasticsearch/bin

5.2 缺省端口

Kibana: http://localhost:5601/.Elasticsearch: http://localhost:9200/.

5.3 如何设置堆大小

单一Elasticsearch 服务器最大可用内存小于总内存的50%,且小于32GB; 
假定你使用Ubuntu/Debian 服务器,你可以通过如下配置修改:

/etc/security/limits.confelasticsearch - nofile 65535
elasticsearch - memlock unlimited

对于Centos服务器,修改配置如下:

/etc/default/elasticsearch (on CentOS/RH: /etc/sysconfig/elasticsearch)ES_HEAP_SIZE=20g
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited

5.4 elasticsearch.yml中有用的需要改变的配置

cluster.name: jolicluster
node.name: ${HOSTNAME}
discovery.zen.ping.unicast.hosts: ["front01", "front02"]
discovery.zen.minimum_master_nodes: 2
network.host: _site_
network.bind_host: [_site_, _local_]
plugin.mandatory: analysis-icu
node.data: true
node.master: true
bootstrap.memory_lock: true
action.auto_create_index: +aaa*,-bbb*,+ccc*,-*

6. 小结

本文是翻译的 http://elasticsearch-cheatsheet.jolicode.com/#es5。

ES6.X,你必须知道的API和相关技巧相关推荐

  1. 分享下剪辑师必须知道的13个剪辑技巧!

    最基本的影片剪辑手法就是剪接了,从一个镜头跳到另一个镜头,改变视角.推进故事.很多手法很常用很自然,一般你都不会留意.今天给大家分享剪辑师必须知道的13个剪辑技巧!希望你能领略每一招的用法和寓意,最终 ...

  2. 【私藏】开发APP必须知道的API集合

    笔记 OneNote - OneNote支持获取,复制,创建,更新,导入与导出笔记,支持为笔记添加多媒体内容,管理权限等.提供SDK和Demo. 为知笔记 - 为知笔记Windows客户端开放了大量的 ...

  3. 开发APP必须知道的API集合

    笔记 OneNote - OneNote支持获取,复制,创建,更新,导入与导出笔记,支持为笔记添加多媒体内容,管理权限等.提供SDK和Demo. 为知笔记 - 为知笔记Windows客户端开放了大量的 ...

  4. IDEA万能快捷键,你必须知道的17个实用技巧,提升撸码效率!

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 本文阅读时间大约5分钟. IDEA里有一个万能快捷键(alt enter),功能非常强大,同一 ...

  5. 面怎么煮更好吃?你必须知道的7个小技巧

    对于吃面一族来说,如何煮好面条真是要好好研究,要知道,要是煮不好,这调味和配料再精彩,也会失了风味. 人的大脑和神经系统需要一种碳水化合物占50%的食品.面条就是这种有益的原料,硬质小麦含有B族维生素 ...

  6. C语言中如何把位赋值给字节,优秀程序员必须知道的20个位运算技巧

    一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读&l ...

  7. 必须知道的20个位运算技巧

    一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读&l ...

  8. python语言必背代码-Python新手必须知道的25条知识点

    原标题:Python新手必须知道的25条知识点 1.到底什么是Python?你可以在回答中与其他技术进行对比 下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,P ...

  9. 系统管理员必须知道的PHP安全实践

    系统管理员必须知道的PHP安全实践 PHP是一种开源服务器端脚本语言,应用很广泛.Apache web服务器提供了这种便利:通过HTTP或HTTPS协议, 访问文件和内容.配置不当的服务器端脚本语言会 ...

最新文章

  1. 如何保证高可用?java测试工程师测试的方法
  2. 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
  3. 合并文件夹中子目录_01 Linux之统计文件夹中文件个数以及目录个数
  4. r语言折线图_R语言做多变量可视化分析?
  5. 2021.08.22学习内容torch.cat()和torch.stack()函数
  6. 由于3²+4²=5²,所以称‘3,4,5‘为勾股数,求n(包括n)以内所有勾股数数组。
  7. jmeter的如何设置headers
  8. htm5l,第一个script代码练习
  9. Python常用音频库
  10. 路由器刷openwrt后不能上网 修改brlan的ip地址失败
  11. 世界尽头与冷酷仙境(村上春树)-摘录
  12. Android O 开机动画铃声
  13. win,linux双系统开机引导修复
  14. 线程初步(四)--小练习
  15. C++实现凸包Graham_scan算法
  16. <video>标签及属性说明
  17. 利用dsp电机测速及详解
  18. Drools LHS与RHS常见语法
  19. 有效性指标——传输速率和频带利用率
  20. IDEA启动VUE项目的方法

热门文章

  1. java uppercase方法_Java toUpperCase()方法及其示例
  2. VMWare下虚拟机ubuntu与宿主机windows文件共享
  3. oracle java调用存储过程_Java调用Oracle存储过程
  4. python调用窗口_如何调用一个函数并在另一个窗口中打开?
  5. c++ 0x8000ffff灾难性故障_《可靠性设计》——故障模式影响分析
  6. 服务器磁盘状态,宝塔面板:服务器状态“磁盘100%”标红 解决方法
  7. 枚举遍历法,你能循环遍历所有的枚举值吗?
  8. 中南大学计算机在线考试答案,中南大学计算机考试复习题
  9. java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...
  10. 成都理工大学c语言复试,2020年成都理工大学信号与信息处理考研真题试卷及试题答案,C语言程序设计考研试题下载...