全文检索 elasticsearch oracle,全文搜索引擎ElasticSearch

本文介绍了Elasticsearch作为全文搜索引擎的优势,如文本检索能力和集群扩展性。详细步骤演示了如何在Ubuntu上搭建Elasticsearch和Kibana环境,包括Java的安装、ES与Kibana的配置与启动。通过curl命令展示了如何查询和操作ES数据,还提供了Python访问ES数据的示例。最后,提到了使用Kibana查看和分析ES数据的方法。
摘要由CSDN通过智能技术生成

1. 介绍

ElasticSearch简称ES。

先来看它的用途:如果只是在多个机器同步,存储和检索大量数据,它与数据库的差别在哪儿,为什么非要使用ES呢?

ES是目前全文搜索引擎的首选。全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。简单地说它的优势在于文本检索。ES还可搭建成集群,有良好的扩展性。

如果把ES和数据库相比,ES中包含多个索引index(相当于数据库中的库),索引又包括多个类型type(相当于数据库中的表)。

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。

2. ES环境搭建

(1) 安装8以上的Java版本

$ cd /usr/lib/jvm/

$ tar xvzf jdk-8u181-linux-x64.tar.gz # 解包

$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_181/bin/java # 把新版java纳入版本管理

$ sudo update-alternatives --config java # 选择新版本为默认java版本

用以上方法设置可以省去手动设置JAVA_HOME等环境变量。

(2) 安装ES和Kibana

安装时,需要考虑ES和它的辅助软件kibana的版本匹配,于是在网站https://www.elastic.co/downloads,下载了最新版本的deb包(目前最新为6.3.2)

$ sudo dpkg -i elasticsearch-6.3.2.deb # ubuntu系统下安装

$ sudo dpkg -i kibana-6.3.2-amd64.deb

(3) 配置ES

$ sudo vi /etc/elasticsearch/elasticsearch.yml # 编辑配置文件,也可以通过该配置文件,配置ES集群(一个设成master node, 多个data node,使用同一集群名)

此处介绍最简单的配置,将host替换为你的地址

network.host: 127.0.0.1 # 我用的是本机地址

(4) 启动ES

$ sudo service elasticsearch restart # 重启ES

如果无法启动,也可尝试手动启动服务,命令如下:

$ sudo /usr/share/elasticsearch/bin/elasticsearch -d

此时在浏览器中打开:http://127.0.0.1:9200/,可看到端口已打开。

(5) 配置Kibana

$ sudo vi /etc/kibana/kibana.yml # 修改配置文件

此处介绍最简单的配置,打开对以下行的注释:

server.port: 5601

server.host: "127.0.0.1"

server.name: "testme"

elasticsearch.url: "http://127.0.0.1:9200"

elasticsearch.preserveHost: true

kibana.index: ".kibana"

(6) 启动Kibana

$ sudo service kibana restart

此时在浏览器中,打开http://127.0.0.1:5601,即可看到kibana已启动

3. 使用curl命令访问ES

(1) 查看服务状态(也可以在浏览器中查看)

$ curl 'localhost:9200/_cat/health?v'

(2) 查看当前的Node节点

$ curl 'localhost:9200/_cat/nodes?v'

(3) 新建一个index(类似于数据库操作中的建库)

$ curl -XPUT 'localhost:9200/test_1'

(4) 查看当前所有index

$ curl 'localhost:9200/_cat/indices?v'

(5) 向index中添加数据

$ curl -XPOST http://localhost:9200/test_1/product/ -d '{"author" : "Jack", , "age": 32}'

如果报错406,请加入参数-H,如下:

$ curl -XPOST http://localhost:9200/test_1/product/ -H 'Content-Type: application/json' -d '{"author" : "Xie Yan"}'

插入的index是test_1,type是product,此处可以看到,输入ES数据的格式是相当灵活的,它以key-value的方式存取,不像数据库中固定的字段。

(6) 查询所有数据

$ curl -XPOST 'localhost:9200/test_1/_search' -d ' { "query": { "match_all": {} } }'

(7) 条件查询

$ curl -XGET http://localhost:9200/test_1/_search?q=age:32

4. 使用Kibana查看ES数据

浏览器访问http://127.0.0.1:5601,在Management-> Elasticsearch中即可以查看当前的index和type,及其它们的内容,以及进一步分析。

5. 用Python访问ES数据

(1) 安装python支持库

$ sudo pip install elasticsearch

(2) 代码

from elasticsearch import Elasticsearch

es_host = '127.0.0.1'

es_index = 'test_1'

es = Elasticsearch(es_host)

result = es.search(index=es_index, body={}, size=10)

for item in result['hits']['hits']:

print(item)

(3) 说明

可以在body中加入一些用json串描述的查询条件和需要的字段,条件最多1024个,在size中可设置返回条目的多少,用此方法查询最多能返回一万条。

如果超过一万条,用helpers.scan,详见参考的第三部分

如果只关心其中某几个字段,可以body中指定"_source": ['字段1','字段2'...]。

6. 参考

(1) ES与传统数据库的比较

(2) 搭建Elasticsearch 5.4分布式集群

(3) ElasticSearch scan和scroll功能 python 实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值