create dummy SearchResponse instance for ElasticSearch test case
13,026
Solution 1
This will do what you want:
SearchShardTarget shardTarget = new SearchShardTarget("1", "monitoring", 1);
ShardSearchFailure[] shardFailures = new ShardSearchFailure[0];
float score = 0.2345f;
BytesReference source = new BytesArray("{\"@timestamp\":\"2014-08-20T15:43:20.762Z\",\"category_name\""
+ ":\"cat1111\",\"alert_message\":\"the new cpu threshold has been reached 80%\",\"alert_type\":"
+ "\"Critical\",\"view_mode\":\"unread\"}");
InternalSearchHit hit = new InternalSearchHit(1, "5YmRf-6OTvelt29V5dphmw", new StringText("quota-management"),
null);
hit.shardTarget(shardTarget);
hit.sourceRef(source);
hit.score(score);
InternalSearchHit[] hits = new InternalSearchHit[]{hit};
InternalSearchHits internalSearchHits = new InternalSearchHits(hits, 28, score);
InternalSearchResponse internalSearchResponse = new InternalSearchResponse(internalSearchHits, null, null,
null, false);
SearchResponse searchResponse = new SearchResponse(internalSearchResponse, "scrollId", 1, 1, 1000,
shardFailures);
If you call toString()
on searchResponse
it returns:
{
"_scroll_id" : "scrollId",
"took" : 1000,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"hits" : {
"total" : 28,
"max_score" : 0.2345,
"hits" : [ {
"_index" : "monitoring",
"_type" : "quota-management",
"_id" : "5YmRf-6OTvelt29V5dphmw",
"_score" : 0.2345,
"_source":{"@timestamp":"2014-08-20T15:43:20.762Z","category_name":"cat1111","alert_message":"the new cpu threshold has been reached 80%","alert_type":"Critical","view_mode":"unread"}
} ]
}
}
Solution 2
It works for me in ElasticsearchS 6.5
BytesReference source = new BytesArray(
"{your json response come here}" );
SearchHit hit = new SearchHit( 1 );
hit.sourceRef( source );
SearchHits hits = new SearchHits( new SearchHit[] { hit }, 5, 10 );
SearchResponseSections searchResponseSections = new SearchResponseSections( hits, null, null, false, null, null, 5 );
SearchResponse searchResponse = new SearchResponse( searchResponseSections, null, 8, 8, 0, 8, new ShardSearchFailure[] {} );
return searchResponse;
Author by
bagui
Updated on July 25, 2022Comments
-
bagui almost 2 years
I'm trying to create a dummy SearchResponse object by passing the values manually to the constructor. I have a JUnit test class for which I'm using this dummy value to mock the actual method call. Trying with the below method to
public SearchResponse actionGet() throws ElasticsearchException { ShardSearchFailure[] shardFailures = new ShardSearchFailure[0]; int docId = 0; String id = "5YmRf-6OTvelt29V5dphmw"; Map<String, SearchHitField> fields = null; InternalSearchHit internalSearchHit = new InternalSearchHit(docId, id, null, fields); InternalSearchHit[] internalSearchHit1 = { internalSearchHit }; InternalSearchResponse EMPTY = new InternalSearchResponse( new InternalSearchHits(internalSearchHit1, 0, 0), null, null, null, false); SearchResponse searchResponse = new SearchResponse(EMPTY, "scrollId", 1, 1, 1000, shardFailures); return searchResponse; }
and here is my actual value of json when query directly to elasticsearch.
{ "took": 3, "timed_out": false, "_shards": { "total": 3, "successful": 3, "failed": 0 }, "hits": { "total": 28, "max_score": null, "hits": [ { "_index": "monitoring", "_type": "quota-management", "_id": "5YmRf-6OTvelt29V5dphmw", "_score": null, "_source": { "@timestamp": "2014-08-20T15:43:20.762Z", "category_name": "cat1111", "alert_message": "the new cpu threshold has been reached 80%", "alert_type": "Critical", "view_mode": "unread" }, "sort": [ 1408549226173 ] } ] } }
I want to create similar kind of response by creating the actual SearchResponse Object. But I couldn't find any way to send the values in
InternalSearchHit[]
. Please let me know how can I do this. -
Jonathan over 7 yearsWhat about mocking a InternalAggregation?
-
Raghuveer over 5 yearsThis looks very old answer I am using 6.3.2 API can you please suggest a way please ?
-
Krishna Gangaraju almost 5 yearshow about aggregations ?
-
technocrat almost 5 yearsAggregations are solved! See the answer here: stackoverflow.com/questions/49798654/…
-
technocrat almost 5 yearsAggregations are solved! See the answer here: stackoverflow.com/questions/49798654/…