async search(req: Request, limit: number) {
const zoneResponse = await this.getZoneIDS(req.user)
const zones = !zoneResponse ? [] : zoneResponse.map(zone => zone.zone_id)
const input = req.query.q
let body = {
size: limit,
from: 0,
query: {
bool: {
must: [
{
query_string: {
query: `*${input}*`,
fields: ["ilad", "ilcead", "mahad"],
default_operator: "AND",
},
},
// { terms: { gunid: "GECE" } }
],
// "filter": {
// "geo_bounding_box": {
// "geom": {
// "wkt": "BBOX (28.952045, 28.997099, 41.017083, 41.002053)"
// }
// }
// }
},
},
sort: [{
"kazatarihi": {
"order": "desc"
}
}] as any
}
if (zones.length >= 1) {
body.query.bool.must.push({ terms: { zoneid: zones } } as any)
}
for (const key in req.query) {
// let query = req.query[key]
// switch (true) {
// case req.query[key] !== "" && key !== "q":
// console.log("burda");
// switch (key) {
// case "range":
// body.query.bool.must.push({ range: { kazatarihi: { gte: req.query[key].toString().split(':')[0], lte: req.query[key].toString().split(':')[1] } } } as any)
// break;
// case "arac_say" || "olu_say" || "yarali_say":
// body.query.bool.must.push({ range: { [key]: { gte: req.query[key].toString().split(':')[0], lte: req.query[key].toString().split(':')[1] } } } as any)
// default:
// body.query.bool.must.push({
// match: {
// [key]: {
// query: req.query[key],
// operator: "and"
// }
// }
// } as any)
// break;
// }
// break;
// default:
// throw new AgElasticError("Filteration Error")
// }
if (req.query[key] !== "" && key !== "q") {
if (key === "range") {
body.query.bool.must.push({ range: { kazatarihi: { gte: req.query[key].toString().split(':')[0], lte: req.query[key].toString().split(':')[1] } } } as any)
} else if (key === "arac_say" || key === "olu_say" || key === "yarali_say") {
body.query.bool.must.push({ range: { [key]: { gte: req.query[key].toString().split(':')[0], lte: req.query[key].toString().split(':')[1] } } } as any)
// } else if (key === "gunid") {
// body.query.bool.must.push({ terms: { gunid: ["GECE", "ALACAKARANLIK"] } } as any)
} else {
if (Array.isArray(req.query[key])) {
body.query.bool.must.push({ terms: { [key]: req.query[key] } } as any)
} else {
body.query.bool.must.push({
match: {
[key]: {
query: req.query[key],
operator: "and"
}
}
} as any)
}
}
}
}
for (const key in req.body) {
if (key === "geo_shape") {
body.query.bool["filter"] = { [key]: req.body[key] }
}
else if (key === "geo_distance") {
body.sort.splice(0, 1)
body.sort.push({
_geo_distance: {
geom: req.body[key].geom,
order: "asc",
unit: "km"
}
})
body.size = 1
body.query.bool["filter"] = { [key]: req.body[key] }
}
else if (key === "geo_bounding_box") {
body.query.bool["filter"] = { [key]: req.body[key] }
} else {
throw new AgElasticError("Lütfen filtre gövdenizi değiştiriniz!")
}
}
//console.log(body.query.bool.must[1]["match"])
return await client.search({
index: 'kaza',
body: body
})
}```
curl -k -u "elastic:trafik" "https://172.17.31.211:9200/kaza/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"range": {
"kazatarihi": {
"gte": "2025-03-21T00:00:00.000Z",
"lte": "2025-03-24T23:59:59.999Z",
"format": "strict_date_optional_time"
}
}
},
"size": 10
}'