I found out that to send to elastic search 8.6, we need to put header
Accept: "application/vnd.elasticsearch+json;compatible-with=7"
Content-Type: "application/vnd.elasticsearch+json;compatible-with=7"
In order to do that, I need to recompile the apoc.es source. It involves two files:
- ElasticSearch.java
- LoadJson.java
Changes in ElasticSearch.java
private String contentType(Object payload) {
// commented by Azhar 31 March 2023 to support Elastic 8.6.2
//return "application/json";
return "application/vnd.elasticsearch+json;compatible-with=7";
}
Changes in LoadJson.java
public static Stream<MapResult> loadJsonStream(@Name("urlOrKeyOrBinary") Object urlOrKeyOrBinary, @Name("headers") Map<String, Object> headers, @Name("payload") String payload, String path, boolean failOnError, String compressionAlgo, List<String> pathOptions) {
if (urlOrKeyOrBinary instanceof String) {
headers = null != headers ? headers : new HashMap<>();
headers.putAll(Util.extractCredentialsIfNeeded((String) urlOrKeyOrBinary, failOnError));
}
headers.put("Accept","application/vnd.elasticsearch+json;compatible-with=7");
// Azhar wants to see if the headers was ok
//System.out.println("headers: " + headers.toString());
I am sorry that the system does not allow me to upload java or jar files. Thank you