def to_es_script(self, schema): term = FirstOp("first", self.term).partial_eval() value = term.to_es_script(schema) if isinstance(value.frum, CoalesceOp): return CoalesceOp( "coalesce", [StringOp("string", t).partial_eval() for t in value.frum.terms]).to_es_script(schema) if value.type == BOOLEAN: return EsScript(miss=self.term.missing().partial_eval(), type=STRING, expr=value.expr + ' ? "T" : "F"', frum=self) elif value.type == INTEGER: return EsScript(miss=self.term.missing().partial_eval(), type=STRING, expr="String.valueOf(" + value.expr + ")", frum=self) elif value.type == NUMBER: return EsScript(miss=self.term.missing().partial_eval(), type=STRING, expr=expand_template(TO_STRING, {"expr": value.expr}), frum=self) elif value.type == STRING: return value else: return EsScript(miss=self.term.missing().partial_eval(), type=STRING, expr=expand_template(TO_STRING, {"expr": value.expr}), frum=self)
def to_es_script(self, schema): term = FirstOp("first", self.term).partial_eval() value = term.to_es_script(schema) if isinstance(value.frum, CoalesceOp): return CoalesceOp("coalesce", [NumberOp("number", t).partial_eval().to_es_script(schema) for t in value.frum.terms]).to_es_script(schema) if value.type == BOOLEAN: return EsScript( miss=term.missing().partial_eval(), type=NUMBER, expr=value.expr + " ? 1 : 0", frum=self ) elif value.type == INTEGER: return EsScript( miss=term.missing().partial_eval(), type=NUMBER, expr=value.expr, frum=self ) elif value.type == NUMBER: return EsScript( miss=term.missing().partial_eval(), type=NUMBER, expr=value.expr, frum=self ) elif value.type == STRING: return EsScript( miss=term.missing().partial_eval(), type=NUMBER, expr="Double.parseDouble(" + value.expr + ")", frum=self ) elif value.type == OBJECT: return EsScript( miss=term.missing().partial_eval(), type=NUMBER, expr="((" + value.expr + ") instanceof String) ? Double.parseDouble(" + value.expr + ") : (" + value.expr + ")", frum=self )
def to_es_script(self, schema): term = FirstOp("first", self.term).partial_eval() value = term.to_es_script(schema) if isinstance(value.frum, CoalesceOp): return CoalesceOp("coalesce", [StringOp("string", t).partial_eval() for t in value.frum.terms]).to_es_script(schema) if value.type == BOOLEAN: return EsScript( miss=self.term.missing().partial_eval(), type=STRING, expr=value.expr + ' ? "T" : "F"', frum=self ) elif value.type == INTEGER: return EsScript( miss=self.term.missing().partial_eval(), type=STRING, expr="String.valueOf(" + value.expr + ")", frum=self ) elif value.type == NUMBER: return EsScript( miss=self.term.missing().partial_eval(), type=STRING, expr=expand_template(TO_STRING, {"expr":value.expr}), frum=self ) elif value.type == STRING: return value else: return EsScript( miss=self.term.missing().partial_eval(), type=STRING, expr=expand_template(TO_STRING, {"expr":value.expr}), frum=self )