我在Elasticsearch中使用脚本输出了一个很好的输出。
{
"fields": [
"_source"
],
"script_fields": {
"vermogen": {
"script_file": "vermogen",
"params": {
"ruimtetemperatuur": 18,
"aanvoertemperatuur": 85,
"retourtemperatuur": 75
}
}
},
"query": {
"bool": {
"must": [],
"must_not": [
{
"constant_score": {
"filter": {
"missing": {
"field": "article.classification.Warmteafgifte EN 442 20gr C - 75/65"
}
}
}
}
]
}
}
}
并输出以下内容:
{
"took": 8,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 5099,
"max_score": 1,
"hits": [
{
"_index": "items",
"_type": "article",
"_id": "AU7PHf_Ltb4sVpfKz-ip",
"_score": 1,
"_source": {
"articleCode": "430003",
"description": "Paneelradiator Henrad Standaard 300-10-800 270W ",
"searchTerms": "Aangelaste strippen Ja | Aansluitcombi 18 onderzijde links/onderzijde rechts Ja | Aansluitcombi 32 zijkant linksboven/zijkant linksonder Ja | Aansluitcombi 37 zijkant linksboven/zijkant rechtsonder Ja | Aansluitcombi 62 zijkant rechtsboven/zijkant linksonder Ja | Aansluitcombi 67 zijkant rechtsboven/zijkant rechtsonder Ja | Aansluitcombi 81 onderzijde rechts/onderzijde links Ja | Aantal standaard aansluitingen 4 | Diepte 47mm | Diepte 47mm | Diepte 47mm | Draadaansluiting Binnendraad | Draadmaat (inch) 1/2\" | Glansgraad Glanzend | Hoogte 300mm | Hoogte 300mm | Hoogte 300mm | Kleur Wit | Lengte 800mm | Lengte 800mm | Lengte 800mm | Materiaal Staal | Max. werkdruk 10bar | Met aftapaansluiting Ja | Met ontluchtingsaansluiting Ja | N-exponent 1.283' | RAL-nummer 9016' | Standaard kleur Ja | Type 10 | Type 10 | Type 10 | Type 10 | Vlakke voorplaat Geen | Warmteafgifte bepaald door erkend EN 442 laboratorium Ja | Warmteafgifte EN 442 20gr C - 75/65 270W | Warmteafgifte EN 442 20gr C - 75/65 270W | Warmteafgifte EN 442 20gr C - 75/65 270W | Waterinhoud 1.51l | convector Paneelconvector Convectorradiator radiator radiator rad. | 0430003 | EC011022 | StandardB Radiator",
"grossPrice": 37.24,
"supplier": "HENRAD ",
"productClass": "EC011022",
"classification": {
"Aangelaste strippen": "Ja",
"Aansluitcombi 11 onderzijde links/onderzijde links": "Nee",
"Aansluitcombi 18 onderzijde links/onderzijde rechts": "Ja",
"Aansluitcombi 32 zijkant linksboven/zijkant linksonder": "Ja",
"Aansluitcombi 37 zijkant linksboven/zijkant rechtsonder": "Ja",
"Aansluitcombi 45 bovenzijde links/bovenzijde rechts": "Nee",
"Aansluitcombi 54 bovenzijde rechts/bovenzijde links": "Nee",
"Aansluitcombi 62 zijkant rechtsboven/zijkant linksonder": "Ja",
"Aansluitcombi 67 zijkant rechtsboven/zijkant rechtsonder": "Ja",
"Aansluitcombi 81 onderzijde rechts/onderzijde links": "Ja",
"Aansluitcombi 88 onderzijde rechts/onderzijde rechts": "Nee",
"Aansluitcombi MB middenboven/middenboven": "Nee",
"Aansluitcombi MO middenonder/middenonder": "Nee",
"Aantal standaard aansluitingen": "4",
"Diepte": "47mm",
"Draadaansluiting": "Binnendraad",
"Draadmaat (inch)": "1/2\"",
"Geschikt voor elektrisch element": "Nee",
"Geschikt voor vochtige ruimte": "Nee",
"Glansgraad": "Glanzend",
"Hoogte": "300mm",
"Kleur": "Wit",
"Lengte": "800mm",
"Materiaal": "Staal",
"Max. werkdruk": "10bar",
"Met aftapaansluiting": "Ja",
"Met aftapper": "Nee",
"Met bevestigingsmateriaal": "Nee",
"Met blindstoppen": "Nee",
"Met bovenbekleding": "Nee",
"Met eenpuntsaansluiting": "Nee",
"Met elektrisch element": "Nee",
"Met ontluchter": "Nee",
"Met ontluchtingsaansluiting": "Ja",
"Met thermostatisch ventiel geïntegreerd": "Nee",
"Met wandconsoles": "Nee",
"Met zijbekleding": "Nee",
"N-exponent": "1.283'",
"RAL-nummer": "9016'",
"Standaard kleur": "Ja",
"Type": "10",
"Vlakke voorplaat": "Geen",
"Warmteafgifte bepaald door erkend EN 442 laboratorium": "Ja",
"Warmteafgifte EN 442 20gr C - 75/65": "270W",
"Waterinhoud": "1.51l"
}
},
"fields": {
"vermogen": [
355.81461733776723
]
}
}
]
}
}
到目前为止一直很好,但我想查询此脚本的输出。这可能吗??欢迎任何帮助!
答案 0 :(得分:1)
为什么不使用script filter,调用执行脚本字段代码的脚本并检查条件。 有关如何试用的更多信息,请访问here。
答案 1 :(得分:0)
if(!_source.classification.empty && (_source.classification["Warmteafgifte EN 442 20gr C - 75/65"] != null) && (!_source.classification["Warmteafgifte EN 442 20gr C - 75/65"].empty) && (_source.classification["N-exponent"] != null) && (!_source.classification["N-exponent"].empty))
{
def wattOrg = (_source.classification["Warmteafgifte EN 442 20gr C - 75/65"].replaceAll("[^\\d.]", "")) as float;
def exponent = _source.classification["N-exponent"].replaceAll("[^\\d.]", "") as float;
def ruimtetemperatuurF = ruimtetemperatuur as float;
def aanvoertemperatuurF = aanvoertemperatuur as float;
def retourtemperatuurF = retourtemperatuur as float;
return (((((aanvoertemperatuurF + retourtemperatuurF) / 2F) - ruimtetemperatuurF) / 50F ) ** exponent) * wattOrg;
}
return -1;
//MSSQL: ROUND( POWER( (((Aanvoertemperatuur + Retourtemperatuur) / 2) - Ruimtetemperatuur) / 50, [N-exponent]) * WattOrg , 0) AS Vermogen
需要注意吗?在Java / Groovy代码编写方面我非常不 ......