From d6c6ffe64d30f4c4e1017058efce25aa9ba8733c Mon Sep 17 00:00:00 2001 From: jaime Date: Thu, 27 Feb 2025 10:01:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../easyes/core/biz/BaseSortParam.java | 2 +- .../easyes/core/conditions/function/Func.java | 120 +++++++++--------- .../easyes/core/conditions/function/Geo.java | 4 +- .../easyes/core/kernel/AbstractWrapper.java | 4 +- .../easyes/core/kernel/WrapperProcessor.java | 21 +-- 5 files changed, 77 insertions(+), 74 deletions(-) diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/biz/BaseSortParam.java b/easy-es-core/src/main/java/org/dromara/easyes/core/biz/BaseSortParam.java index 6f498437..09b392c1 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/biz/BaseSortParam.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/biz/BaseSortParam.java @@ -38,7 +38,7 @@ public class BaseSortParam { /** * 计算方式 ARC PLANE 默认PLANE */ - private GeoDistanceType geoDistance; + private GeoDistanceType geoDistanceType; /** * 距离单位 默认为km */ diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/conditions/function/Func.java b/easy-es-core/src/main/java/org/dromara/easyes/core/conditions/function/Func.java index 7917ff4e..61ccd33f 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/conditions/function/Func.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/conditions/function/Func.java @@ -217,7 +217,7 @@ public interface Func extends Serializable { * @return wrapper */ default Children orderByDistanceAsc(R column, double lat, double lon) { - return orderByDistanceAsc(true, FieldUtils.getFieldName(column), DistanceUnit.Meters, GeoDistanceType.Plane, GeoUtils.create(lat, lon)); + return orderByDistanceAsc(true, FieldUtils.getFieldName(column), DistanceUnit.Kilometers, GeoDistanceType.Plane, GeoUtils.create(lat, lon)); } /** @@ -237,13 +237,13 @@ public interface Func extends Serializable { * 地理位置坐标点由近及远排序 * * @param column 列 - * @param geoDistance 距离计算方式 + * @param geoDistanceType 距离计算方式 * @param lat 纬度 * @param lon 经度 * @return wrapper` */ - default Children orderByDistanceAsc(R column, GeoDistanceType geoDistance, double lat, double lon) { - return orderByDistanceAsc(true, FieldUtils.getFieldName(column), DistanceUnit.Meters, geoDistance, GeoUtils.create(lat, lon)); + default Children orderByDistanceAsc(R column, GeoDistanceType geoDistanceType, double lat, double lon) { + return orderByDistanceAsc(true, FieldUtils.getFieldName(column), DistanceUnit.Kilometers, geoDistanceType, GeoUtils.create(lat, lon)); } /** @@ -251,13 +251,13 @@ public interface Func extends Serializable { * * @param column 列 * @param unit 距离单位 - * @param geoDistance 距离计算方式 + * @param geoDistanceType 距离计算方式 * @param lat 纬度 * @param lon 经度 * @return wrapper */ - default Children orderByDistanceAsc(R column, DistanceUnit unit, GeoDistanceType geoDistance, double lat, double lon) { - return orderByDistanceAsc(true, FieldUtils.getFieldName(column), unit, geoDistance, GeoUtils.create(lat, lon)); + default Children orderByDistanceAsc(R column, DistanceUnit unit, GeoDistanceType geoDistanceType, double lat, double lon) { + return orderByDistanceAsc(true, FieldUtils.getFieldName(column), unit, geoDistanceType, GeoUtils.create(lat, lon)); } /** @@ -268,7 +268,7 @@ public interface Func extends Serializable { * @return wrapper */ default Children orderByDistanceAsc(R column, GeoLocation... geoPoints) { - return orderByDistanceAsc(true, FieldUtils.getFieldName(column), DistanceUnit.Meters, GeoDistanceType.Plane, geoPoints); + return orderByDistanceAsc(true, FieldUtils.getFieldName(column), DistanceUnit.Kilometers, GeoDistanceType.Plane, geoPoints); } /** @@ -287,12 +287,12 @@ public interface Func extends Serializable { * 地理位置坐标点由近及远排序 * * @param column 列 - * @param geoDistance 距离计算方式 + * @param geoDistanceType 距离计算方式 * @param geoPoints 多边形坐标点数组 * @return wrapper */ - default Children orderByDistanceAsc(R column, GeoDistanceType geoDistance, GeoLocation... geoPoints) { - return orderByDistanceAsc(true, FieldUtils.getFieldName(column), DistanceUnit.Meters, geoDistance, geoPoints); + default Children orderByDistanceAsc(R column, GeoDistanceType geoDistanceType, GeoLocation... geoPoints) { + return orderByDistanceAsc(true, FieldUtils.getFieldName(column), DistanceUnit.Kilometers, geoDistanceType, geoPoints); } /** @@ -300,12 +300,12 @@ public interface Func extends Serializable { * * @param column 列 * @param unit 距离单位 - * @param geoDistance 距离计算方式 + * @param geoDistanceType 距离计算方式 * @param geoPoints 多边形坐标点数组 * @return wrapper */ - default Children orderByDistanceAsc(R column, DistanceUnit unit, GeoDistanceType geoDistance, GeoLocation... geoPoints) { - return orderByDistanceAsc(true, FieldUtils.getFieldName(column), unit, geoDistance, geoPoints); + default Children orderByDistanceAsc(R column, DistanceUnit unit, GeoDistanceType geoDistanceType, GeoLocation... geoPoints) { + return orderByDistanceAsc(true, FieldUtils.getFieldName(column), unit, geoDistanceType, geoPoints); } /** @@ -317,7 +317,7 @@ public interface Func extends Serializable { * @return wrapper */ default Children orderByDistanceAsc(String column, double lat, double lon) { - return orderByDistanceAsc(true, column, DistanceUnit.Meters, GeoDistanceType.Plane, GeoUtils.create(lat, lon)); + return orderByDistanceAsc(true, column, DistanceUnit.Kilometers, GeoDistanceType.Plane, GeoUtils.create(lat, lon)); } /** @@ -337,13 +337,13 @@ public interface Func extends Serializable { * 地理位置坐标点由近及远排序 * * @param column 列名 字符串 - * @param geoDistance 距离计算方式 + * @param geoDistanceType 距离计算方式 * @param lat 纬度 * @param lon 经度 * @return wrapper */ - default Children orderByDistanceAsc(String column, GeoDistanceType geoDistance, double lat, double lon) { - return orderByDistanceAsc(true, column, DistanceUnit.Meters, geoDistance, GeoUtils.create(lat, lon)); + default Children orderByDistanceAsc(String column, GeoDistanceType geoDistanceType, double lat, double lon) { + return orderByDistanceAsc(true, column, DistanceUnit.Kilometers, geoDistanceType, GeoUtils.create(lat, lon)); } /** @@ -351,13 +351,13 @@ public interface Func extends Serializable { * * @param column 列名 字符串 * @param unit 距离单位 - * @param geoDistance 距离计算方式 + * @param geoDistanceType 距离计算方式 * @param lat 纬度 * @param lon 经度 * @return wrapper */ - default Children orderByDistanceAsc(String column, DistanceUnit unit, GeoDistanceType geoDistance, double lat, double lon) { - return orderByDistanceAsc(true, column, unit, geoDistance, GeoUtils.create(lat, lon)); + default Children orderByDistanceAsc(String column, DistanceUnit unit, GeoDistanceType geoDistanceType, double lat, double lon) { + return orderByDistanceAsc(true, column, unit, geoDistanceType, GeoUtils.create(lat, lon)); } /** @@ -368,7 +368,7 @@ public interface Func extends Serializable { * @return wrapper */ default Children orderByDistanceAsc(String column, GeoLocation... geoPoints) { - return orderByDistanceAsc(true, column, DistanceUnit.Meters, GeoDistanceType.Plane, geoPoints); + return orderByDistanceAsc(true, column, DistanceUnit.Kilometers, GeoDistanceType.Plane, geoPoints); } /** @@ -387,12 +387,12 @@ public interface Func extends Serializable { * 地理位置坐标点由近及远排序 * * @param column 列名 字符串 - * @param geoDistance 距离计算方式 + * @param geoDistanceType 距离计算方式 * @param geoPoints 多边形坐标点数组 * @return wrapper */ - default Children orderByDistanceAsc(String column, GeoDistanceType geoDistance, GeoLocation... geoPoints) { - return orderByDistanceAsc(true, column, DistanceUnit.Meters, geoDistance, geoPoints); + default Children orderByDistanceAsc(String column, GeoDistanceType geoDistanceType, GeoLocation... geoPoints) { + return orderByDistanceAsc(true, column, DistanceUnit.Kilometers, geoDistanceType, geoPoints); } /** @@ -400,12 +400,12 @@ public interface Func extends Serializable { * * @param column 列名 字符串 * @param unit 距离单位 - * @param geoDistance 距离计算方式 + * @param geoDistanceType 距离计算方式 * @param geoPoints 多边形坐标点数组 * @return wrapper */ - default Children orderByDistanceAsc(String column, DistanceUnit unit, GeoDistanceType geoDistance, GeoLocation... geoPoints) { - return orderByDistanceAsc(true, column, unit, geoDistance, geoPoints); + default Children orderByDistanceAsc(String column, DistanceUnit unit, GeoDistanceType geoDistanceType, GeoLocation... geoPoints) { + return orderByDistanceAsc(true, column, unit, geoDistanceType, geoPoints); } /** @@ -414,11 +414,11 @@ public interface Func extends Serializable { * @param condition 执行条件 * @param column 列名 字符串 * @param unit 距离单位 重载方法默认为km - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param geoPoints 多边形坐标点数组 * @return wrapper */ - Children orderByDistanceAsc(boolean condition, String column, DistanceUnit unit, GeoDistanceType geoDistance, GeoLocation... geoPoints); + Children orderByDistanceAsc(boolean condition, String column, DistanceUnit unit, GeoDistanceType geoDistanceType, GeoLocation... geoPoints); /** * 地理位置坐标点由近及远排序 @@ -429,7 +429,7 @@ public interface Func extends Serializable { * @return wrapper */ default Children orderByDistanceDesc(R column, double lat, double lon) { - return orderByDistanceDesc(true, FieldUtils.getFieldName(column), DistanceUnit.Meters, GeoDistanceType.Plane, GeoUtils.create(lat, lon)); + return orderByDistanceDesc(true, FieldUtils.getFieldName(column), DistanceUnit.Kilometers, GeoDistanceType.Plane, GeoUtils.create(lat, lon)); } /** @@ -449,13 +449,13 @@ public interface Func extends Serializable { * 地理位置坐标点由近及远排序 * * @param column 列 - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param lat 纬度 * @param lon 经度 * @return wrapper */ - default Children orderByDistanceDesc(R column, GeoDistanceType geoDistance, double lat, double lon) { - return orderByDistanceDesc(true, FieldUtils.getFieldName(column), DistanceUnit.Meters, geoDistance, GeoUtils.create(lat, lon)); + default Children orderByDistanceDesc(R column, GeoDistanceType geoDistanceType, double lat, double lon) { + return orderByDistanceDesc(true, FieldUtils.getFieldName(column), DistanceUnit.Kilometers, geoDistanceType, GeoUtils.create(lat, lon)); } /** @@ -463,13 +463,13 @@ public interface Func extends Serializable { * * @param column 列名 * @param unit 距离单位 - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param lat 纬度 * @param lon 经度 * @return wrapper */ - default Children orderByDistanceDesc(R column, DistanceUnit unit, GeoDistanceType geoDistance, double lat, double lon) { - return orderByDistanceDesc(true, FieldUtils.getFieldName(column), unit, geoDistance, GeoUtils.create(lat, lon)); + default Children orderByDistanceDesc(R column, DistanceUnit unit, GeoDistanceType geoDistanceType, double lat, double lon) { + return orderByDistanceDesc(true, FieldUtils.getFieldName(column), unit, geoDistanceType, GeoUtils.create(lat, lon)); } /** @@ -480,7 +480,7 @@ public interface Func extends Serializable { * @return wrapper */ default Children orderByDistanceDesc(R column, GeoLocation... geoPoints) { - return orderByDistanceDesc(true, FieldUtils.getFieldName(column), DistanceUnit.Meters, GeoDistanceType.Plane, geoPoints); + return orderByDistanceDesc(true, FieldUtils.getFieldName(column), DistanceUnit.Kilometers, GeoDistanceType.Plane, geoPoints); } /** @@ -499,12 +499,12 @@ public interface Func extends Serializable { * 地理位置坐标点由近及远排序 * * @param column 列 - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param geoPoints 多边形坐标点数组 * @return wrapper */ - default Children orderByDistanceDesc(R column, GeoDistanceType geoDistance, GeoLocation... geoPoints) { - return orderByDistanceDesc(true, FieldUtils.getFieldName(column), DistanceUnit.Meters, geoDistance, geoPoints); + default Children orderByDistanceDesc(R column, GeoDistanceType geoDistanceType, GeoLocation... geoPoints) { + return orderByDistanceDesc(true, FieldUtils.getFieldName(column), DistanceUnit.Kilometers, geoDistanceType, geoPoints); } /** @@ -512,12 +512,12 @@ public interface Func extends Serializable { * * @param column 列 * @param unit 距离单位 - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param geoPoints 多边形坐标点数组 * @return wrapper */ - default Children orderByDistanceDesc(R column, DistanceUnit unit, GeoDistanceType geoDistance, GeoLocation... geoPoints) { - return orderByDistanceDesc(true, FieldUtils.getFieldName(column), unit, geoDistance, geoPoints); + default Children orderByDistanceDesc(R column, DistanceUnit unit, GeoDistanceType geoDistanceType, GeoLocation... geoPoints) { + return orderByDistanceDesc(true, FieldUtils.getFieldName(column), unit, geoDistanceType, geoPoints); } /** @@ -529,7 +529,7 @@ public interface Func extends Serializable { * @return wrapper */ default Children orderByDistanceDesc(String column, double lat, double lon) { - return orderByDistanceDesc(true, column, DistanceUnit.Meters, GeoDistanceType.Plane, GeoUtils.create(lat, lon)); + return orderByDistanceDesc(true, column, DistanceUnit.Kilometers, GeoDistanceType.Plane, GeoUtils.create(lat, lon)); } /** @@ -549,13 +549,13 @@ public interface Func extends Serializable { * 地理位置坐标点由近及远排序 * * @param column 列名 字符串 - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param lat 纬度 * @param lon 经度 * @return wrapper */ - default Children orderByDistanceDesc(String column, GeoDistanceType geoDistance, double lat, double lon) { - return orderByDistanceDesc(true, column, DistanceUnit.Meters, geoDistance, GeoUtils.create(lat, lon)); + default Children orderByDistanceDesc(String column, GeoDistanceType geoDistanceType, double lat, double lon) { + return orderByDistanceDesc(true, column, DistanceUnit.Kilometers, geoDistanceType, GeoUtils.create(lat, lon)); } /** @@ -563,13 +563,13 @@ public interface Func extends Serializable { * * @param column 列名 字符串 * @param unit 距离单位 - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param lat 纬度 * @param lon 经度 * @return wrapper */ - default Children orderByDistanceDesc(String column, DistanceUnit unit, GeoDistanceType geoDistance, double lat, double lon) { - return orderByDistanceDesc(true, column, unit, geoDistance, GeoUtils.create(lat, lon)); + default Children orderByDistanceDesc(String column, DistanceUnit unit, GeoDistanceType geoDistanceType, double lat, double lon) { + return orderByDistanceDesc(true, column, unit, geoDistanceType, GeoUtils.create(lat, lon)); } /** @@ -580,7 +580,7 @@ public interface Func extends Serializable { * @return wrapper */ default Children orderByDistanceDesc(String column, GeoLocation... geoPoints) { - return orderByDistanceDesc(true, column, DistanceUnit.Meters, GeoDistanceType.Plane, geoPoints); + return orderByDistanceDesc(true, column, DistanceUnit.Kilometers, GeoDistanceType.Plane, geoPoints); } /** @@ -599,12 +599,12 @@ public interface Func extends Serializable { * 地理位置坐标点由近及远排序 * * @param column 列名 字符串 - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param geoPoints 多边形坐标点数组 * @return wrapper */ - default Children orderByDistanceDesc(String column, GeoDistanceType geoDistance, GeoLocation... geoPoints) { - return orderByDistanceDesc(true, column, DistanceUnit.Meters, geoDistance, geoPoints); + default Children orderByDistanceDesc(String column, GeoDistanceType geoDistanceType, GeoLocation... geoPoints) { + return orderByDistanceDesc(true, column, DistanceUnit.Kilometers, geoDistanceType, geoPoints); } /** @@ -612,12 +612,12 @@ public interface Func extends Serializable { * * @param column 列名 字符串 * @param unit 距离单位 - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param geoPoints 多边形坐标点数组 * @return wrapper */ - default Children orderByDistanceDesc(String column, DistanceUnit unit, GeoDistanceType geoDistance, GeoLocation... geoPoints) { - return orderByDistanceDesc(true, column, unit, geoDistance, geoPoints); + default Children orderByDistanceDesc(String column, DistanceUnit unit, GeoDistanceType geoDistanceType, GeoLocation... geoPoints) { + return orderByDistanceDesc(true, column, unit, geoDistanceType, geoPoints); } /** @@ -626,11 +626,11 @@ public interface Func extends Serializable { * @param condition 条件 * @param column 列名 字符串 * @param unit 距离单位 重载方法默认为km - * @param geoDistance 距离计算方式,重载方法默认为GeoDistanceType.Plane + * @param geoDistanceType 距离计算方式,重载方法默认为GeoDistanceType.Plane * @param geoPoints 多边形坐标点数组 * @return wrapper */ - Children orderByDistanceDesc(boolean condition, String column, DistanceUnit unit, GeoDistanceType geoDistance, GeoLocation... geoPoints); + Children orderByDistanceDesc(boolean condition, String column, DistanceUnit unit, GeoDistanceType geoDistanceType, GeoLocation... geoPoints); /** * 字段 IN diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/conditions/function/Geo.java b/easy-es-core/src/main/java/org/dromara/easyes/core/conditions/function/Geo.java index de1aed58..ff3d02ff 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/conditions/function/Geo.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/conditions/function/Geo.java @@ -220,7 +220,7 @@ public interface Geo extends Serializable { * @return wrapper */ default Children geoDistance(R column, Double distance, GeoLocation centralGeoLocation) { - return geoDistance(true, column, distance, DistanceUnit.Meters, centralGeoLocation, DEFAULT_BOOST); + return geoDistance(true, column, distance, DistanceUnit.Kilometers, centralGeoLocation, DEFAULT_BOOST); } /** @@ -315,7 +315,7 @@ public interface Geo extends Serializable { * @return wrapper */ default Children geoDistance(String column, Double distance, GeoLocation centralGeoLocation) { - return geoDistance(true, column, distance, DistanceUnit.Meters, centralGeoLocation, DEFAULT_BOOST); + return geoDistance(true, column, distance, DistanceUnit.Kilometers, centralGeoLocation, DEFAULT_BOOST); } /** diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/AbstractWrapper.java b/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/AbstractWrapper.java index 4abfc432..30f7d0cf 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/AbstractWrapper.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/AbstractWrapper.java @@ -418,7 +418,7 @@ public abstract class AbstractWrapper q.geoDistance(p -> { - p.field(realField).location((GeoLocation) param.getExt2()).boost(param.getBoost()); - String unit = param.getExt1() == null ? DistanceUnit.Meters.jsonValue() : ((DistanceUnit) param.getExt1()).jsonValue(); + String unit = param.getExt1() == null ? DistanceUnit.Kilometers.jsonValue() : ((DistanceUnit) param.getExt1()).jsonValue(); Double distance = (Double) param.getVal(); - p.distance(distance + unit); + p.boost(param.getBoost()) + .field(realField) + .location((GeoLocation) param.getExt2()) + .distance(distance + unit) + .distanceType(GeoDistanceType.Arc) + .validationMethod(GeoValidationMethod.Strict); return p; })); setBool(bool, query, param.getPrevQueryType()); @@ -255,8 +259,8 @@ public class WrapperProcessor { .field(realField) .shape(x -> x // .shape(JsonData.of(WellKnownText.toWKT(val))) - .shape(JsonData.of(GeoUtils.toMap((Geometry) param.getVal()))) - .relation((GeoShapeRelation) param.getExt1()) + .shape(JsonData.of(GeoUtils.toMap((Geometry) param.getVal()))) + .relation((GeoShapeRelation) param.getExt1()) ) .boost(param.getBoost()) .build()._toQuery(); @@ -279,7 +283,7 @@ public class WrapperProcessor { realField = getRealField(param.getColumn(), mappingColumnMap); String[] split = param.getColumn().split(SIGN); String path = split[split.length - 1]; - query = Query.of(b -> b.bool( x -> getBool(children, x, entityInfo, path))); + query = Query.of(b -> b.bool(x -> getBool(children, x, entityInfo, path))); NestedQuery.Builder nestedQueryBuilder = QueryBuilders.nested().path(realField).query(query).scoreMode((ChildScoreMode) param.getVal()); // 设置嵌套类型高亮查询参数 setNestedHighlight(path, param.getColumn(), nestedQueryBuilder, entityInfo); @@ -308,8 +312,7 @@ public class WrapperProcessor { .type(realField) .query(query) .minChildren(1) - .scoreMode((ChildScoreMode) param.getVal()) - ; + .scoreMode((ChildScoreMode) param.getVal()); setBool(bool, Query.of(x -> x.hasChild(hasChildQueryBuilder.build())), param.getPrevQueryType()); break; default: @@ -627,7 +630,7 @@ public class WrapperProcessor { .field(realField) .location(baseSortParam.getGeoPoints()) .order(baseSortParam.getSortOrder()) - .distanceType(baseSortParam.getGeoDistance()) + .distanceType(baseSortParam.getGeoDistanceType()) .unit(baseSortParam.getUnit()) )); case CUSTOMIZE: