47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
def construct_query(index, net, channel, src, num, size):
|
|
# Get the initial query
|
|
extra_must = []
|
|
if num:
|
|
extra_must.append({"match": {"num": num}})
|
|
if net:
|
|
extra_must.append({"match": {"net": net}})
|
|
if channel:
|
|
extra_must.append({"match": {"channel": channel}})
|
|
types = ["msg", "notice", "action", "kick", "topic", "mode"]
|
|
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]
|
|
query = {
|
|
"size": size,
|
|
"query": {
|
|
"bool": {
|
|
"must": [
|
|
{"match": {"src": src}},
|
|
{
|
|
"bool": {
|
|
"should": query_should,
|
|
}
|
|
},
|
|
*extra_must,
|
|
]
|
|
}
|
|
},
|
|
"fields": fields,
|
|
"_source": False,
|
|
}
|
|
print("QUERY", query)
|
|
return query
|