获取数据

可以通过爬虫、日志、导入数据到ES中来获取数据源
我这里使用从mysql中批量导入到es数据库中,
如果是大批量的数据,可以使用多线程、分页来进行导入ES集群,同时要注意一些脏数据的处理

# -*- coding: utf-8 -*-import pymysql
from elasticsearch import Elasticsearchdef get_db_data():# 打开数据库连接(ip/数据库用户名/登录密码/数据库名)db = pymysql.connect("localhost", "root", "root123","echart", charset='utf8')# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()sql = "SELECT * FROM details"# 使用 execute()  方法执行 SQL 查询cursor.execute(sql)# 获取所有记录列表results = cursor.fetchall()# 关闭数据库连接db.close()return resultsdef insert_data_to_es():es = Elasticsearch()try:i = -1for row in get_db_data():print(row)i += 1es.index(index='echart', doc_type='test-type', body={'id': i,'updatetime': row[0],'provience': row[1],'city': row[2]})except:print("Error: unable to fecth data")if __name__ == "__main__":insert_data_to_es()

启动ElasticSearch

通过ElasticSearch-head面板 ,查看有echart索引

Flask路由获取ES数据

from elasticsearch import Elasticsearchclass elasticSearch():def __init__(self, index_type: str, index_name: str, ip="127.0.0.1"):# self.es = Elasticsearch([ip], http_auth=('elastic', 'password'), port=9200)self.es = Elasticsearch("localhost:9200")self.index_type = index_typeself.index_name = index_namedef create_index(self):if self.es.indices.exists(index=self.index_name) is True:self.es.indices.delete(index=self.index_name)self.es.indices.create(index=self.index_name, ignore=400)def delete_index(self):try:self.es.indices.delete(index=self.index_name)except:passdef get_doc(self, uid):return self.es.get(index=self.index_name, id=uid)def insert_one(self, doc: dict):self.es.index(index=self.index_name,doc_type=self.index_type, body=doc)def insert_array(self, docs: list):for doc in docs:self.es.index(index=self.index_name,doc_type=self.index_type, body=doc)def search(self, query, count: int = 30):dsl = {"query": {"bool": {"must": [{"match": {"city.keyword": query}}],"must_not": [],"should": []}},"from": 0,"size": 10,"sort": [],"aggs": {}}match_data = self.es.search(index=self.index_name, body=dsl, size=count)return match_data
# 引入Flask库
from flask import Flask, request
from utils import elasticSearch
import jsonify
import json# 实例化,创建对象
app = Flask(__name__)# 设置路由
@app.route('/')
# 定义视图函数
def index():return 'Hello World, this is my first flask web app!'@app.route("/getEs/<query>")
def get_es(query):es = elasticSearch(index_name='echart', index_type='test-type')data = es.search(query)address_data = data['hits']['hits']address_list = []for item in address_data:address_list.append(item['_source'])new_data = json.dumps(address_list)return app.response_class(new_data, content_type='application/json')if __name__ == '__main__':# app.run()中host设置主机,port设置端口,开启调试模式debug,可随程序代码更新得到最新的页面显示,省去了重新启动服务器程序调试的麻烦app.run(host='0.0.0.0', port=5000, debug=True)# 当然也可以直接使用默认参数# app.run()

