Je suis cela tutorielscomment une utilisation embarquée ElasticSearch pour les tests d'intégration
Tout ce que je suis en train de suivre le lien parce que je me sers ElasticSearch 1.6.0
mais il utilise NodeClient et je veux à utiliser transportClient
mais je reçois exception
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []
[info] at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:305)
[info] at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:200)
[info] at org.elasticsearch.client.transport.support.InternalTransportIndicesAdminClient.execute(InternalTransportIndicesAdminClient.java:86)
[info] at org.elasticsearch.client.support.AbstractIndicesAdminClient.create(AbstractIndicesAdminClient.java:367)
[info] at org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder.doExecute(CreateIndexRequestBuilder.java:250)
[info] at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:91)
[info] at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:65)
[info] at testcontrollers.campaign.ElasticsearchServer.createAndWaitForIndex(ElasticsearchServer.scala:40)
[info] at testcontrollers.campaign.CampaignTestSearch.<init>(CampaignTestSearch.scala:41)
[info] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
voici le code
class ElasticsearchServer {
val log = LoggerFactory.getLogger(this.getClass)
private val clusterName = "testcluster"
private val dataDir = Files.createTempDirectory("elasticsearch_test_data_").toFile
private val settings = ImmutableSettings.settingsBuilder
.put("path.data", dataDir.toString)
.put("cluster.name", clusterName)
.put("node.local",true)
.build
def client: TransportClient ={
val client=new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("127.0.0.1", 9300))
client
}
def stop(): Unit = {
client.close();
try {
FileUtils.forceDelete(dataDir)
} catch {
case e: Exception => // dataDir cleanup failed
}
}
def createAndWaitForIndex(index: String): Unit = {
client.admin.indices.prepareCreate(index).execute.actionGet()
client.admin.cluster.prepareHealth(index).setWaitForActiveShards(1).execute.actionGet()
}
}
class CampaignTestSearch extends PlaySpec{
val server = new ElasticsearchServer
server.createAndWaitForIndex("arteciatetestdb")
val client=server.client
val response = client.prepareSearch("dbtest")
.setTypes(CAMPAIGN_COLLECTION_NAME)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.addFields("uuid","campaignName","artworkID","activationDate","_source")
.setQuery(query)
.execute()
.actionGet()
}
Je ne peux pas mettre à niveau vers les versions les plus récentes de ES en ce moment il y a du travail pour la version ES 1.6.0 que j'utilise actuellement – swaheed
oui, mais la classe de test avait un nom différent, veuillez vérifier ma réponse mise à jour ci-dessus avec un lien vers leur repo officiel avec un exemple. –