es搜尋引擎 Flask搭建ES搜尋引擎 二

2021-10-12 04:06:39 字數 3576 閱讀 6960

現在正式進入主題:開始使用 flask 搭建 es 搜尋。

配置檔案

config.py

#coding:utf-8

import os

db_username = 'root'

db_password = none # 如果沒有密碼的話

db_host = '127.0.0.1'

db_port = '3306'

db_name = 'flask_es'

class config:

secret_key ="隨機字元" # 隨機 secret_key

sqlalchemy_commit_on_teardown = true # 自動提交

sqlalchemy_track_modifications = true # 自動sql

debug = true # debug模式

sqlalchemy_database_uri = 'mysql+pymysql://%s:%s@%s:%s/%s' % (db_username, db_password,db_host, db_port, db_name) #資料庫url

mail_server = 'smtp.qq.com'

mail_post = 465

mail_username = '[email protected]'

mail_password = '郵箱授權碼'

flask_mail_subject_prefix='m_kepler'

flask_mail_sender=mail_username # 預設傳送人

# mail_use_ssl = true

mail_use_tls = false

mail_debug = false

enable_threads=true

這是乙份相對簡單的 flask config 檔案,當然對於當前專案來說資料庫的連線不是必要的,我只是用 mysql 來作為輔助用,小夥伴們沒有必要配置連線資料庫,有 es 足以。然後郵箱通知這個看個人需求 .....

日誌

logger.py

日誌模組在工程應用中是必不可少的一環,根據不同的生產環境來輸出日誌檔案是非常有必要的。用句江湖上的話來說:  "如果沒有日誌檔案,你死都不知道怎麼死的 ....."

# coding=utf-8

import os

import logging

import logging.config as log_conf

import datetime

import coloredlogs

coloredlogs.default_field_styles = , 'hostname': , 'levelname': , 'name': }

log_dir = os.path.dirname(os.path.dirname(__file__)) + '/logs'

if not os.path.exists(log_dir):

os.mkdir(log_dir)

today = datetime.datetime.now().strftime("%y-%m-%d")

log_path = os.path.join(log_dir, today + ".log")

log_config = ,

'detail': ,

},'handlers': ,

'file': ,

},'loggers': ,}}

log_conf.dictconfig(log_config)

log_v = logging.getlogger('log')

coloredlogs.install(level='debug', logger=log_v)

# # some examples.

# logger.debug("this is a debugging message")

# logger.info("this is an informational message")

# logger.warning("this is a warning message")

# logger.error("this is an error message")

# logger.critical("this is a critical message")

這裡準備好了乙份我常用的日誌配置檔案,可作為常用的日誌格式,直接呼叫即可,根據不同的等級來輸出到終端或 .log 檔案,拿走不謝。

路由

對於 flask 專案而言, 藍圖和路由會讓整個專案更具觀賞性(當然指的是**的閱讀)。

# -*- coding:utf-8 -*-

宣告路由並在 __init__ 檔案中初始化

下面來看看路由的實現(以baike為例)

可以看到我們成功的將 elasticsearch 類初始化並且進行了資料搜尋。

我們使用了 flask 的分頁外掛程式進行分頁並進行了單頁數量的限制,根據 uid 來跳轉到詳情頁中。 

細心的小夥伴會發現我這裡用了個小技巧

以此來保證存放詳情頁面的模板中始終只保留乙個 html 檔案。

專案啟動

一如既往的採用 flask_script 作為專案的啟動方案,確實方便。

黑視窗鍵入

python manage.py runserver

就可以啟動專案,預設埠 5000,訪問 

使用gunicorn啟動

pip install gunicorn

利用配置檔案來啟動 gunicorn 伺服器

專案截圖

專案 github 位址

es 建立索引報錯 ES搜尋引擎基本操作

一.建立索引庫 執行 結果 我已經建立過了,重複執行會報錯 二.建立索引 1.新增索引 2.新增索引 動態新增新列 3.新增指定id的索引 根據id可以直接修改一前的索引 三.搜尋 1.根據id搜尋 2.根據字段搜尋 每乙個 source對應一條索引 3.多條件組合搜尋 query multi ma...

ES搜尋引擎的簡單使用

1.建立索引 c users dell curl xput http localhost 9200 qa 2.建立type properties es學習連線 4.使用crul命令插入es中 新版本一定要新增 h,windows下面要用三個雙引號。python錯誤解決方法 5.在cmd中插入一直遇到...

分布式搜尋引擎es原理

分布式架構原理怎麼寫入?首先呢寫入一條資料,挑選乙個機器,就叫協調節點,協調節點經過hash講資料路由到對應的primary shard 上,primary shard 將資料同步到replica上去,完成以後,協調節點會返回成功響應給客戶端 primary shard會把資料寫在記憶體buffer...