Flask实现ElasticSearch搜索相关推荐

  1. kotlin + springboot启用elasticsearch搜索

    参考自: http://how2j.cn/k/search-engine/search-engine-springboot/1791.html?p=78908 工具版本: elasticsearch ...

  2. Flask实现简单搜索功能

    Flask实现简单搜索功能 主要功能是通过form的方式传值,再到数据库中查询.下面是数据库的内容我们这里主要是实现对content进行模糊匹配. 首先打开pycharm,构建一个最简单的flask应 ...

  3. 分布式搜索elasticsearch搜索功能【深入】

    elasticsearch搜索功能[深入] 分布式搜索elasticsearch搜索功能[深入] 1.数据聚合 1.1 聚合的种类 1.2 DSL实现聚合 1.2.1 Bucket聚合 1.2.2 M ...

  4. 从提高 Elasticsearch 搜索体验说开去......

    Elasticsearch 最少必要知识实战教程直播回放 1.实战问题 球友提问:怎么搜索才能使得结果是最好的呢? 我这边一个搜索功能,实现做法就是将用ik分词器配合multi查询实现的. 中途也追加 ...

  5. Elasticsearch 搜索条件与聚合结果再进行过滤的多重聚合查询-过滤桶的使用(六)

    Elasticsearch 搜索条件与聚合结果再进行过滤的多重聚合查询-过滤桶的使用(六) 实现的需求:数据分析的大范围是福特的车子,而且还需要上个月这个牌子的汽车的平均售价 需求分析: Rest-A ...

  6. 分布式搜索elasticsearch搜索功能【进阶】

    elasticsearch搜索功能 分布式搜索elasticsearch搜索功能 1.DSL查询文档 1.1 DSL查询分类 1.2 全文检索查询 1.3 精准查询 1.4 地理坐标查询 1.5 组合 ...

  7. Elasticsearch搜索结果处理

    CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:Java学习记录 话题描述 ...

  8. ElasticSearch(搜索服务器)-第一天

    1为什么使用es ElasticSearch 搜索服务器.简称es. 初识es 搜索时数据库的问题 2.1是什么 搜索服务器 软件 2.1.1互联网搜索 https://www.baidu.com/ ...

  9. elasticsearch搜索条件

    elasticsearch搜索条件 1.组合条件 filter:过滤条件 must:and should: OR mustNot:not 2.查询QueryBuilders 2.1 完全匹配(term ...

最新文章

  1. Coursera, Big Data 1, Introduction (week 3)
  2. CSP认证 201312-4有趣的数[C++题解]:组合数、数学
  3. 2020-11-5(安卓)
  4. 【易创课堂】第2期开课啦,大包新年好礼成都等你
  5. VTK:PolyData之DeleteCells
  6. c 汇编语言用标准函数代替,C与汇编的接口技术
  7. 大数据分析关键的5个思维
  8. FlightGear属性树
  9. 强烈推荐这个Java学习文档——不看后悔系列
  10. Win10怎么升级Win11 Win10升级Win11方法介绍
  11. Android特效专辑(十)——点击水波纹效果实现,逻辑清晰实现简单
  12. 2019上半年网络工程师真题解析
  13. 20个免费的SEO网站分析工具
  14. android 点击返回键home键,appium怎么按下系统按键?如按下返回键、home键等等
  15. 高效工作的一个绝招:一心二用(听歌,听知识等)
  16. Knockout.js-111
  17. c51语言case是什么意思,单片机入门-C51语言switch-case语句电路应用实例
  18. 服务器域名解析步骤总结
  19. Codeforces Round #809 (Div. 2)。D2. Chopping Carrots (Hard Version)
  20. JAVA环境变量j配置avac命令不识别不成功注意事项详细

热门文章

  1. 实达已经不是那个实达,而叶成辉还是那个叶成辉
  2. leetcode 优惠活动系统
  3. (附源码)SSM医院门诊分诊系统JAVA计算机毕业设计项目
  4. revit二次开发 创建图纸图框,视图放到图框中心点位置
  5. matlab主要功能,matlab主要功能
  6. Java修炼之凡界篇 筑基期 第05卷 数组 第06话 Arrays 类
  7. 2023计算机毕业设计SSM最新选题之java养老院管理系统的设计于实现78fyn
  8. 浙江大学计算机科学与技术在哪个校区,浙江大学计算机科学与技术学院在哪个校区······...
  9. 哈工大计算机网络spoc笔记
  10. U8登陆时,出现很多账套,如何去掉一些用不到的账套