elasticsearch+mongodb 搜索框架

elasticsearch+mongodb搜索框架

一、安装jdk

    elasticsearchJava语言开发的,需要jdk1.8以上版本.

    oracle官网下载jdk

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 进入jdk所在目录,并解压到/usr/lib/jvm目录(不存在,则新建目录)

sudo tar zxvf ./jdk-8u65-linux-x64.tar.gz  -C /usr/lib/jvm

 

进入该目录:

cd usr/lib/jvm

 

重命名文件夹,方便读记:

sudo mv jdk1.8.0_65/ java8

 

配置环境变量:

vi ~/.bashrc

 

使用vi命令编辑该文件,在文件底部加入以下命令:

export JAVA_HOME=/usr/lib/jvm/java8  

export JRE_HOME=${JAVA_HOME}/jre   

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   

export PATH=${JAVA_HOME}/bin:$PATH

 

使环境变量立即生效:

source ~/.bashrc

 

查看是否安装成功:

java -version

 

 

二、安装elasticsearch

Mongo-connector最新版支持ES 5.4

官网下载ES 5.4

https://www.elastic.co/downloads/elasticsearch

 

选择tar下载包:

 

 

es5.x版本 不能以root用户运行es,需增加普通用户,新加用户es

useradd es

切换es用户,解压tar包:

tar -xvf elasticsearch-5.4.0.tar.gz

 

进入解压后的目录:

cd elasticsearch-5.4.0/config

 

修改ES配置文件:

vim elasticsearch.yml 

修改network.host使外网可以访问

 

关闭内存锁定

 

修改系统参数

vim /etc/security/limits.conf

 

 

使用一下命令修改 soft nproc 2048

vim /etc/security/limits.d/90-nproc.conf

 

 

使用一下命令在最后添加一行数据如下vm.max_map_count=262144

vim /etc/sysctl.conf

 

修改完后,执行如下命令 sysctl -p

 

ES基本配置完成,启动节点和单个集群(Windows环境运行elasticsearch.bat):

./elasticsearch

 

出现以下信息说明启动成功:

 

 

    可以看到,启动的节点名称是Colonel(在你的实例中,名称可能不同), 并且该节点被选为了单集群的主节点。 可以使用以下命令指定集群和节点名称:

./elasticsearch --cluster.name my_cluster_name --node.name my_node_name

 

浏览器中输入url

http://localhost:9200/

 

成功访问elasticsearch。  elasticsearch默认端口9200,如果有需要,该端口可配置。

 

二.安装mongo-connector

不想在增删改 MongoDB 中数据的同时去增删改 ElasticSearch 中的数据。希望 MongoDB 中数据发送变化时自动同步到 ElasticSearch 中。

最初的解决方案是使用elasticSearchriver来同步数据,但是river已经在elasticSearch1.5版本中停止维护,在2.0版本完成废弃。  代替的解决方案是使用mongo-connector.

mongo-connectorMongoDB 官方的开发人员用 Python 写的一个工具,目前支持将 MongoDB 的数据同步到 SolrElasticSearchMongoDB 中,并且支持用户自己扩展。

 

安装命令:

pip install 'mongo-connector[elastic5]'

验证是否安装成功:

 

 

 

 

 

启动mongo-connector,进入mongo-connector目录,输入命令:

mongo-connector -m localhost:27017 -t localhost:9200 -d elastic_doc_manager

假设mongodb集群端口27017elasticSearch端口9200,并且都安装在本机。

 

如果启动报错如下:

 

进入mongo-connector目录,删除oplog.timestamp文件,重新启动即可。

 

 

三.安装Ik Analysis

elasticSearch不支持中文分词, 因此必须安装中文分词插件, 建议选用ik analysis

ik  github地址: https://github.com/medcl/elasticsearch-analysis-ik

下载ik master版本(目前master版本支持elasticSearch2.1.1), 解压zip包。

由于下载的是源码,需要进行编译。进入ik解压后的目录,输入命令:

mvn clean package

命令执行完后,生成target文件夹:

 

