refactor httpdemo 1

This commit is contained in:
2023-04-13 09:46:37 +02:00
parent e757290649
commit d95fa436eb
2 changed files with 35 additions and 56 deletions

View File

@@ -3,66 +3,32 @@ from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi import Request
from elasticsearch import Elasticsearch
#from elasticsearch import Elasticsearch
import sys
import elastic_transport
ELASTIC_HOST = "http://localhost:9200"
client = Elasticsearch(ELASTIC_HOST, verify_certs=False)
from searching import es_search, es_query
import json
import yaml
app = FastAPI(debug=True)
templates = Jinja2Templates(directory="./httpdemo")
#app.mount("/", StaticFiles(directory="/"))
#@app.get("/")
#def read_root():
# return {"Hello"}
query ={
"multi_match":{
"query": ELASTIC_QUERY,
"fields": ["title^20","title.ngrams^10","text","text.ngrams"],
"type": "most_fields"
}
}
highlight = {
"fields": {
"title": {},
"text": {}
}
}
@app.get("/")
def serve_home(request: Request, q: str):
query= {
"bool":{
"should": [{"wildcard": {"body": {"value": "*%s*"% q, "case_insensitive": True }}},
{"wildcard": {"title": {"value": "*%s*" % q, "case_insensitive": True }}}],
"minimum_should_match": 1
}}
query = {
"match": {
"body": q
}
}
def serve_home(request: Request, q: str=""):
try:
resp = client.search(
index = "posts2",
size=10,
#analyze_wildcard=True,
#q="sdf*",
query= query
)
resp = es_search(q)
query=es_query(q)
message = "found ...?"
except (elastic_transport.ConnectionError, elastic_transport.ConnectionTimeout) as e:
print(e,sys.stderr)
results=[]
resp={}
query={}
message = f"cannot reach the search server! : %s" % e
else:
results=resp["hits"]["hits"]
return templates.TemplateResponse("index.html", context= {"request": request,"results": results})
templates.env.filters["json"]=lambda x: yaml.dump(dict(x))
return templates.TemplateResponse("index.html", context= {
"request": resp,"results": results,"message": message, "query": query})

View File

@@ -1,10 +1,23 @@
<html>
<body>
<h1>Hello Index httpdemo</h1>
<p><pre>{{request}}</pre></p>
<ul>{% for r in results %}
<li><a href="{{r['url'}}">
{{r["body"]|safe}}
</li></a>
<h1>Suche:</h1>
<p><form action="" href="#"><input name="q" /></form></p>
<p><b>Message:</b>{{message}}</p>
<ul style="list-style: none;">
{% for r in results %}
<li>
<a href="https://{{r['_source']['url']}}">
{{r["_source"]["title"]|safe }}
</a>
{% for hh in r["highlight"] %}
{% for h in r["highlight"][hh] %}
{{ h |safe}} <br />
{% endfor %}
{% endfor %}
</li>
{% endfor %}
</ul>
</body>
</body>
</html>