I am new to elasticsearch and looking for a bit of help using the Java API. I have some domain objects E.g.
@XmlRootElement
public class BasicActivity {
private String activityName;
private FullActivity activity;
// Getters and setters
}
I have created a transport client connected to a node
Client client = new TransportClient()
.addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300));
Is there and easy way to insert my object straight into elasticsearch?
I have seen this
IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
.setSource(jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "trying out Elastic Search")
.endObject()
)
.execute()
.actionGet();
But to do that I would have to convert every object into json, which while possible is not my ideal situation.
If I have a misunderstanding of how it works (architecturally) then please let me know, I am here to learn!
cheers, Rob
I think you are on the right track. The Java API can be hard to get at times when you are not used to it. I think over time it will get better.
You do have to convert your objects to Json to send them to your ElasticSearch cluster. Gson is one of many popular libraries out there that can do that for you.
The code you show above will create an index. Now to add a document to that index, run something like this.
Tweet tweet = new Tweet();
tweet.setId("1234");
tweet.setMessage("message");
IndexRequest indexRequest = new IndexRequest("twitter","tweet", tweet.getId());
indexRequest.source(new Gson().toJson(tweet));
IndexResponse response = client.index(indexRequest).actionGet();
Check out BulkRequest for indexing several items at once. Once your objects get more complex, you'll need to create Mappings.
I have found great examples in the Guide, but usually more detailed examples in the ES Google Group.
I have to recommend the Head front end, too. It shows you existing indices and items.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With