All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.chengpohi.api.dsl.ManageDSL.scala Maven / Gradle / Ivy

The newest version!
package com.github.chengpohi.api.dsl

import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequestBuilder
import org.elasticsearch.action.admin.cluster.node.info.NodesInfoRequestBuilder
import org.elasticsearch.action.admin.cluster.node.stats.NodesStatsRequestBuilder
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequestBuilder
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequestBuilder
import org.elasticsearch.action.admin.cluster.state.ClusterStateRequestBuilder
import org.elasticsearch.action.admin.cluster.stats.ClusterStatsRequestBuilder
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequestBuilder
import org.elasticsearch.action.admin.indices.close.CloseIndexRequestBuilder
import org.elasticsearch.action.admin.indices.open.OpenIndexRequestBuilder
import org.elasticsearch.action.admin.indices.settings.put.{UpdateSettingsRequestBuilder, UpdateSettingsResponse}
import org.elasticsearch.action.admin.indices.stats.IndicesStatsRequestBuilder

import scala.concurrent.{Future, Promise}
import scala.concurrent.ExecutionContext.Implicits.global

/**
  * elasticshell
  * Created by chengpohi on 6/26/16.
  */
trait ManageDSL extends DSLDefinition with DeleterDSL with QueryDSL {

  case object node {
    def stats(nodeIds: List[String]): NodeStatsRequestDefinition = {
      val prepareNodesStats: NodesStatsRequestBuilder = clusterClient.prepareNodesStats(nodeIds: _*)
      NodeStatsRequestDefinition(prepareNodesStats)
    }

    def stats(nodeIds: NodeType): NodeStatsRequestDefinition = {
      val prepareNodesStats: NodesStatsRequestBuilder = clusterClient.prepareNodesStats()
      NodeStatsRequestDefinition(prepareNodesStats)
    }

    def info: NodeInfoRequestDefinition = {
      val prepareNodesStats: NodesInfoRequestBuilder = clusterClient.prepareNodesInfo()
      NodeInfoRequestDefinition(prepareNodesStats)
    }
  }

  case object indice {
    def stats(nodeIds: List[String]): IndicesStatsRequestDefinition = {
      val prepareNodesStats: IndicesStatsRequestBuilder = indicesClient.prepareStats(nodeIds: _ *)
      IndicesStatsRequestDefinition(prepareNodesStats)
    }

    def stats(indiceType: NodeType): IndicesStatsRequestDefinition = {
      val prepareNodesStats: IndicesStatsRequestBuilder = indicesClient.prepareStats(indiceType.value: _*)
      IndicesStatsRequestDefinition(prepareNodesStats)
    }

    def update(indexName: String): UpdateSettingsRequestDefinition = {
      val clusterUpdateSettingsRequestBuilder: UpdateSettingsRequestBuilder = indicesClient.prepareUpdateSettings(indexName)
      UpdateSettingsRequestDefinition(clusterUpdateSettingsRequestBuilder)
    }
  }

  case object cluster {
    def stats: ClusterStatsRequestDefinition = {
      val prepareNodesStats: ClusterStatsRequestBuilder = clusterClient.prepareClusterStats()
      ClusterStatsRequestDefinition(prepareNodesStats)
    }

    def state: ClusterStateRequestDefinition = {
      val stateRequestBuilder: ClusterStateRequestBuilder = clusterClient.prepareState()
      ClusterStateRequestDefinition(stateRequestBuilder)
    }

    def health: ClusterHealthRequestDefinition = {
      val clusterHealthRequestBuilder: ClusterHealthRequestBuilder = clusterClient.prepareHealth()
      ClusterHealthRequestDefinition(clusterHealthRequestBuilder)
    }

    def settings: ClusterSettingsRequestDefinition = {
      val clusterUpdateSettingsRequestBuilder: ClusterUpdateSettingsRequestBuilder = clusterClient.prepareUpdateSettings()
      ClusterSettingsRequestDefinition(clusterUpdateSettingsRequestBuilder)
    }
  }

  case object create {
    def repository(repositoryName: String): PutRepositoryDefinition = {
      val putRepository: PutRepositoryRequestBuilder = clusterClient.preparePutRepository(repositoryName)
      PutRepositoryDefinition(putRepository)
    }

    def snapshot(snapshotName: String): CreateSnapshotDefinition = {
      CreateSnapshotDefinition(snapshotName)
    }

    def index(indexName: String): CreateIndexDefinition = CreateIndexDefinition(indicesClient.prepareCreate(indexName))

    def analyzer(analyzer: String): CreateAnalyzerRequestDefinition = CreateAnalyzerRequestDefinition(analyzer)
  }


  case object add {
    def alias(targetIndex: String): AddAliasRequestDefinition = {
      AddAliasRequestDefinition(targetIndex)
    }
  }

  case object restore {
    def snapshot(snapshotName: String): RestoreSnapshotRequestDefinition = RestoreSnapshotRequestDefinition(snapshotName)
  }

  case object close {
    def index(indexName: String): CloseIndexRequestDefinition = {
      val closeIndexRequestBuilder: CloseIndexRequestBuilder = indicesClient.prepareClose(indexName)
      CloseIndexRequestDefinition(closeIndexRequestBuilder)
    }
  }

  case object open {
    def index(indexName: String): OpenIndexRequestDefinition = {
      val openIndexRequestBuilder: OpenIndexRequestBuilder = indicesClient.prepareOpen(indexName)
      OpenIndexRequestDefinition(openIndexRequestBuilder)
    }
  }


  case object pending {
    def tasks: PendingClusterTasksDefinition = {
      val pendingClusterTasksRequestBuilder: PendingClusterTasksRequestBuilder = clusterClient.preparePendingClusterTasks()
      PendingClusterTasksDefinition(pendingClusterTasksRequestBuilder)
    }
  }

  case object waiting {
    def index(indexName: String): ClusterHealthRequestDefinition = {
      val prepareHealth: ClusterHealthRequestBuilder = clusterClient.prepareHealth(indexName)
      ClusterHealthRequestDefinition(prepareHealth)
    }
  }

  case object refresh {
    def index(indices: String): RefreshRequestDefinition = {
      RefreshRequestDefinition(indices)
    }
  }

  case class CreateAnalyzerRequestDefinition(analyzerSetting: String) extends Definition[UpdateSettingsResponse] {
    override def execute: Future[UpdateSettingsResponse] = {
      val p = Promise[UpdateSettingsResponse]()
      DSL {
        close index ELASTIC_SHELL_INDEX_NAME
      } onSuccess {
        case _ =>
          val eventualUpdateSettingsResponse: Future[UpdateSettingsResponse] = DSL {
            indice update ELASTIC_SHELL_INDEX_NAME settings analyzerSetting
          }
          eventualUpdateSettingsResponse.onSuccess {
            case r => p success r
          }
      }
      p.future onSuccess {
        case _ => DSL {
          open index ELASTIC_SHELL_INDEX_NAME
        }
      }
      p.future
    }

    override def json: String = execute.await.toJson
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy