瀏覽代碼

优化elasticsearch日期格式

zhou-hao 5 年之前
父節點
當前提交
917d80088b

+ 11 - 3
jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/enums/BucketType.java

@@ -64,8 +64,12 @@ public enum BucketType {
             RangeAggregationBuilder builder = AggregationBuilders
                 .range(structure.getName())
                 .field(structure.getField());
-            if (structure.getMissingValue() != null) {
-                builder.missing(structure.getMissingValue());
+            if (StringUtils.hasText(structure.getFormat())) {
+                String format = structure.getFormat();
+                if (format.startsWith("yyyy")) {
+                    format = "8" + format;
+                }
+                builder.format(format);
             }
             structure.getRanges()
                 .forEach(ranges -> {
@@ -87,7 +91,11 @@ public enum BucketType {
                 .dateRange(structure.getName())
                 .field(structure.getField());
             if (StringUtils.hasText(structure.getFormat())) {
-                builder.format(structure.getFormat());
+                String format = structure.getFormat();
+                if (format.startsWith("yyyy")) {
+                    format = "8" + format;
+                }
+                builder.format(format);
             }
             structure.getRanges()
                 .forEach(ranges -> {

+ 1 - 1
jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/enums/ElasticDateFormat.java

@@ -28,7 +28,7 @@ public enum ElasticDateFormat implements EnumDict<String> {
 
     private String value;
 
-    private String text;
+    private final String text;
 
     public static String getFormat(ElasticDateFormat... dateFormats) {
         return getFormat(Arrays.asList(dateFormats));

+ 6 - 1
jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/index/strategies/AbstractElasticSearchIndexStrategy.java

@@ -124,7 +124,12 @@ public abstract class AbstractElasticSearchIndexStrategy implements ElasticSearc
         Map<String, Object> property = new HashMap<>();
         if (type instanceof DateTimeType) {
             property.put("type", "date");
-            property.put("format", ElasticDateFormat.getFormat(ElasticDateFormat.epoch_millis, ElasticDateFormat.simple_date, ElasticDateFormat.strict_date));
+            property.put("format", ElasticDateFormat.getFormat(
+                ElasticDateFormat.epoch_millis,
+                ElasticDateFormat.strict_date_hour_minute_second,
+                ElasticDateFormat.strict_date_time,
+                ElasticDateFormat.strict_date)
+            );
         } else if (type instanceof DoubleType) {
             property.put("type", "double");
         } else if (type instanceof LongType) {