locals {
  es_log_types_list = ["INDEX_SLOW_LOGS", "SEARCH_SLOW_LOGS"] # "ES_APPLICATION_LOGS" is not supported in 2.3
}

resource "aws_cloudwatch_log_group" "es_log_group" {
  name              = "${local.name_prefix}-es-main"
  retention_in_days = 30
}

resource "aws_cloudwatch_log_resource_policy" "es_resource_policy" {
  policy_name = "${local.name_prefix}-es-logging"

  policy_document = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "es.amazonaws.com"
      },
      "Action": [
        "logs:PutLogEvents",
        "logs:PutLogEventsBatch",
        "logs:CreateLogStream"
      ],
      "Resource": "arn:aws:logs:*"
    }
  ]
}
POLICY
}

resource "aws_iam_service_linked_role" "es_role" {
  aws_service_name = "es.amazonaws.com"
}
/*
resource "aws_elasticsearch_domain" "main" {
  domain_name           = "${local.name_prefix}-es-main"
  elasticsearch_version = "2.3" // version 6.x and newer is not compatible

  cluster_config {
    instance_type = "t2.medium.elasticsearch"
  }

  vpc_options {
    subnet_ids = [
      module.main_private_subnets.subnet_ids[2]
    ]

    security_group_ids = [
      module.main_sg_map.es_id,
      module.main_sg_map.es_debug_id,
    ]
  }

  ebs_options {
    ebs_enabled = true
    volume_size = 10
    volume_type = "gp2"
  }

  #  encrypt_at_rest {
  #    enabled    = true
  #    kms_key_id = data.aws_kms_alias.default_es_key.target_key_arn
  #  }

  dynamic "log_publishing_options" {
    for_each = toset(local.es_log_types_list)
    content {
      cloudwatch_log_group_arn = aws_cloudwatch_log_group.es_log_group.arn
      log_type                 = log_publishing_options.value
    }
  }

  advanced_options = {
    "indices.fielddata.cache.size"        = 20
    "indices.query.bool.max_clause_count" = 1024
  }

  access_policies = <<POLICY
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "es:*",
            "Principal": {
              "AWS": "*"
            },
            "Effect": "Allow",
            "Resource": "arn:aws:es:us-east-1:${local.account_id}:domain/${local.name_prefix}-es-main/*"
        }
    ]
}
POLICY

  snapshot_options {
    automated_snapshot_start_hour = 22
  }

  tags = merge(
    local.common_tags,
    {
      Name                     = "${local.name_prefix}-main",
      project                  = "Portal",
      service                  = "Elastic Search",
      plat_env_project_service = "${local.aggregated_tag}_PRL_ELS"
    }
  )

  depends_on = [
    aws_iam_service_linked_role.es_role,
  ]
}
*/
