Migrating from Elastic Node Client to Transport or Rest Client
Our current application is running under Spring Boot 1.5 (comes with Elastic Search 2.X)
We use Embedded/In-Memory Elastic search instance and use Node client to connect to the Embedded/In-Memory Elastic instance.
We are looking to migrate away from Embedded Elastic Search to external Elastic Search Instance.
This means we'll need to migrate away from Node Client and use either
Transport Client or Low-Level-Rest-Client or High-Level-Rest-Client
Our Spring Boot Config for Node Client looks like this:
@Configuration
@EnableElasticsearchRepositories
public class ElasticConfiguration {
@Bean
NodeBuilder nodeBuilder(){ return new NodeBuilder(); }
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws IOException {
File tmpDir = File.createTempFile("elastic") );
Settings.Builder elasticsearchSettings = Settings.settingsBuilder()
.put("http.enabled", "true") // 1
.put("index.number_of_shards", "1")
.put("path.data", new File(tmpDir, "data").getAbsolutePath())
.put("path.logs", new File(tmpDir, "logs").getAbsolutePath())
.put("path.work", new File(tmpDir, "work").getAbsolutePath())
.put("path.home", tmpDir);
return new ElasticsearchTemplate(nodeBuilder().local(true)
.settings(elasticsearchSettings.build())
.node()
.client());
}
Question:
1) If we migrate from Elastic Node client to Elastic Transport client, will it mean heavy code changes for the currently coded Elastic pieces
(outside of the elastic config class that creates node client)
2) If we migrate from Node Client to Using Rest Client:
i) Again, outside of the Elastic Config code changes, will it mean heavy code changes for the currently coded Elastic pieces?
ii) How would the above SpringBoot Elastic Config for Rest client look like? any sample code?
elasticsearch
add a comment |
Our current application is running under Spring Boot 1.5 (comes with Elastic Search 2.X)
We use Embedded/In-Memory Elastic search instance and use Node client to connect to the Embedded/In-Memory Elastic instance.
We are looking to migrate away from Embedded Elastic Search to external Elastic Search Instance.
This means we'll need to migrate away from Node Client and use either
Transport Client or Low-Level-Rest-Client or High-Level-Rest-Client
Our Spring Boot Config for Node Client looks like this:
@Configuration
@EnableElasticsearchRepositories
public class ElasticConfiguration {
@Bean
NodeBuilder nodeBuilder(){ return new NodeBuilder(); }
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws IOException {
File tmpDir = File.createTempFile("elastic") );
Settings.Builder elasticsearchSettings = Settings.settingsBuilder()
.put("http.enabled", "true") // 1
.put("index.number_of_shards", "1")
.put("path.data", new File(tmpDir, "data").getAbsolutePath())
.put("path.logs", new File(tmpDir, "logs").getAbsolutePath())
.put("path.work", new File(tmpDir, "work").getAbsolutePath())
.put("path.home", tmpDir);
return new ElasticsearchTemplate(nodeBuilder().local(true)
.settings(elasticsearchSettings.build())
.node()
.client());
}
Question:
1) If we migrate from Elastic Node client to Elastic Transport client, will it mean heavy code changes for the currently coded Elastic pieces
(outside of the elastic config class that creates node client)
2) If we migrate from Node Client to Using Rest Client:
i) Again, outside of the Elastic Config code changes, will it mean heavy code changes for the currently coded Elastic pieces?
ii) How would the above SpringBoot Elastic Config for Rest client look like? any sample code?
elasticsearch
add a comment |
Our current application is running under Spring Boot 1.5 (comes with Elastic Search 2.X)
We use Embedded/In-Memory Elastic search instance and use Node client to connect to the Embedded/In-Memory Elastic instance.
We are looking to migrate away from Embedded Elastic Search to external Elastic Search Instance.
This means we'll need to migrate away from Node Client and use either
Transport Client or Low-Level-Rest-Client or High-Level-Rest-Client
Our Spring Boot Config for Node Client looks like this:
@Configuration
@EnableElasticsearchRepositories
public class ElasticConfiguration {
@Bean
NodeBuilder nodeBuilder(){ return new NodeBuilder(); }
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws IOException {
File tmpDir = File.createTempFile("elastic") );
Settings.Builder elasticsearchSettings = Settings.settingsBuilder()
.put("http.enabled", "true") // 1
.put("index.number_of_shards", "1")
.put("path.data", new File(tmpDir, "data").getAbsolutePath())
.put("path.logs", new File(tmpDir, "logs").getAbsolutePath())
.put("path.work", new File(tmpDir, "work").getAbsolutePath())
.put("path.home", tmpDir);
return new ElasticsearchTemplate(nodeBuilder().local(true)
.settings(elasticsearchSettings.build())
.node()
.client());
}
Question:
1) If we migrate from Elastic Node client to Elastic Transport client, will it mean heavy code changes for the currently coded Elastic pieces
(outside of the elastic config class that creates node client)
2) If we migrate from Node Client to Using Rest Client:
i) Again, outside of the Elastic Config code changes, will it mean heavy code changes for the currently coded Elastic pieces?
ii) How would the above SpringBoot Elastic Config for Rest client look like? any sample code?
elasticsearch
Our current application is running under Spring Boot 1.5 (comes with Elastic Search 2.X)
We use Embedded/In-Memory Elastic search instance and use Node client to connect to the Embedded/In-Memory Elastic instance.
We are looking to migrate away from Embedded Elastic Search to external Elastic Search Instance.
This means we'll need to migrate away from Node Client and use either
Transport Client or Low-Level-Rest-Client or High-Level-Rest-Client
Our Spring Boot Config for Node Client looks like this:
@Configuration
@EnableElasticsearchRepositories
public class ElasticConfiguration {
@Bean
NodeBuilder nodeBuilder(){ return new NodeBuilder(); }
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws IOException {
File tmpDir = File.createTempFile("elastic") );
Settings.Builder elasticsearchSettings = Settings.settingsBuilder()
.put("http.enabled", "true") // 1
.put("index.number_of_shards", "1")
.put("path.data", new File(tmpDir, "data").getAbsolutePath())
.put("path.logs", new File(tmpDir, "logs").getAbsolutePath())
.put("path.work", new File(tmpDir, "work").getAbsolutePath())
.put("path.home", tmpDir);
return new ElasticsearchTemplate(nodeBuilder().local(true)
.settings(elasticsearchSettings.build())
.node()
.client());
}
Question:
1) If we migrate from Elastic Node client to Elastic Transport client, will it mean heavy code changes for the currently coded Elastic pieces
(outside of the elastic config class that creates node client)
2) If we migrate from Node Client to Using Rest Client:
i) Again, outside of the Elastic Config code changes, will it mean heavy code changes for the currently coded Elastic pieces?
ii) How would the above SpringBoot Elastic Config for Rest client look like? any sample code?
elasticsearch
elasticsearch
asked Nov 22 '18 at 3:59
user3216514user3216514
83110
83110
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Without any look on your code, based on my experience:
1) should work with minor or no changes at all. But you'll have to go with the rest client as the transport client will be removed soon. Or you'll have work again here in the future.
2i) it depends on the features you are using currently
2ii) please see https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.5/java-rest-high-level-migration.html
I've done many such migrations, many of them are nearly painless. But it really depends on the code of your app. If you can switch to the high-level client there should be just minor changes in your code. But there are also few features missing in the rest client at this moment (you're probably not using). If you need to use the low-level client (due to a jvm version incompatibility) your changes will be a lot more as there is a different approach needed: you need to generate your json for requests and unmarshall the responses.
Please consider your development profile and your tests too. Probably there is an embedded node starting with your application? If so, this needs to be solved in a different way.
If you encounter any migration problems, feel free to come back here again. We'll be here :D
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53423682%2fmigrating-from-elastic-node-client-to-transport-or-rest-client%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Without any look on your code, based on my experience:
1) should work with minor or no changes at all. But you'll have to go with the rest client as the transport client will be removed soon. Or you'll have work again here in the future.
2i) it depends on the features you are using currently
2ii) please see https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.5/java-rest-high-level-migration.html
I've done many such migrations, many of them are nearly painless. But it really depends on the code of your app. If you can switch to the high-level client there should be just minor changes in your code. But there are also few features missing in the rest client at this moment (you're probably not using). If you need to use the low-level client (due to a jvm version incompatibility) your changes will be a lot more as there is a different approach needed: you need to generate your json for requests and unmarshall the responses.
Please consider your development profile and your tests too. Probably there is an embedded node starting with your application? If so, this needs to be solved in a different way.
If you encounter any migration problems, feel free to come back here again. We'll be here :D
add a comment |
Without any look on your code, based on my experience:
1) should work with minor or no changes at all. But you'll have to go with the rest client as the transport client will be removed soon. Or you'll have work again here in the future.
2i) it depends on the features you are using currently
2ii) please see https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.5/java-rest-high-level-migration.html
I've done many such migrations, many of them are nearly painless. But it really depends on the code of your app. If you can switch to the high-level client there should be just minor changes in your code. But there are also few features missing in the rest client at this moment (you're probably not using). If you need to use the low-level client (due to a jvm version incompatibility) your changes will be a lot more as there is a different approach needed: you need to generate your json for requests and unmarshall the responses.
Please consider your development profile and your tests too. Probably there is an embedded node starting with your application? If so, this needs to be solved in a different way.
If you encounter any migration problems, feel free to come back here again. We'll be here :D
add a comment |
Without any look on your code, based on my experience:
1) should work with minor or no changes at all. But you'll have to go with the rest client as the transport client will be removed soon. Or you'll have work again here in the future.
2i) it depends on the features you are using currently
2ii) please see https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.5/java-rest-high-level-migration.html
I've done many such migrations, many of them are nearly painless. But it really depends on the code of your app. If you can switch to the high-level client there should be just minor changes in your code. But there are also few features missing in the rest client at this moment (you're probably not using). If you need to use the low-level client (due to a jvm version incompatibility) your changes will be a lot more as there is a different approach needed: you need to generate your json for requests and unmarshall the responses.
Please consider your development profile and your tests too. Probably there is an embedded node starting with your application? If so, this needs to be solved in a different way.
If you encounter any migration problems, feel free to come back here again. We'll be here :D
Without any look on your code, based on my experience:
1) should work with minor or no changes at all. But you'll have to go with the rest client as the transport client will be removed soon. Or you'll have work again here in the future.
2i) it depends on the features you are using currently
2ii) please see https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.5/java-rest-high-level-migration.html
I've done many such migrations, many of them are nearly painless. But it really depends on the code of your app. If you can switch to the high-level client there should be just minor changes in your code. But there are also few features missing in the rest client at this moment (you're probably not using). If you need to use the low-level client (due to a jvm version incompatibility) your changes will be a lot more as there is a different approach needed: you need to generate your json for requests and unmarshall the responses.
Please consider your development profile and your tests too. Probably there is an embedded node starting with your application? If so, this needs to be solved in a different way.
If you encounter any migration problems, feel free to come back here again. We'll be here :D
edited Nov 22 '18 at 14:53
answered Nov 22 '18 at 8:24
ibexitibexit
795413
795413
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53423682%2fmigrating-from-elastic-node-client-to-transport-or-rest-client%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown