neptune/core/lib/context.py

47 lines
1.2 KiB
Python
Raw Normal View History

2022-08-09 06:20:30 +00:00
def construct_query(index, net, channel, src, num, size):
2022-08-09 06:20:30 +00:00
# Get the initial query
extra_must = []
if num:
extra_must.append({"match": {"num": num}})
2022-08-09 06:20:30 +00:00
if net:
extra_must.append({"match": {"net": net}})
if channel:
extra_must.append({"match": {"channel": channel}})
2022-08-09 06:20:30 +00:00
types = ["msg", "notice", "action", "kick", "topic", "mode"]
2022-08-09 06:20:30 +00:00
fields = [
"nick",
"ident",
"host",
"channel",
"ts",
"msg",
"type",
"net",
"src",
]
if index == "int":
fields.append("mtype")
query_should = [{"match": {"mtype": x}} for x in types]
else:
query_should = [{"match": {"type": x}} for x in types]
2022-08-09 06:20:30 +00:00
query = {
"size": size,
"query": {
"bool": {
"must": [
{"match": {"src": src}},
{
"bool": {
"should": query_should,
}
},
*extra_must,
2022-08-09 06:20:30 +00:00
]
}
},
2022-08-09 06:20:30 +00:00
"fields": fields,
2022-08-09 06:20:30 +00:00
"_source": False,
}
print("QUERY", query)
return query