From 26c3f6d5e4ec7af6ab4b6546f53d6ff1aba8aede Mon Sep 17 00:00:00 2001 From: patwhite Date: Fri, 7 Feb 2014 15:22:42 -0800 Subject: [PATCH 1/2] Added Routing to Mappings to enable index routing --- .../sksamuel/elastic4s/mapping/mappings.scala | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala b/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala index 4f5cb2bc4..2da56cf06 100644 --- a/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala +++ b/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala @@ -13,6 +13,11 @@ trait MappingDsl { implicit def map(`type`: String) = new MappingDefinition(`type`) } +case class RoutingDefinition ( + required: Boolean, + path: Option[String] +) + class MappingDefinition(val `type`: String) { var _source = true @@ -26,6 +31,7 @@ class MappingDefinition(val `type`: String) { var _boostValue: Double = 0 var _dynamic: DynamicMapping = Dynamic var _meta: Map[String, Any] = Map.empty + var _routing: Option[RoutingDefinition] = None def analyzer(analyzer: String): MappingDefinition = { _analyzer = Option(analyzer) @@ -55,6 +61,10 @@ class MappingDefinition(val `type`: String) { this._meta = map this } + def routing(required: Boolean, path: Option[String] = None): MappingDefinition = { + this._routing = Some(RoutingDefinition(required, path)) + this + } def source(source: Boolean): MappingDefinition = { this._source = source this @@ -114,6 +124,14 @@ class MappingDefinition(val `type`: String) { source.endObject() } + if(_routing.isDefined) { + source.startObject("_routing").field("required", _routing.get.required) + if(_routing.get.path.isDefined) { + source.field("path", _routing.get.path.get) + } + source.endObject() + } + source.endObject() // end mapping name } } From 862f2998217ba71cdf90b2cb40a9e383fe697b49 Mon Sep 17 00:00:00 2001 From: patwhite Date: Fri, 7 Feb 2014 15:59:45 -0800 Subject: [PATCH 2/2] Tweaked placement of new classes --- .../com/sksamuel/elastic4s/mapping/mappings.scala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala b/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala index 2da56cf06..660805118 100644 --- a/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala +++ b/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala @@ -13,11 +13,6 @@ trait MappingDsl { implicit def map(`type`: String) = new MappingDefinition(`type`) } -case class RoutingDefinition ( - required: Boolean, - path: Option[String] -) - class MappingDefinition(val `type`: String) { var _source = true @@ -520,3 +515,8 @@ final class MultiFieldDefinition(name: String) source.endObject() } } + +case class RoutingDefinition ( + required: Boolean, + path: Option[String] +)