python操作elasticsearch-全文检索、拼写纠错、补全提示
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-全文检索、拼写纠错、补全提示的更多相关文章
- ES系列十三、Elasticsearch Suggester API(自动补全)
1.概念 1.补全api主要分为四类 Term Suggester(纠错补全,输入错误的情况下补全正确的单词) Phrase Suggester(自动补全短语,输入一个单词补全整个短语) Comple ...
- python命令行下tab键补全命令
在python命令行下不能使用tab键将命令进行补全,手动输入又很容易出错. 解决:tab.py #/usr/bin/env python # -*- coding:utf-8 -*- ''' 该模块 ...
- Python 操作 ElasticSearch
Python 操作 ElasticSearch 学习了:https://www.cnblogs.com/shaosks/p/7592229.html 官网:https://elasticsearch- ...
- pycharm输入代码后,没有补全提示
安装pycharm后,输入代码后,没有补全提示 首先检查是否关闭了代码提示,如下图,将红框中"Power Save Mode"前的勾去掉 第二步,如果在输入某些代码时还是没有补全提 ...
- 在Ubuntu16.04中python环境下实现tab键补全
1.编写tab.py的代码: 1 #!/usr/bin/env python 2 # python startup file 3 import sys 4 import readline 5 impo ...
- Python 在 Terminal 中的自动补全
为了在 Terminal 中使用 Python 更加方便,在 home 目录下添加脚本 .pythonstartup,内容如下, 然后在 .bashrc 中添加 export PYTHONSTARTU ...
- python操作elasticsearch增、删、改、查
最近接触了个新东西--es数据库 这东西虽然被用的很多,但我是前些天刚刚接触的,发现其资料不多,学起来极其痛苦,写个文章记录下 导入库from elasticsearch import Elastic ...
- Python操作ElasticSearch
Python批量向ElasticSearch插入数据 Python 2的多进程不能序列化类方法, 所以改为函数的形式. 直接上代码: #!/usr/bin/python # -*- coding:ut ...
- python操作Elasticsearch (一、例子)
E lasticsearch是一款分布式搜索引擎,支持在大数据环境中进行实时数据分析.它基于Apache Lucene文本搜索引擎,内部功能通过ReST API暴露给外部.除了通过HTTP直接访问El ...
- python机器学习实现人脸图片自动补全
人脸自动补全 关注公众号"轻松学编程"了解更多. 1.导包 import matplotlib.pyplot as plt import numpy as np import pa ...
随机推荐
- shopee商品详情接口的应用
Shopee是东南亚和台湾地区最大的电子商务平台之一,成立于2015年,目前覆盖6个国家和地区.作为一家新兴电商平台,Shopee拥有快速增长的销售额和庞大的用户群体,为开发者提供了丰富的商业机会.其 ...
- Solution -「CF 888E」Maximum Subsequence
Description Link. 给一个数列和 \(m\),在数列任选若干个数,使得他们的和对 \(m\) 取模后最大. Solution 记录一下犯下的一个 nt 错误. 首先我们有一个显然的 D ...
- Redis系列内容完整版
@ 目录 Redis系列之_Redis介绍安装配置 第一章 redis初识 1.1 Redis是什么 1.2 Redis特性(8个) 1.3 Redis单机安装 1.3.1下载安装 1.3.2三种启动 ...
- Python基础——深浅拷贝、python内存泄露、你并不了解的format、decimal
文章目录 深浅拷贝 先看赋值运算 浅拷贝copy 深拷贝deepcopy 相关面试题 python内存泄露 起因 方案 编写安全的代码 弱引用 你并不了解的format.decimal format格 ...
- Informix 4gl错误代码信息和更正
(一)Informix信息和更正 出版日期:6 1996 年 年 1 11 月 0 成功. 操作成功.当 SQL 语句成功地执行时,数据库服务器把这个 SQLCODE 值返回给应用程序. 100 没有 ...
- android studio error
Invalid method receiver.: Invalid method receiver.java.lang.IllegalStateException: Invalid method re ...
- http 500 错误
214 [Thu Sep 09 16:03:54.919334 2021] [:error] [pid 32045] [client 124.238.184.230:23796] script '/v ...
- oracle命令3 冷备份
用户管理的备份:备份脚本要自己写:备份哪些文件要自己选:恢复时要复制那些文件自己判断:恢复需要的日志,自己找: 备份,需要备份保存关键SCN信息的文件:一次完成的备份包括:控制文件,数据文件,日志文件 ...
- Vue之键盘事件
1.使用keydown触发事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- 【Java集合】了解集合的框架体系结构及常用实现类,从入门到精通!
前言 通过Java基础的学习,我们掌握了主要的Java语言基本的语法,同时了解学习了Java语言的核心-面向对象编程思想. 从集合框架开始,也就是进入了java这些基础知识及面向对象思想进入实际应用编 ...