diff --git a/ansible/roles/elasticsearch/tasks/config.yml b/ansible/roles/elasticsearch/tasks/config.yml
index 4b73ecfc66aff6f05f5704c4a707a4101ba03670..28dde49979bd531a44c0de2800196c86399ac596 100644
--- a/ansible/roles/elasticsearch/tasks/config.yml
+++ b/ansible/roles/elasticsearch/tasks/config.yml
@@ -30,8 +30,12 @@
     - Restart {{ item.key }} container
 
 - name: Copying over elasticsearch service config files
-  template:
-    src: "{{ item.key }}.yml.j2"
+  merge_yaml:
+    sources:
+      - "{{ role_path }}/templates/{{ item.key }}.yml.j2"
+      - "{{ node_custom_config }}/elasticsearch.yml"
+      - "{{ node_custom_config }}/elasticsearch/{{ item.key }}.yml"
+      - "{{ node_custom_config }}/elasticsearch/{{ inventory_hostname }}/{{ item.key }}.yml"
     dest: "{{ node_config_directory }}/{{ item.key }}/{{ item.key }}.yml"
     mode: "0660"
   become: true
diff --git a/releasenotes/notes/add-custom-elasticsearch-conf-6fc34fbc3b471997.yaml b/releasenotes/notes/add-custom-elasticsearch-conf-6fc34fbc3b471997.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2cc416c7ac024fe78ea5b2041ae21188d9071fab
--- /dev/null
+++ b/releasenotes/notes/add-custom-elasticsearch-conf-6fc34fbc3b471997.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Adds ability to provide a custom elasticsearch config.