代码改变世界

ElasticSearch基本学习

2016-02-02 14:34  只喝牛奶的杀手  阅读(1490)  评论(0编辑  收藏  举报

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分词