Loading app/models/analysis/IndexFields.scala +11 −3 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,14 @@ import play.api.libs.json._ object IndexFields { object IndexFields { private final val AnalyzableFields = Seq( "string", // FIXME: ES 2.X "text" ) private final def analyzable(fieldType: String) = AnalyzableFields.contains(fieldType) def apply(index: String, data: JsValue) = { def apply(index: String, data: JsValue) = { val docTypes = (data \ index \ "mappings").as[JsObject].keys val docTypes = (data \ index \ "mappings").as[JsObject].keys val fields = docTypes.flatMap { docType => val fields = docTypes.flatMap { docType => Loading @@ -21,16 +29,16 @@ object IndexFields { case p if (data \ p \ "fields").asOpt[JsObject].isDefined => case p if (data \ p \ "fields").asOpt[JsObject].isDefined => val fields = (data \ p \ "fields").as[JsObject].keys.collect { val fields = (data \ p \ "fields").as[JsObject].keys.collect { case field if (data \ p \ "fields" \ field \ "type").asOpt[String].exists(_.equals("string")) => case field if (data \ p \ "fields" \ field \ "type").asOpt[String].exists(analyzable) => s"$p.$field" s"$p.$field" }.toSeq }.toSeq if ((data \ p \ "type").asOpt[String].exists(_.equals("string"))) { if ((data \ p \ "type").asOpt[String].exists(analyzable)) { fields :+ p fields :+ p } else { } else { fields fields } } case p if (data \ p \ "type").asOpt[String].exists(_.equals("string")) => case p if (data \ p \ "type").asOpt[String].exists(analyzable) => Seq(p) Seq(p) }.flatten.toSeq }.flatten.toSeq case _ => Seq() case _ => Seq() Loading Loading
app/models/analysis/IndexFields.scala +11 −3 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,14 @@ import play.api.libs.json._ object IndexFields { object IndexFields { private final val AnalyzableFields = Seq( "string", // FIXME: ES 2.X "text" ) private final def analyzable(fieldType: String) = AnalyzableFields.contains(fieldType) def apply(index: String, data: JsValue) = { def apply(index: String, data: JsValue) = { val docTypes = (data \ index \ "mappings").as[JsObject].keys val docTypes = (data \ index \ "mappings").as[JsObject].keys val fields = docTypes.flatMap { docType => val fields = docTypes.flatMap { docType => Loading @@ -21,16 +29,16 @@ object IndexFields { case p if (data \ p \ "fields").asOpt[JsObject].isDefined => case p if (data \ p \ "fields").asOpt[JsObject].isDefined => val fields = (data \ p \ "fields").as[JsObject].keys.collect { val fields = (data \ p \ "fields").as[JsObject].keys.collect { case field if (data \ p \ "fields" \ field \ "type").asOpt[String].exists(_.equals("string")) => case field if (data \ p \ "fields" \ field \ "type").asOpt[String].exists(analyzable) => s"$p.$field" s"$p.$field" }.toSeq }.toSeq if ((data \ p \ "type").asOpt[String].exists(_.equals("string"))) { if ((data \ p \ "type").asOpt[String].exists(analyzable)) { fields :+ p fields :+ p } else { } else { fields fields } } case p if (data \ p \ "type").asOpt[String].exists(_.equals("string")) => case p if (data \ p \ "type").asOpt[String].exists(analyzable) => Seq(p) Seq(p) }.flatten.toSeq }.flatten.toSeq case _ => Seq() case _ => Seq() Loading