From 655bc7276de85444b0bc0adc3e50b4c674a4af6c Mon Sep 17 00:00:00 2001 From: Nick dos Remedios Date: Fri, 31 Jan 2025 10:34:18 +1100 Subject: [PATCH] #930 Filter unwanted fields from index/fields (#942) * #930 Filter unwanted fields from index/fields * #930 Braces in wrong spot * #930 revert a autocomplete #fail * #930 skipFieldTypes overridable with config --- .../au/org/ala/biocache/dao/SolrIndexDAOImpl.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/au/org/ala/biocache/dao/SolrIndexDAOImpl.java b/src/main/java/au/org/ala/biocache/dao/SolrIndexDAOImpl.java index 1a32c580e..bbe3a9f24 100644 --- a/src/main/java/au/org/ala/biocache/dao/SolrIndexDAOImpl.java +++ b/src/main/java/au/org/ala/biocache/dao/SolrIndexDAOImpl.java @@ -91,6 +91,12 @@ public class SolrIndexDAOImpl implements IndexDAO { "lastAssertionDate" ); + /* + * The field types to exclude from the index/fields JSON + */ + @Value("${index.fields.skipFieldTypes:location,geohash,quad,packedQuad}") + private final List skipFieldTypes = new ArrayList<>(); + /* * This structure holds field properties * Values in the list are: @@ -671,10 +677,11 @@ private IndexFieldDTO formatIndexField(String fieldName, String fieldType, Strin f.setName(fieldName); - if (fieldType != null) { - f.setDataType(fieldType); + if ((fieldType != null && skipFieldTypes.contains(fieldType)) || fieldName.startsWith("_")) { + // Skip fields we don't want to expose + return null; } else { - f.setDataType("string"); + f.setDataType(Objects.requireNonNullElse(fieldType, "string")); } if (distinctCount != null) {