ES介绍
维基百科使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。
英国卫报使用Elasticsearch来处理访客日志,以便能将公众对不同文章的反应实时地反馈给各位编辑。
StackOverflow将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。
GitHub使用Elasticsearch来检索超过1300亿行代码。
每天,Goldman Sachs使用它来处理5TB数据的索引,还有很多投行使用它来分析股票市场的变动。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布。能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Real-Time Data实时数据
Real-Time Advanced Analytics实时高级分析
Massively Distributed 大规模分布式
High Availability 高可用性
Multitenancy 多索引
Full-Text Search 全文搜索
Document-Oriented 面向文档
Schema-Free 数据结构可自定
Developer-Friendly, RESTful API 开发友好
Per-Operation Persistence 每一个操作持久化
Apache 2 Open Source License 许可条款
Build on top of Apache Lucene™ 基于Lucene
Elasticsearch VS Solr
http://solr-vs-elasticsearch.com/
ES资源
官网:
https://www.elastic.co/downloads/elasticsearch
文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
权威指南:
https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
权威指南(翻译):
http://es.xiaoleilu.com/
客户端:
https://www.elastic.co/guide/en/elasticsearch/client/index.html
C#:http://nest.azurewebsites.net/
Chrome插件Sense
Kibana
安装sense:./bin/kibana plugin --install elastic/sense
访问:http://192.168.0.170:5601/app/sense
ES概念
集群&节点(Cluster&Node)
分片&副本(Shard&Replication)
索引(Index)
类型(Document Type)
文档(Document)
集群>节点>索引(分片|副本)>类型>文档
ES配置&基本使用
cluster.name: elasticsearch 集群名称 默认elasticsearch
node.name: “node1“ 节点名称 默认会生成
node.master: true 是否有权选举为master 默认true
node.data: true 是否存储数据 默认true
index.number_of_shards: 5 默认索引主分片数量 默认5
index.number_of_replicas: 1 默认索引备份数 默认1
path.conf: /path/to/conf 配置文件路径 默认es安装目录下conf
path.data: /path/to/data 索引数据存放路径 默认安装目录下data
path.work: /path/to/work临时文件的存储路径 默认安装目录下work
path.logs: /path/to/logs 日志路径 默认安装目录下logs
path.plugins: /path/to/plugins 插件路径 默认安装目录下plugins
network.host: 192.168.0.1 绑定的ip 默认127.0.0.1
transport.tcp.port: 9300 传输端口 默认9300
transport.tcp.compress: true 传输是否压缩 默认false
http.port: 9200 提供http端口 默认9200
discovery.zen.ping.multicast.enabled: false 是否自动发现节点 默认true
discovery.zen.ping.unicast.hosts: [“host1”, “host2:port”, “host3[portX-portY]”]
script.inline: on
script.indexed: on
ES分布式集群
node.master: false node.data: true
该node服务器只作为一个数据节点,只用于存储索引数据。使该node服务器功能 单一,只用于数据存储和数据查询,降低其资源消耗率。
node.master: true node.data: false
该node服务器只作为一个主节点,但不存储任何索引数据。该node服务器将使用 自身空闲的资源,来协调各种创建索引请求或者查询请求,将这些请求合理分发到相关 的node服务器上。
node.master: false node.data: false
该node服务器即不会被选作主节点,也不会存储任何索引数据。该服务器主要用 于查询负载均衡。在查询的时候,通常会涉及到从多个node服务器上查询数据,并请 求分发到多个指定的node服务器,并对各个node服务器返回的结果进行一个汇总处理, 最终返回给客户端。
ES插件
Elasticsearch-head 管理ES
Elasticsearch-kopf 管理ES
Elasticsearch-knapsack 数据导入导出
Elasticsearch-SQL 用SQL查询数据
Elasticsearch-analysis-ik IK分词