def digitalUsageMetadata()

in common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/Mappings.scala [278:357]


  def digitalUsageMetadata(name: String): ObjectField = nonDynamicObjectField(name).copy(properties = Seq(
    keywordField("webTitle"),
    keywordField("webUrl"),
    keywordField("sectionId"),
    keywordField("composerUrl")
  ))

  def syndicationUsageMetadata(name: String): ObjectField = nonDynamicObjectField(name).copy(properties = Seq(
    keywordField("partnerName"),
    keywordField("syndicatedBy")
  ))

  def frontUsageMetadata(name: String): ObjectField = nonDynamicObjectField(name).copy(properties = Seq(
    keywordField("addedBy"),
    keywordField("front")
  ))

  def downloadUsageMetadata(name: String): ObjectField = nonDynamicObjectField(name).copy(properties = Seq(
    keywordField("downloadedBy")
  ))

  def usagesMapping(name: String): NestedField = nestedField(name).copy(properties = Seq(
    keywordField("id"),
    sStemmerAnalysed("title"),
    usageReference("references"),
    KeywordField(name = "platform", copyTo = Seq("usagesPlatform")),
    keywordField("media"),
    KeywordField(name = "status", copyTo = Seq("usagesStatus")),
    dateField("dateAdded"),
    dateField("dateRemoved"),
    dateField("lastModified"),
    printUsageMetadata("printUsageMetadata"),
    digitalUsageMetadata("digitalUsageMetadata"),
    syndicationUsageMetadata("syndicationUsageMetadata"),
    frontUsageMetadata("frontUsageMetadata"),
    downloadUsageMetadata("downloadUsageMetadata")
  ))

  def leaseMapping(name: String): ObjectField = nonDynamicObjectField(name).copy(properties = Seq(
    keywordField("id"),
    keywordField("leasedBy"),
    dateField("startDate"),
    dateField("endDate"),
    keywordField("access"),
    keywordField("active"), //TODO should probably not be stored in ES, as its a snapshot in time rather than a calculated field
    sStemmerAnalysed("notes"),
    keywordField("mediaId"),
    dateField("createdAt")
  ))

  def leasesMapping(name: String): ObjectField = nonDynamicObjectField(name).copy(properties = Seq(
    leaseMapping("leases"),
    dateField("lastModified")
  ))

  def softDeletedMetadataMapping(name: String) = nonDynamicObjectField(name).copy(properties = Seq(
    dateField("deleteTime"),
    keywordField("deletedBy")
  ))

  private def nonDynamicObjectField(name: String) = ObjectField(name = name, dynamic = Some("strict"))

  private def nestedField(name: String) = NestedField(name).dynamic("strict") // ES1 include_in_parent needs to be emulated with field bby field copy_tos

  private def dynamicObj(name: String) = objectField(name).copy(dynamic = Some("true"))

  private def nonIndexedString(name: String) = textField(name).index(false)

  private def sStemmerAnalysed(name: String) = textField(name).analyzer(IndexSettings.englishSStemmerAnalyzerName)

  private def hierarchyAnalysed(name: String) = textField(name).analyzer(IndexSettings.hierarchyAnalyserName)

  private def standardAnalysed(name: String) = textField(name).analyzer("standard")

  private def simpleSuggester(name: String) = completionField(name).analyzer("simple").searchAnalyzer("simple")

  //def nonAnalysedList(indexName: String) = Json.obj("type" -> "string", "index" -> "not_analyzed", "index_name" -> indexName)
  private def nonAnalysedList(name: String) = {
    keywordField(name) // TODO index_name
  }