diff --git a/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala b/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala index 4f5cb2bc4..660805118 100644 --- a/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala +++ b/src/main/scala/com/sksamuel/elastic4s/mapping/mappings.scala @@ -26,6 +26,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 +56,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 +119,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 } } @@ -502,3 +515,8 @@ final class MultiFieldDefinition(name: String) source.endObject() } } + +case class RoutingDefinition ( + required: Boolean, + path: Option[String] +)