`

ElasticSearch的python使用--pyes

阅读更多

问题描述:ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。在工作中的后台网站要提供基于ElasticSearch的后台服务,而后台的主要语言工具是python,操作ElasticSearch要用到pyes库,就需要了解里面的函数,英文API不好懂,个人根据理解做了些测试。

 

环境工具:python2.6  ElasticSearch0.90.2  pyes

 

解决过程:1. 使用pip install pyes 或者 easy_install pyes安装pye
                   2. 测试使用pyes官方文档或者其他pyes文档的API的增删改
import pyes
conn = pyes.ES('127.0.0.1:9200')
conn.create_index("human") #human 是一个新的索引库,相当于create database操作
mapping = {u'firstname': {'index': 'analyzed', #使用分词器
                      'type': u'string',
                  'analyzer':'ik'}, #分词器为ik
           u'lastname': {'index': 'not_analyzed',
                     'type': u'string'},
       u'age': {'index': 'not_analyzed', #不使用分词器
              'type': u'long'}} #mapping 是字段,相当于数据库的表的列名
conn.put_mapping("man", {'properties':mapping}, ["human"]) #在human库中创建man,相当于create table操作
conn.put_mapping("woman", {'properties':mapping}, ["human"]) #woman同样相当于一张表
conn.index({'firstname':'David', 'lastname':'White', 'age':18}, 'human', 'man', 'David White', True) #向human的man中添加索引数据,相当于insert into操作
conn.index({'firstname':'Suzan', 'lastname':'Black', 'age':28}, 'human', 'woman', 'Suzan Black', True) #向human的woman中添加索引数据
conn.index({'firstname':'Uni', 'lastname':'Lavender', 'age':18}, 'human', 'man', 'Uni Lavender', True)
conn.index({'firstname':'Jann', 'lastname':'White', 'age':18}, 'human', 'woman', 'Jann White', True)
conn.index({'firstname':'Suzan', 'lastname':'White', 'age':18}, 'human', 'woman', 'Suzan White', True) #注意第四个参数是index的id,具有唯一性,因此更新数据,可以按照id使用index即可conn.index({'firstname':'Jann', 'lastname':'White', 'age':28}, 'human', 'woman', 'Jann White', True) #将年龄由18更新到28

 

                   3. 测试使用pyes官方文档的API的查询

使用res = conn.search(pyes.BoolQuery(must=must), 'human', 'woman', start=0, size=10, sort='age')查询,支持分页

        a. 查找firstname为Suzan的女人的index数据

条件:must = pyes.StringQuery('Suzan', ['firstname',]) #must = pyes.StringQuery('Suzan', 'firstname')

相当于sql查询 select * from human.woman where firstname regexp '[^a-zA-Z]Suzan[^a-zA-Z]'

        b. 查找lastname为white的女人的index数据

条件:must = pyes.StringQuery('White', ['lastname',]) #must = pyes.StringQuery('White', ['lastname',])或者must = pyes.TermQuery('lastname', 'White')

相当于sql查询 select * from human.woman where lastname = 'White'

        c. 查找age为18,20,28的女人的index数据

条件:must = pyes.TermsQuery('age', [18,28])

相当于sql查询 select * from human.woman where age=18 or age = 28

        d. 查找age为18,28并且firstname为Suzan的女人的index数据

条件:must = [pyes.TermsQuery('age', [18,28]), pyes.StringQuery('Suzan', 'firstname')]

相当于sql查询 select * from human.woman where (age=18 or age = 28) and firstname = 'Suzan'

        e. 查找firstname或者lastname中出现Rich单词的女人的index数据

条件:must = pyes.StringQuery('Suzan', ['firstname',‘lastname’], default_operator='or')

相当于sql查询 select * from human.woman where firstname regexp '[^a-zA-Z]Suzan[^a-zA-Z]' or lastname regexp '[^a-zA-Z]Suzan[^a-zA-Z]'

        f. 查找firstname并且lastname中出现Rich单词的女人的index数据

条件:must = pyes.StringQuery('Suzan', ['firstname',‘lastname’], default_operator='and')

相当于sql查询 select * from human.woman where firstname regexp '[^a-zA-Z]Suzan[^a-zA-Z]' and lastname regexp '[^a-zA-Z]Suzan[^a-zA-Z]'

        g. 查找年龄在18到28之间的女人的index数据

条件:must = pyes.RangeQuery(pyes.ESRange('age', from_value=18, to_value=28))

相当于sql查询 select * from human.woman where age between 18 and 28]

        h. 查找以Whi开头的lastname的女人的index数据

条件:must = pyes.PrefixQuery('lastname', 'Whi')

相当于sql查询 select * from human.woman where lastname like 'Whi%'

(未完待续.....)

 

搜索小知识:可以借助百度实现站内全文搜索,将http://www.baidu.com/s?wd=网络中心&pn=10&ct=2097152&ie=utf-8&si=www.stcsm.gov.cn&format=json(绿色部分替换成关键词,红色部分替换站内地址)

分享到:
评论

相关推荐

    7.17.1系列Elasticsearch的elasticsearch-analysis-ik分词器

    适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...

    最新版 elasticsearch-analysis-ik-8.7.0.zip

    最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip

    elasticsearch-rest-client-6.8.3-API文档-中文版.zip

    赠送jar包:elasticsearch-rest-client-6.8.3.jar; 赠送原API文档:elasticsearch-rest-client-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.8.3-sources.jar; 赠送Maven依赖信息文件:elastic...

    elasticsearch-analysis-ik-7.10.0.zip下载

    在使用过程中,可以通过Elasticsearch的配置文件(如elasticsearch.yml)设置分词器参数,或者在创建索引时指定分词器类型。 总的来说,"elasticsearch-analysis-ik-7.10.0.zip"是Elasticsearch 7.10.0版的一个关键...

    elasticsearch-analysis-pinyin-7.4.0 es拼音分词器7.4.0

    Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于大数据领域的全文检索。它以其高可扩展性、实时性能以及丰富的分析能力著称。在中文环境下,由于汉字的复杂性,分词是实现有效搜索的关键步骤。为此,...

    最新版elasticsearch-analysis-ik-8.8.2.zip

    最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip

    elasticsearch-analysis-ik-7.16.3.zip

    在现代大数据分析和搜索引擎领域,Elasticsearch(ES)因其高效、灵活的全文检索能力而备受青睐。然而,对于中文这样的多字节语言,如何准确地进行分词是关键。这时,我们就需要引入专门的中文分词器。本文将详细...

    elasticsearch-HQ-master.zip

    2. 使用pip安装必要的Python库,如Flask(用于构建Web应用)和elasticsearch(用于与Elasticsearch通信)。 3. 修改配置文件,如`hq.py`,设置Elasticsearch集群的URL和其他选项。 4. 运行`python hq.py`启动Elastic...

    elasticsearch-analysis-ik-7.16.2.zip

    《Elasticsearch分词器:elasticsearch-analysis-ik-7.16.2深度解析》 ...理解并熟练掌握IK分词器的使用,能够极大地提升Elasticsearch在中文环境下的检索性能,为大数据分析和信息检索带来显著提升。

    elasticsearch-analysis-ik-7.10.2.zip

    Elasticsearch(ES)作为一个开源的全文搜索引擎,因其强大的搜索功能和分布式特性而备受青睐。然而,对于中文这种复杂的语言,分词是搜索引擎理解文本的关键步骤。本文将详细介绍elasticsearch-analysis-ik-7.10.2...

    elasticsearch-analysis-ik 7.10.0 分词器

    5. **插件化设计**:方便与其他 Elasticsearch 插件配合使用,如拼音插件、同义词插件等。 **安装与使用** 安装 Elasticsearch-analysis-ik 插件非常简单,只需在 Elasticsearch 根目录下执行命令 `bin/elastic...

    elasticsearch-analysis-ik-7.3.2.zip

    总的来说,"elasticsearch-analysis-ik-7.3.2"是ES进行中文文本处理的重要工具,通过合理的配置和使用,可以极大地提升中文搜索的准确性和效率。对于处理中文信息的ES应用,选择并正确使用IK分词器是提升服务质量的...

    elasticsearch-analysis-dynamic-synonym-7.2.0

    Elasticsearch(ES)是一款功能强大的全文搜索引擎,广泛应用于数据检索、数据分析等领域。为了提高搜索的准确性和便利性,Elasticsearch提供了丰富的分析插件,其中"elasticsearch-analysis-dynamic-synonym-7.2.0...

    elasticsearch-analysis-ik-8.2.0.zip

    Elasticsearch(ES)作为一款强大的开源搜索引擎,广泛应用于大数据处理和信息检索领域。在处理中文文本时,选择合适的分词器至关重要,elasticsearch-analysis-ik-8.2.0.zip 提供了针对 Elasticsearch 8.2.0 版本的...

    elasticsearch-jieba-plugin 8.8.2.zip

    在使用`elasticsearch-jieba-plugin`时,你需要配置Elasticsearch的索引设置,指定使用jieba分词器。在创建索引或者更新现有索引的映射(mapping)时,可以通过设置`analyzer`字段来指定分词器。例如: ```json PUT...

    elasticsearch-x-content-6.3.0-API文档-中文版.zip

    赠送jar包:elasticsearch-x-content-6.3.0.jar; 赠送原API文档:elasticsearch-x-content-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-x-content-6.3.0-sources.jar; 赠送Maven依赖信息文件:elasticsearch-x...

    elasticsearch-analysis-dynamic-synonym-7.12.1.zip

    标题 "elasticsearch-analysis-dynamic-synonym-7.12.1.zip" 指的是一个针对Elasticsearch的自定义同义词分析插件,该插件版本为7.12.1。Elasticsearch是一款流行的开源搜索引擎,用于处理、存储、搜索和分析大量...

    elasticsearch-analysis-ik-7.6.1.zip

    Elasticsearch 分析插件是增强其搜索和分析能力的重要工具,其中`elasticsearch-analysis-ik`是一款广泛使用的中文分词插件。标题中的"elasticsearch-analysis-ik-7.6.1.zip"指的是该插件的7.6.1版本,它专为Elastic...

    Jieba中文分词插件elasticsearch-jieba-plugin.zip

    使用checkout tag: v5.1.2git checkout v5.1.2运行gradle buildPluginZip创建 directory ${path.home}/plugins/jieba复制zip 文件到分词插件cp build/distributions/elasticsearch-jieba-plugin-5.1.2.zip ${...

    elasticsearch-analysis-pinyin-6.8.2.zip

    同时,还需要通过Elasticsearch的命令行工具进行插件安装,例如使用`bin/elasticsearch-plugin install file:///path/to/elasticsearch-analysis-pinyin-6.8.2.zip`命令。 值得注意的是,虽然拼音分词插件大大提高...

Global site tag (gtag.js) - Google Analytics