进入target/releases目录,将生成的发布包,拷贝并解压到elasticSearch_home/plugins/ik目录下。

ik_home/config下的ik文件夹copyelasticSearch_home/config下:

 

至此,ik analysis 插件安装完成。

 

 

四.elasticSearch使用ik分词

以搜索social数据库article表为例:

启动elasticSearch

创建social index

curl -XPUT http://192.168.112.128:9200/social

创建article mapping

curl -XPOST http://192.168.112.128:9200/social/article/_mapping

-d

{

    "article": {

             "_all": { #表示article所有字段, 执行分词策略

            "analyzer": "ik_max_word", #索引时分词器

            "search_analyzer": "ik_max_word", #搜索时分词器

            "term_vector": "no", #是否开启向量,用于高亮

            "store": "false"  #是否存储

        },

        "properties": {  #对应article中的字段,执行分词策略

            "title": {    #title 字段

                "type": "string",  #字段类型

                "store": "no",      #是否存储

                "term_vector": "with_positions_offsets",#开启向量,用于高亮

                "analyzer": "ik_max_word",  #索引时分词器

                "search_analyzer": "ik_max_word", #搜索时分词器

                "include_in_all": "true",

                "boost": 8

            }

        }

    }

}

注:ik_max_word: 会将文本做最细粒度的拆分,比如会将中华人民共和国国歌拆分为中华人民共和国,中华人民,中华,华人,人民共和国,人民,,,共和国,共和,,国国,国歌,会穷尽各种可能的组合;

ik_smart: 会做最粗粒度的拆分,比如会将中华人民共和国国歌拆分为中华人民共和国,国歌

 

启动mongodb-connector,将数据同步到es.

测试分词搜索:

curl -XPOST http://192.168.112.128:9200/social/article/_search?pretty=true

-d

{

"query" : { "term" : { "title" : "中国" }}

}

搜索结果:

 

 

五.elasticSearch集群

elasticSearch集群很简单,下面以两节点集群为例。

在一台虚拟机中启两个elasticSearch实例,端口分别为9200,8200.

修改9200elasticSearch.yml配置文件:

network.host: 192.168.112.128  #绑定ip地址,提供外网访问的地址

http.port: 9200  #监听9200端口

cluster.name: elasticSearch#集群名称,elasticSearch根据集群名称自动组成集群

node.name: node-1  #节点名称

discovery.zen.minimum_master_nodes: 2   #集群有2个节点

discovery.zen.ping.unicast.hosts: [192.168.112.128] #其他节点的ip地址

 

修改8200elasticSearch.yml配置文件:

network.host: 192.168.112.128  #绑定ip地址,提供外网访问的地址

http.port: 8200  #监听8200端口

cluster.name: elasticSearch#集群名称,elasticSearch根据集群名称自动组成集群

node.name: node-2  #节点名称

discovery.zen.minimum_master_nodes: 2   #集群有2个节点

discovery.zen.ping.unicast.hosts: [192.168.112.128] #其他节点的ip地址

 

以上配置了一个名叫elasticSearch的集群,集群中有两个节点,分别是node-1node-2.

 

 

六.安装head

    集群安装成功之后,需要对集群中的索引数据、运行情况等信息进行查看,索引需要安装一些插件,方面后续工作. 在此,使用head。通过head,可以查看集群几乎所有信息,还能进行简单的搜索查询,观察自动恢复的情况等等。

进入elasticSearch安装目录的bin下,执行命令:

./plugin install mobz/elasticsearch-head

 

安装完成后(两个节点都要安装)重启elasticSearch,输入地址:

http://192.168.112.128:9200/_plugin/head/

 

 

 

七.参考文档

elasticsearchhttps://www.elastic.co/guide/index.html

mongodb中文社区:http://www.mongoing.com/

mongo-connector: https://github.com/mongodb-labs/mongo-connector

ik analysis: https://github.com/medcl/elasticsearch-analysis-ik

head: https://github.com/mobz/elasticsearch-head

http://www.cnblogs.com/ShawnYuki/p/6818677.html

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值