Hello,
I'm using Elasticsearch 17.12.0 and Java 1.8.
I am able to perform a search operation on an indexed document via Kibana, I want to know how I can perform this task using my Java Springboot app which is already configured with Elasticsearch and connected to my node. I am able to index a document using my Java Springboot app, but this current document on which I want to perform search operation was imported from Kibana from https://www.kaggle.com/datasets/rmisra/news-category-dataset. this website.
I tried looking on our official documentation website and got the idea but was unable to understand how to actually create and run a search query.
I am writing this query in Kibana devtools
GET news_headlines/_search
{
"query": {
"match": {
"authors": "Andy McDonald"
}
}
}
and getting the response on Kibana
{
"took" : 5,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 10000,
"relation" : "gte"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "news_headlines",
"_type" : "_doc",
"_id" : "QIM5qIAB1QJoV5WnD2FW",
"_score" : 1.0,
"_source" : {
"date" : "2018-05-26",
"short_description" : "She left her husband. He killed their children. Just another day in America.",
"@timestamp" : "2018-05-26T00:00:00.000+05:30",
"link" : "https://www.huffingtonpost.com/entry/texas-amanda-painter-mass-shooting_us_5b081ab4e4b0802d69caad89",
"category" : "CRIME",
"headline" : "There Were 2 Mass Shootings In Texas Last Week, But Only 1 On TV",
"authors" : "Melissa Jeltsen"
}
},
{
"_index" : "news_headlines",
"_type" : "_doc",
"_id" : "QYM5qIAB1QJoV5WnD2FW",
"_score" : 1.0,
"_source" : {
"date" : "2018-05-26",
"short_description" : "Of course it has a song.",
"@timestamp" : "2018-05-26T00:00:00.000+05:30",
"link" : "https://www.huffingtonpost.com/entry/will-smith-joins-diplo-and-nicky-jam-for-the-official-2018-world-cup-song_us_5b09726fe4b0fdb2aa541201",
"category" : "ENTERTAINMENT",
"headline" : "Will Smith Joins Diplo And Nicky Jam For The 2018 World Cup's Official Song",
"authors" : "Andy McDonald"
}
}, .. . . . . .. . .. . . .. ......
I want to do the same through my Java application, when I tried to read the documentation and do this, I wrote a Getmapping request in my controller which looks like
@GetMapping("/search")
public SearchRequest trail3() throws IOException {
SearchRequest searchRequest = new SearchRequest();//1
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //2
sourceBuilder.query(QueryBuilders.termQuery("headline", "will"));
sourceBuilder.from(0);
sourceBuilder.size(5);
searchRequest.indices("news_headlines");
return searchRequest.source(sourceBuilder);
}
and when I run it from postman I get the output as follows
{
"batchedReduceSize": 512,
"maxConcurrentShardRequests": 5,
"preFilterShardSize": null,
"ccsMinimizeRoundtrips": true,
"suggestOnly": false,
"shouldStoreResult": false,
"parentTask": {
"nodeId": "",
"id": -1,
"set": false
},
"description": ""
}
Please let me know how to do this, my end goal is to create a search bar for our document storing application.
Also, please let me know if you need any additional information.