From 788faba4795aa1b910450a2acfb11e2e88bfbe3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89douard=20WILLISSECK?= Date: Mon, 9 Sep 2024 17:34:29 +0200 Subject: [PATCH 1/3] Use index API instead of create Using index instead of create allows to not specify an ID --- .../backendlistener/elasticsearch/ElasticSearchRequests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchRequests.java b/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchRequests.java index 1d62865..04ec2a0 100644 --- a/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchRequests.java +++ b/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchRequests.java @@ -4,5 +4,5 @@ public class ElasticSearchRequests { /** * Request to send metrics (JMeter/Percentiles) as ElasticSearch documents */ - public static String SEND_BULK_REQUEST = "{ \"create\" : { \"_index\" : \"%s\" } }%n"; + public static String SEND_BULK_REQUEST = "{ \"index\" : { \"_index\" : \"%s\" } }%n"; } From eaa8692d9b48e892ce57648de8da0664194b4ce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89douard=20WILLISSECK?= Date: Mon, 9 Sep 2024 17:36:00 +0200 Subject: [PATCH 2/3] Use index operation instead of create Using the index operation instead of create allows the omission of the ID field. --- .../backendlistener/elasticsearch/ElasticSearchRequests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchRequests.java b/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchRequests.java index 1d62865..04ec2a0 100644 --- a/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchRequests.java +++ b/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchRequests.java @@ -4,5 +4,5 @@ public class ElasticSearchRequests { /** * Request to send metrics (JMeter/Percentiles) as ElasticSearch documents */ - public static String SEND_BULK_REQUEST = "{ \"create\" : { \"_index\" : \"%s\" } }%n"; + public static String SEND_BULK_REQUEST = "{ \"index\" : { \"_index\" : \"%s\" } }%n"; } From f8db643d78daad724c6c8be0856070676380a8c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89douard=20WILLISSECK?= Date: Tue, 10 Sep 2024 16:29:42 +0200 Subject: [PATCH 3/3] Fix version detection if no "distribution" element The method checking the version was doing a check on a "distribution" element that was not always there. However it didn't handle the case where it was not there and defaulted to version "-1". --- .../elasticsearch/ElasticSearchMetricSender.java | 2 +- .../backendlistener/elasticsearch/JsonUtils.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/JsonUtils.java diff --git a/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchMetricSender.java b/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchMetricSender.java index 18bc8f7..8a20dbd 100644 --- a/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchMetricSender.java +++ b/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchMetricSender.java @@ -110,7 +110,7 @@ public int getElasticSearchVersion() { JSONObject elasticSearchConfig = new JSONObject(responseBody); JSONObject version = (JSONObject) elasticSearchConfig.get("version"); String elasticVersion = version.get("number").toString(); - if (Objects.equals(version.get("distribution").toString(), "opensearch")) { + if (Objects.equals(JsonUtils.getValueOrNull(version, "distribution"), "opensearch")) { elasticSearchVersion = 7; }else{ elasticSearchVersion = Integer.parseInt(elasticVersion.split("\\.")[0]); diff --git a/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/JsonUtils.java b/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/JsonUtils.java new file mode 100644 index 0000000..ae3e8c5 --- /dev/null +++ b/src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/JsonUtils.java @@ -0,0 +1,15 @@ +package io.github.delirius325.jmeter.backendlistener.elasticsearch; + +import org.json.JSONObject; + +import java.net.HttpRetryException; + +public class JsonUtils { + public static T getValueOrNull(JSONObject object, String key) { + try { + return (T) object.get(key); + } catch (Exception e) { + return null; + } + } +}