আপনি যদি Future
স্কেলে কাজ করছেন, তবে এটি করার একটি উপায় হল একটি অনুরোধএক্সেকিউটার তৈরি করা, তারপরে আপনার অনুরোধ জমা দেওয়ার জন্য সূচি স্ট্যাটস রেকুয়েস্টবিল্ডার এবং প্রশাসনিক ক্লায়েন্ট ব্যবহার করুন ।
import org.elasticsearch.action.{ ActionRequestBuilder, ActionListener, ActionResponse }
import scala.concurrent.{ Future, Promise, blocking }
/** Convenice wrapper for creating RequestExecutors */
object RequestExecutor {
def apply[T <: ActionResponse](): RequestExecutor[T] = {
new RequestExecutor[T]
}
}
/** Wrapper to convert an ActionResponse into a scala Future
*
* @see http://chris-zen.github.io/software/2015/05/10/elasticsearch-with-scala-and-akka.html
*/
class RequestExecutor[T <: ActionResponse] extends ActionListener[T] {
private val promise = Promise[T]()
def onResponse(response: T) {
promise.success(response)
}
def onFailure(e: Throwable) {
promise.failure(e)
}
def execute[RB <: ActionRequestBuilder[_, T, _, _]](request: RB): Future[T] = {
blocking {
request.execute(this)
promise.future
}
}
}
এই ব্লগ পোস্টটি থেকে এক্সিকিউটারকে তোলা হয়েছে যা আপনি যদি ES কে প্রোগ্রামিমেটিকভাবে জিজ্ঞাসা করার চেষ্টা করছেন এবং কার্লের মাধ্যমে নয় তবে অবশ্যই এটি ভাল পড়া। আপনার কাছে এটির একটি আপনি খুব সহজেই খুব সহজেই সমস্ত সূচকের তালিকা তৈরি করতে পারেন:
def totalCountsByIndexName(): Future[List[(String, Long)]] = {
import scala.collection.JavaConverters._
val statsRequestBuider = new IndicesStatsRequestBuilder(client.admin().indices())
val futureStatResponse = RequestExecutor[IndicesStatsResponse].execute(statsRequestBuider)
futureStatResponse.map { indicesStatsResponse =>
indicesStatsResponse.getIndices().asScala.map {
case (k, indexStats) => {
val indexName = indexStats.getIndex()
val totalCount = indexStats.getTotal().getDocs().getCount()
(indexName, totalCount)
}
}.toList
}
}
client
ক্লায়েন্টের একটি উদাহরণ যা কোনও নোড বা পরিবহন ক্লায়েন্ট হতে পারে, যে কোনও আপনার প্রয়োজন অনুসারে কাজ করে। আপনার একটি অন্তর্ভুক্ত থাকা দরকার needExecutionContext
এই অনুরোধটির সুযোগের অন্তর্ভুক্ত থাকা । আপনি যদি এই কোডটি ছাড়াই সংকলন করার চেষ্টা করেন তবে আপনি যদি ইতিমধ্যে আমদানি না করে থাকেন তবে কীভাবে তা পাবেন সে সম্পর্কে আপনি স্কেল সংকলক থেকে একটি সতর্কতা পাবেন।
আমার নথির গণনা প্রয়োজন, তবে আপনার যদি কেবল সূচকগুলির নাম প্রয়োজন হয় তবে আপনি মানচিত্রের কীগুলি থেকে এগুলি টেনে আনতে পারেন IndexStats
:
indicesStatsResponse.getIndices().keySet()
আপনি যদি প্রোগ্রামালিকভাবে এটি করার চেষ্টা করছেন এমনকি আপনি কীভাবে এটি করবেন তা সন্ধান করার সময় এই প্রশ্নটি প্রকাশিত হয়, সুতরাং আমি আশা করি যে এটি যে কাউকে স্কালা / জাভাতে এটি করতে দেখায় সহায়তা করবে। অন্যথায়, কার্ল ব্যবহারকারীরা শীর্ষ উত্তর যেমনটি বলেছেন এবং ব্যবহার করেন ঠিক তেমনই করতে পারেন
curl http://localhost:9200/_aliases
curl http://localhost:9200/_stats/indexes\?pretty\=1