1、首先安装elasticsearch包

pip install elasticsearch (一般会包含新旧版本,如果想要特定的版本,比如5.x 可以在后面加5数字)

"""
1、首先安装elasticsearch包
pip install elasticsearch (一般会包含新旧版本,如果想要特定的版本,比如5.x 可以在后面加5数字)
""" from elasticsearch import Elasticsearch hosts = [
"http://127.0.0.1:9200"
] es = Elasticsearch(hosts=hosts,
http_auth=("elastic", "swq1996"),
# basic_auth=("elastic", "swq1996"), # 这个没用..
# 启动前嗅探es集群服务器
sniff_on_start=True,
# es集群服务器节点连接异常时是否刷新es节点信息
sniff_on_connection_fail=True,
# 每60秒刷新节点信息
sniffer_timeout=60) def test():
ret = es.get(index="articles", doc_type="article", id="24")
print(ret["_source"]["title"]) # print(es.info(human=True)) def test_search(search_text):
"""全文检索"""
body_dict = {
"_source": ["title"],
"query": {
"match": {
"title": search_text
}
}
}
ret = es.search(index="articles", doc_type="article", body=body_dict)
print(ret) def suggest_test(search_text):
"""拼写纠错"""
body_dict = {
"_source": ["title"],
"suggest": {
"text": search_text, # 用户输入的文本(也就是想要被纠错的文本)
"word-phrase": { # //这个名字自己起的,会在查询结果中显示
"phrase": {
"field": "title", # 指定类型的字段
"size": 3
}
}
}
}
ret = es.search(index="articles", doc_type="article", body=body_dict)
print(ret) def completion_suggest_test(search_text):
"""补全提示"""
body_dict = {
"suggest": { # 建议查询的关键词
"title-suggest": { # 自己起名 用于获取结果
"prefix": "地区", # 用户输入的需要补全的关键词
"completion": { # 补全建议
"field": "suggest" # 从当前表中的哪个字段(suggest)提供补全建议
}
}
}
}
ret = es.search(index="completions", doc_type="words", body=body_dict)
print(ret) def dsl_test():
# https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html
from elasticsearch6_dsl import Search # 全文检索
# search = Search(using=es, index="articles")
# search.source("title,user_id")
# search.query("match", title="中国")
# search.filter("term", status=2)
# search.sort("-user_id")
# resp = search.execute()
# print(resp.to_dict()) # 分页,直接用切片的方式重新赋值即可
# # {"from": 10, "size": 10}
# search = search[10:20] # 拼写纠错
search = Search(using=es, index="articles")
# 第三个参数:term、phrase 、completion
search = search.suggest("my_suggest", "pyth", phrase={'field': 'title'})
# suggest.doc_type("article") # 他这里不需要指定类型了...相对于你用字典当作body传好了不少
ret = search.execute()
print(ret.suggest.my_suggest)
print(ret.suggest.my_suggest[0].options[0].text) # 输入补全
search = Search(using=es, index="completions")
search = search.suggest("my_completion", "地区", completion={'field': 'suggest'})
ret = search.execute()
print(ret.suggest.my_completion) if __name__ == '__main__':
# test()
# test_search("中国")
# suggest_test("pyth")
# completion_suggest_test("地区")
dsl_test()

elasticsearch-dsl

原生操作elasticsearch是挺麻烦的,容易写错。因为有些查询要嵌套太多字典了.....

所以有一个叫elasticsearch-dsl的包,安装也是要根据es的版本来对应安装。

参考:https://elasticsearch-dsl.readthedocs.io/en/latest/

