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. shopee商品详情接口的应用

    Shopee是东南亚和台湾地区最大的电子商务平台之一,成立于2015年,目前覆盖6个国家和地区.作为一家新兴电商平台,Shopee拥有快速增长的销售额和庞大的用户群体,为开发者提供了丰富的商业机会.其 ...

  2. Solution -「CF 888E」Maximum Subsequence

    Description Link. 给一个数列和 \(m\),在数列任选若干个数,使得他们的和对 \(m\) 取模后最大. Solution 记录一下犯下的一个 nt 错误. 首先我们有一个显然的 D ...

  3. Redis系列内容完整版

    @ 目录 Redis系列之_Redis介绍安装配置 第一章 redis初识 1.1 Redis是什么 1.2 Redis特性(8个) 1.3 Redis单机安装 1.3.1下载安装 1.3.2三种启动 ...

  4. Python基础——深浅拷贝、python内存泄露、你并不了解的format、decimal

    文章目录 深浅拷贝 先看赋值运算 浅拷贝copy 深拷贝deepcopy 相关面试题 python内存泄露 起因 方案 编写安全的代码 弱引用 你并不了解的format.decimal format格 ...

  5. Informix 4gl错误代码信息和更正

    (一)Informix信息和更正 出版日期:6 1996 年 年 1 11 月 0 成功. 操作成功.当 SQL 语句成功地执行时,数据库服务器把这个 SQLCODE 值返回给应用程序. 100 没有 ...

  6. android studio error

    Invalid method receiver.: Invalid method receiver.java.lang.IllegalStateException: Invalid method re ...

  7. http 500 错误

    214 [Thu Sep 09 16:03:54.919334 2021] [:error] [pid 32045] [client 124.238.184.230:23796] script '/v ...

  8. oracle命令3 冷备份

    用户管理的备份:备份脚本要自己写:备份哪些文件要自己选:恢复时要复制那些文件自己判断:恢复需要的日志,自己找: 备份,需要备份保存关键SCN信息的文件:一次完成的备份包括:控制文件,数据文件,日志文件 ...

  9. Vue之键盘事件

    1.使用keydown触发事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  10. 【Java集合】了解集合的框架体系结构及常用实现类,从入门到精通!

    前言 通过Java基础的学习,我们掌握了主要的Java语言基本的语法,同时了解学习了Java语言的核心-面向对象编程思想. 从集合框架开始,也就是进入了java这些基础知识及面向对象思想进入实际应用编 ...