`
thecloud
  • 浏览: 951039 次
文章分类
社区版块
存档分类
最新评论

搜索引擎–elasticsearch python客户端pyes 建立索引和搜索

 
阅读更多

主机环境:Ubuntu 13.04

Python版本:2.7.4
官方站点:http://www.elasticsearch.com/

中文站点:http://es-cn.medcl.net/

下面一段介绍引用自中文站点:

好吧,假如你建了一个web站点或者是一个应用程序,你就可能会需要添加搜索功能(因为这太有必要了),而事实上让搜索跑起来是有难度的,我们不仅想要搜索的速度快,而且还要安装方便(最好是无痛安装),另外模式定义要非常自由(schema free),可以通过HTTP以JSON格式的数据来进行索引,服务器必须是一直可用的(HA高可用,这个不能丢),从一台机器能够扩展到成千上万台,然后搜索必须是实时的(real-time),使用起来一定要简单、支持多租户,我们需要一整套的解决方案,并且是为云构建的。
“让搜索更简单”,这是我们的宣言,“并且要酷,像盆景一样”
elasticsearch的目标是解决上面的所有问题以及更多。她是开源的(Apache2协议),分布式的,RESTful的,构建在Apache Lucene之上的的搜索引擎.

1 、分布式服务器的安装:
首先下载http://www.elasticsearch.org/download/,选择合适的版本安装,这里直接下载了适合ubuntu的DEB包,下载完成后直接dpkg命令安装。安装完成后可以通过
sudo service elasticsearch start
来启动服务。
2、安装pyes客户端
使用命令
1 pip install pyes
安装elasticsearch的python的组件。
3、安装pyes的中文分词组件
然后移动的elasticsearch的安装目录/usr/share/elasticsearch/analysis-ik/,
修改配置文件/etc/elasticsearch/elasticsearch.yml
设置插件的路径
path.plugins: /usr/share/elasticsearch/plugins
并添加分词组建配置
1 index:
2 analysis:
3 analyzer:
4 ik:
5 alias: [ik_analyzer]
6 type: org.elasticsearch.index.analysis.IkAnalyzerProvider
最后下载IK分词使用的词典
  • cd /etc/elasticsearch
  • wget http://github.com/downloads/medcl/elasticsearch-analysis-ik/ik.zip –no-check-certificate
  • unzip ik.zip
  • rm ik.zip
重启elasticsearch服务即可。
4、建立索引
01 #!/usr/bin/env python
02 #-*- coding:utf-8-*-
03 importos
04 importsys
05 frompyesimport*
06
07 INDEX_NAME='txtfiles'
08
09 classIndexFiles(object):
10 def__init__(self,root):
11 conn=ES('127.0.0.1:9200', timeout=3.5)#连接ES
12 try:
13 conn.delete_index(INDEX_NAME)
14 #pass
15 except:
16 pass
17 conn.create_index(INDEX_NAME)#新建一个索引
18
19 #定义索引存储结构
20 mapping={u'content': {'boost':1.0,
21 'index':'analyzed',
22 'store':'yes',
23 'type': u'string',
24 "indexAnalyzer":"ik",
25 "searchAnalyzer":"ik",
26 "term_vector":"with_positions_offsets"},
27 u'name': {'boost':1.0,
28 'index':'analyzed',
29 'store':'yes',
30 'type': u'string',
31 "indexAnalyzer":"ik",
32 "searchAnalyzer":"ik",
33 "term_vector":"with_positions_offsets"},
34 u'dirpath': {'boost':1.0,
35 'index':'analyzed',
36 'store':'yes',
37 'type': u'string',
38 "indexAnalyzer":"ik",
39 "searchAnalyzer":"ik",
40 "term_vector":"with_positions_offsets"},
41 }
42
43 conn.put_mapping("test-type", {'properties':mapping}, [INDEX_NAME])#定义test-type
44
45 self.addIndex(conn,root)
46
47 conn.default_indices=[INDEX_NAME]#设置默认的索引
48 conn.refresh()#刷新以获得最新插入的文档
49
50 defaddIndex(self,conn,root):
51 printroot
52 forroot, dirnames, filenamesinos.walk(root):
53 forfilenameinfilenames:
54 ifnotfilename.endswith('.txt'):
55 continue
56 print"Indexing file ", filename
57 try:
58 path=os.path.join(root,filename)
59 file=open(path)
60 contents=unicode(file.read(),'utf-8')
61 file.close()
62 iflen(contents) >0:
63 conn.index({'name':filename,'dirpath':root,'content':contents},INDEX_NAME,'test-type')
64 else:
65 print'no contents in file %s',path
66 exceptException,e:
67 printe
68
69 if__name__=='__main__':
70 IndexFiles('./txtfiles')

5、搜索并高亮显示
01 #!/usr/bin/env python
02 #-*- coding:utf-8 -*-
03
04 importos
05 importsys
06 frompyesimport*
07
08 conn=ES('127.0.0.1:9200', timeout=3.5)#连接ES
09 sq=StringQuery(u'世界末日','content')
10 h=HighLighter(['<b>'], ['</b>'], fragment_size=20)
11
12 s=Search(sq,highlight=h)
13 s.add_highlight("content")
14 results=conn.search(s,indices='txtfiles',doc_types='test-type')
15
16 list=[]
17 forrinresults:
18 if(r._meta.highlight.has_key("content")):
19 r['content']=r._meta.highlight[u"content"][0]
20 list.append(r)
21 printr['content']
22 printlen(list)
分享到:
评论

相关推荐

    ES查询客户端,elasticsearch可视化工具 elasticsearch查询客户端

    Elasticsearch查询客户端是用于与ES服务器通信的软件,它们提供了多种语言的API,允许开发者以编程方式执行索引、搜索、更新和删除等操作。常见的Elasticsearch客户端包括: - **Jest**:一个轻量级的Java REST...

    【Elasticsearch 的官方 Python 客户端】elasticsearch-py-main

    该客户端支持 Elasticsearch 的所有功能,包括索引文档、搜索和聚合、管理集群和节点等。通过使用 Python 编程语言,用户可以在应用程序中集成 Elasticsearch 的强大搜索和分析功能。elasticsearch-py-main 具有良好...

    superelasticsearch, 官方 Elasticsearch python 客户端的扩展版本.zip

    superelasticsearch, 官方 Elasticsearch python 客户端的扩展版本 superelasticsearchsuperelasticsearch是扩展了 Elasticsearch 库的特定版本,以便在它上面提供一些实用功能,使得使用 Elasticsearch更加简单。...

    ElasticSearch客户端工具

    ElasticSearch客户端工具是用于管理和操作Elasticsearch(ES)集群的重要软件,它们提供了一种直观、高效的方式来查看和管理ES集群的状态、索引、文档以及执行查询和分析任务。这些工具极大地简化了对Elasticsearch...

    分布式搜索引擎Elasticsearch开发实战基础篇 (ElasticSearch、ELK、搜索引擎、Lucene).rar

    分享一套完整版视频课程——分布式搜索引擎Elasticsearch开发实战基础篇 (ElasticSearch、ELK、搜索引擎、Lucene),本教程旨在带领大家进入搜索引擎领域,从无到有,深入浅出的讲解了什么是搜索引擎,搜索引擎的...

    ES查询客户端,elasticsearch可视化工具

    elasticsearch的客户端比较出名的就是elasticsearch head 和Kibana了, 但是elasticsearch head已经停止更新,且样式老旧,功能不全; 而Kibana虽功能全面,但是启动麻烦,大部分功能用不上,很不灵活,所以采用vite...

    elasticsearch_python3客户端操作详细

    详细介绍elasticsearch在python3环境下完成增删改查(多种查询方式)

    Elasticsearch_python使用文档

    Elasticsearch 是一个开源的分布式全文搜索引擎,它提供了一个分布式、多用户能力的全文搜索引擎,基于 Lucene 库。Python 客户端库 Elasticsearch-py 则允许开发者轻松地与 Elasticsearch 服务器进行交互。本文档将...

    Python-elasticsearchdslpyElasticsearch的官方高级Python客户端

    Elasticsearch 是一个分布式、全文搜索引擎,常用于实时数据分析和大规模数据检索。它以其高效、灵活和可扩展性而闻名。为了方便Python开发者与Elasticsearch进行交互,官方提供了`elasticsearch-dsl-py`库,这是一...

    PyPI 官网下载 | elasticsearch7-7.10.0a1.tar.gz

    通过这个客户端,Python开发者可以轻松地执行索引、搜索、更新、删除等操作,实现与Elasticsearch集群的无缝集成。 **安装Elasticsearch Python客户端** 要使用`elasticsearch7-7.10.0a1`,首先需要解压`tar.gz`...

    基于SSM架构结合全文搜索引擎ElasticSearch的电影搜索系统项目源码.zip

    基于SSM架构结合全文搜索引擎ElasticSearch的电影搜索系统项目源码.zip 基于SSM架构结合全文搜索引擎ElasticSearch的电影搜索系统项目源码.zip 基于SSM架构结合全文搜索引擎ElasticSearch的电影搜索系统项目源码.zip...

    分布式搜索引擎ElasticSearch思维导图

    分布式搜索引擎ElasticSearch思维导图,ES思维带图。分布式搜索引擎ElasticSearch思维导图,ES思维带图。分布式搜索引擎ElasticSearch思维导图,ES思维带图。分布式搜索引擎ElasticSearch思维导图,ES思维带图。...

    文件服务器搜索引擎,elasticsearch,fscrawler,Django架构

    在文件服务器搜索引擎中,Elasticsearch 负责索引和搜索文件内容,提供高效的全文检索服务。 2. **fscrawler**:fscrawler 是一个用于爬取本地文件系统或网络共享,并将文件内容索引到 Elasticsearch 的工具。它...

    elasticsearch v2.2.0客户端

    Elasticsearch v2.2.0是Elasticsearch的一个重要版本,它是一个开源的全文搜索引擎,基于Lucene构建,设计为分布式、 RESTful 风格的搜索和数据分析引擎。这个版本的客户端允许开发者轻松地集成Elasticsearch到他们...

    Elasticsearch数据库的连接客户端

    图形化界面连接Elasticsearch,方便开发人员操作,elasticsearch的客户端比较出名的就是elasticsearch head 和Kibana了, 但是elasticsearch head已经停止更新,且样式老旧,功能不全; 而Kibana虽功能全面,但是启动...

    基于ES构建的一个简单的检索式问答系统,主要用来学习下python相关的ES操作.zip

    Elasticsearch是一种分布式、实时的搜索和分析引擎,广泛应用于日志分析、信息检索、全文搜索引擎等领域。Python因其易用性和丰富的库支持,成为与Elasticsearch交互的理想语言。 首先,我们需要安装Elasticsearch...

    maven springmvc集成elasticsearch客户端项目

    "es搜索引擎"标签进一步确认了我们正在处理一个与Elasticsearch相关的项目,Elasticsearch通常用于处理大规模数据的搜索和分析任务。 **文件名称列表详解:** 1. **.classpath** - 这是一个Eclipse项目文件,包含...

    es客户端工具,便捷操作es全文检索工具的增删改查

    Elasticsearch(简称ES)是一种强大的开源搜索引擎,广泛应用于大数据分析和全文检索领域。作为Big Data解决方案的一部分,它以其高效、灵活和可扩展性而闻名。本文将深入探讨如何使用客户端工具来便捷地进行ES的增...

    elasticsearch python 查询的两种方法

    elasticsearch python 查询的两种方法,具体内容如下所述: from elasticsearch import Elasticsearch es = Elasticsearch res1 = es.search(index=2018-07-31, body={query: {match_all: {}}}) print(es1) {'_...

    elasticsearch搜索引擎框架es ORM框架

    elasticsearchElasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本....

Global site tag (gtag.js) - Google Analytics