博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch集群搭建和javaApi的使用
阅读量:6244 次
发布时间:2019-06-22

本文共 4963 字,大约阅读时间需要 16 分钟。

elasticsearch简介

elasticsearch 是基于lucene的高度可扩展的开源全文搜索和分析引擎。官网上介绍是一位程序员为了给他厨师妻子做一个食谱搜索引擎。使用lucene开发,后来发展成为现在的elasticsearch。第一个版本发布于2010年,现在github发展的特别活跃,到今天,已经有1100位github的代码贡献者,223个发行的版本。

足以说明elasticsearch的强大,使用官网上的话,elasticsearch可以让用户快速的、近乎实时(插入到可搜索通常为1秒)、存储和分析大量数据。

elasticsearch 特性

1、速度快。elasticsearch对所有的内容进行了索引。

2、可扩展性,可以在单节点运行elasticsearch,生产环境可以在300节点集群。所以可以水平增加节点以处理请求的能力。
3、高可用。提供了副本,主节点挂掉,可以检测故障,重新选择新的节点。
4、灵活性。数字,文本,地理位置,结构化,非结构化。支持的数据类型很多。应用程序搜索,安全分析和日志记录都依赖Elasticsearch来解决各种挑战。

elasticsearch 中的一些概念。

表头 表头
集群cluster 由一个节点或多个节点组成,cluster.name相同的节点。
节点node 一个节点node就是一个ElasticSearch的实例。可以设置是否可以为主节点,还是数据节点,还是协调节点。用户能够与集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于哪个节点上,可以转发请求到相应的节点上。
分片shard 一个分片是最小的工作单元,仅仅保存索引中所有数据的一部分。默认是5个分片,1个副本。
主分片 索引中的每个文档属于一个单独的主分片,所以主分片的数量决定了索引最多能存储多少数据。索引创建完成时,主分片的数量就固定了,但是复制分片的数量可以随时调整。
复制分片 是主分片的副本,它可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的shard取回文档
索引index 索引是具有某些相似特征的文档的集合,它和数据库中的索引概念并不十分相同。我们可以把索引理解为数据库文档中的数据库。事实上,我们的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一起的逻辑空间。然而,这只是一些内部细节——我们的程序完全不用关心分片
type类型 在索引中,我们可以定义一个或多个类型。类型是索引的逻辑类别/分区,其语义完全由开发者决定。通常,为具有一组公共字段的文档定义类型。例如,假设开发者运行博客平台并将所有数据存储在一个索引中。在此索引中,我们可以为用户数据定义类型,为博客数据定义另一种类型,并为注释数据定义另一种类型。我们可以把索引理解成数据库文档中的表。
文档 一条记录

以下是 es 和 关系型数据库的简单类比

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices(索引簇)-> Types -> Documents -> Fields

集群环境搭建

elasticsearch 集群搭建

下面我使用一台服务器搭建了三个节点的集群作为演示。由于一个节点默认的jvm内存大小是2g,我在一台服务器只有2G,在config目录下面我修改jvm.oprion配置,-xms 和 -xmx 设置为512M

节点的数根据官方的说法要n/2+1个节点,为了防止脑裂。脑裂就是三个节点中的主节点出现问题,无法连接,就会从剩下的两个从节点中选举一个主节点,但是之前的主节点又恢复过来,可以根据第三个节点,让新选举的主节点降级为从节点。但是要是两个节点,让谁降级是不明确的。

现在的最新的版本是6.4.2版本下载下来。官网可以直接下载。然后解压复制三份。配置文件如下:

启动 bin目录下面 ./bin/elasticsearch.sh
后台运行 ./elasticsearch.sh -d
然后可以到日志目录下看启动目录,没有报错可以了。或者netstat -tnlp,查看端口启动情况。

elasticsearch head 可视化工具的使用

工具是node.js开发,所以需要安装node.js. 下载地址: or download按钮,点击download zip进行下载。下载完毕后解压到任意路径上,别放在elasticsearch安装路径上。

#allow origin 修改elasticsearch配置文件可以跨域。http.cors.enabled: truehttp.cors.allow-origin: "*"复制代码

使用grunt server & 后台启动

插件的使用(ik,pinyin,sql)

github 中可以找到插件,直接下载。注意:插件的版本必须要和elasticsearch版本一致。

所有插件同上。

安装chorme sense工具可以自行百度。可以进行curl操作

javaApi操作elasticsearch

自己的增删改查demo. git地址。

:wanjiongheng/mysql-to-elasticsearch.git

这是创建索引的时候的配置如下:{    "state": "open",    "settings": {        "index": {            "number_of_shards": "3",            "number_of_replicas": "0",            "analysis": {                "filter": {                    "my_pinyin": {                        "keep_joined_full_pinyin": "true",                        "none_chinese_pinyin_tokenize": "false",                        "keep_none_chinese_in_joined_full_pinyin": "true",                        "keep_original": "true",                        "keep_first_letter": "false",                        "keep_separate_first_letter": "false",                        "type": "pinyin",                        "keep_full_pinyin": "false"                    }                },                "analyzer": {                    "ik_pinyin_analyzer": {                        "filter": [                            "my_pinyin",                            "word_delimiter"                        ],                        "type": "custom",                        "tokenizer": "ik_smart"                    }                }            }        }    },    "mappings": {        "goods": {            "properties": {                "name_pinyin": {                    "type": "keyword"                },                "note": {                    "type": "keyword"                },                "flag": {                    "type": "integer"                },                "modifyTime": {                    "type": "long"                },                "brand_pinyin": {                    "type": "keyword"                },                "createTime": {                    "type": "long"                },                "price": {                    "type": "keyword"                },                "name": {                    "type": "keyword",                    "fields": {                        "ik_smart_pinyin_analyzer": {                            "analyzer": "ik_pinyin_analyzer",                            "term_vector": "with_positions_offsets",                            "type": "text"                        }                    }                },                "id": {                    "type": "long"                },                "brand": {                    "type": "keyword",                    "fields": {                        "ik_smart_pinyin_analyzer": {                            "analyzer": "ik_pinyin_analyzer",                            "term_vector": "with_positions_offsets",                            "type": "text"                        }                    }                },                "useState": {                    "type": "integer"                }            }        }    },    "aliases": [        "goods_alias"    ],}复制代码

最后,elasticsearch api博大精深。可自行学习。

转载地址:http://ytvia.baihongyu.com/

你可能感兴趣的文章
4.2 列表生成式、迭代器与生成器
查看>>
Sql Server系列:分区表操作
查看>>
myeclipse maven tomcat插件 创建web工程
查看>>
2.java线程之ThreadLocal
查看>>
Unsafe 的简单使用
查看>>
明确价值体现
查看>>
myeclipse修改内存大小不足tomcat内存不足
查看>>
C++STL学习笔记_(2)deque双端数组知识
查看>>
CodeFoces 489E 01分数规划(二分的dp)
查看>>
浅谈CSRF攻击方式[转]
查看>>
一道淘汰85%面试者的百度开发者面试题参考答案
查看>>
如何将Drawable转为Bitmap?
查看>>
微信公众平台消息接口开发(4)
查看>>
VB控件间的拖放
查看>>
token 验证的逻辑
查看>>
机器学习算法之概率分类法
查看>>
phone8 in-app purchasing
查看>>
Git 常用命令
查看>>
基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql高性能php平台
查看>>
Java学习图
查看>>