python操作elasticsearch-全文检索、拼写纠错、补全提示的更多相关文章

  1. ES系列十三、Elasticsearch Suggester API(自动补全)

    1.概念 1.补全api主要分为四类 Term Suggester(纠错补全,输入错误的情况下补全正确的单词) Phrase Suggester(自动补全短语,输入一个单词补全整个短语) Comple ...

  2. python命令行下tab键补全命令

    在python命令行下不能使用tab键将命令进行补全,手动输入又很容易出错. 解决:tab.py #/usr/bin/env python # -*- coding:utf-8 -*- ''' 该模块 ...

  3. Python 操作 ElasticSearch

    Python 操作 ElasticSearch 学习了:https://www.cnblogs.com/shaosks/p/7592229.html 官网:https://elasticsearch- ...

  4. pycharm输入代码后,没有补全提示

    安装pycharm后,输入代码后,没有补全提示 首先检查是否关闭了代码提示,如下图,将红框中"Power Save Mode"前的勾去掉 第二步,如果在输入某些代码时还是没有补全提 ...

  5. 在Ubuntu16.04中python环境下实现tab键补全

    1.编写tab.py的代码: 1 #!/usr/bin/env python 2 # python startup file 3 import sys 4 import readline 5 impo ...

  6. Python 在 Terminal 中的自动补全

    为了在 Terminal 中使用 Python 更加方便,在 home 目录下添加脚本 .pythonstartup,内容如下, 然后在 .bashrc 中添加 export PYTHONSTARTU ...

  7. python操作elasticsearch增、删、改、查

    最近接触了个新东西--es数据库 这东西虽然被用的很多,但我是前些天刚刚接触的,发现其资料不多,学起来极其痛苦,写个文章记录下 导入库from elasticsearch import Elastic ...

  8. Python操作ElasticSearch

    Python批量向ElasticSearch插入数据 Python 2的多进程不能序列化类方法, 所以改为函数的形式. 直接上代码: #!/usr/bin/python # -*- coding:ut ...

  9. python操作Elasticsearch (一、例子)

    E lasticsearch是一款分布式搜索引擎,支持在大数据环境中进行实时数据分析.它基于Apache Lucene文本搜索引擎,内部功能通过ReST API暴露给外部.除了通过HTTP直接访问El ...

  10. python机器学习实现人脸图片自动补全

    人脸自动补全 关注公众号"轻松学编程"了解更多. 1.导包 import matplotlib.pyplot as plt import numpy as np import pa ...

随机推荐

  1. 2015-CS

    2015-CS 数据库部分 create table [EMPLOYEE]( [EmpNo] varchar(10) not null primary key, [EmpName] varchar(1 ...

  2. Solution -「LOCAL 28731」「重庆市 2021 中学友谊赛」Rainyrabbit 爱求和

    Description Link. \(\operatorname{Rainyrabbit}\) 是一个数学极好的萌妹子,近期他发现了一个可爱的函数: \[f(n,m,k)=\sum_{d=1}^n ...

  3. NineData SQL 窗口支持深色模式,让程序员不再怕长期用眼!

    您有没有尝试过被明亮的显示器闪瞎眼的经历? 在夜间或低光环境下,明亮的界面会导致许多用眼健康问题,例如长时间使用导致的眼睛疲劳.干涩和不适感,同时夜间还可能会抑制褪黑素分泌,给您的睡眠质量带来影响. ...

  4. DB2---创建返回结果集的函数

    在数据验证中,经常遇到需返回结果集的操作,故整理一个返回结果集的DB2函数,便于后期查阅 1.准备测试表 /*创建测试表:设置结果集的属性为表字段*/ CREATE TABLE Test_EXWAST ...

  5. Vue2系列(lqz)——Vue基础

    文章目录 Vue介绍 一 模板语法 1.1 插值 1.1.1 概述 1.1.2 案例 二 指令 2.1 文本相关指令 2.2 事件指令 2.3 属性指令 三 class与style 3.1 class ...

  6. python---简单最大类间方差法(OTSU)算法

    from matplotlib import pyplot as plt # cv2.imread()用于读取图片文件 # imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形 ...

  7. 英方软件和dell emc对比理解

    英方软件和dell emc对比理解: 英方软件 功能 对比dell emc理解 i2Availability 1.英方实现业务高可用的时候,要求在异地运行与生产机环境一致的备机,备机数据实时与生产机同 ...

  8. Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

    背景 这是某硅谷的redis案例,主要问题是解决计数器和人员记录的事务操作 按照某硅谷的视频敲完之后出现这样乱码加报错的问题 乱码的问题要去tomcat根目录的conf文件夹下修改logging.pr ...

  9. LVS负载均衡群集——其二

    LVS-DR 通信四元素:源IP,源端口,目的IP,目的端口 主机A(客户端)-->VIP 主机B(调度器) 主机A(客户端)<--VIP 主机C(节点服务器) 通信五元素:源IP,源端口 ...

  10. VRRP相关简述

    VRRP 诞生原因 单网关,出问题时,旗下所有主机无法通信. 多网关,容易产生网关冲突. 而,VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关 ...