mirror of
https://gitee.com/dromara/easy-es.git
synced 2025-12-06 17:18:57 +08:00
feat: 优化索引创建
This commit is contained in:
parent
d6c6ffe64d
commit
7574a0ee9a
@ -164,7 +164,7 @@ public interface BaseEsMapper<T> {
|
|||||||
* @param wrapper 条件
|
* @param wrapper 条件
|
||||||
* @return 查询参数
|
* @return 查询参数
|
||||||
*/
|
*/
|
||||||
SearchRequest.Builder getSearchSourceBuilder(Wrapper<T> wrapper);
|
SearchRequest.Builder getSearchBuilder(Wrapper<T> wrapper);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* es原生查询
|
* es原生查询
|
||||||
|
|||||||
@ -201,7 +201,7 @@ public class BaseEsMapperImpl<T> implements BaseEsMapper<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SearchRequest.Builder getSearchSourceBuilder(Wrapper<T> wrapper) {
|
public SearchRequest.Builder getSearchBuilder(Wrapper<T> wrapper) {
|
||||||
return WrapperProcessor.buildSearchBuilder(wrapper, entityClass);
|
return WrapperProcessor.buildSearchBuilder(wrapper, entityClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import co.elastic.clients.elasticsearch.core.SearchRequest;
|
|||||||
import co.elastic.clients.elasticsearch.core.SearchResponse;
|
import co.elastic.clients.elasticsearch.core.SearchResponse;
|
||||||
import co.elastic.clients.json.JsonData;
|
import co.elastic.clients.json.JsonData;
|
||||||
import co.elastic.clients.transport.rest_client.RestClientOptions;
|
import co.elastic.clients.transport.rest_client.RestClientOptions;
|
||||||
|
import org.dromara.easyes.common.constants.BaseEsConstants;
|
||||||
import org.dromara.easyes.core.biz.EntityInfo;
|
import org.dromara.easyes.core.biz.EntityInfo;
|
||||||
import org.dromara.easyes.core.biz.EsPageInfo;
|
import org.dromara.easyes.core.biz.EsPageInfo;
|
||||||
import org.dromara.easyes.core.biz.OrderByParam;
|
import org.dromara.easyes.core.biz.OrderByParam;
|
||||||
@ -940,39 +941,39 @@ public class AllTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 4.删除
|
// 4.删除
|
||||||
// @Test
|
@Test
|
||||||
// @Order(76)
|
@Order(76)
|
||||||
// public void testDeleteById() {
|
public void testDeleteById() {
|
||||||
// int count = documentMapper.deleteById("1");
|
int count = documentMapper.deleteById("1");
|
||||||
// Assertions.assertEquals(1, count);
|
Assertions.assertEquals(1, count);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Test
|
|
||||||
// @Order(77)
|
|
||||||
// public void testDeleteBatchIds() {
|
|
||||||
// List<String> idList = Arrays.asList("2", "3", "4");
|
|
||||||
// int count = documentMapper.deleteBatchIds(idList);
|
|
||||||
// Assertions.assertEquals(3, count);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @Test
|
@Test
|
||||||
// @Order(78)
|
@Order(77)
|
||||||
// public void testDeleteByWrapper() {
|
public void testDeleteBatchIds() {
|
||||||
// LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
|
List<String> idList = Arrays.asList("2", "3", "4");
|
||||||
// wrapper.match(Document::getCreator, "老汉");
|
int count = documentMapper.deleteBatchIds(idList);
|
||||||
//
|
Assertions.assertEquals(3, count);
|
||||||
// int count = documentMapper.delete(wrapper);
|
}
|
||||||
// Assertions.assertEquals(18, count);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @Test
|
@Test
|
||||||
// @Order(80)
|
@Order(78)
|
||||||
// public void testDeleteIndex() {
|
public void testDeleteByWrapper() {
|
||||||
// boolean deleted = documentMapper.deleteIndex(EntityInfoHelper.getEntityInfo(Document.class).getIndexName());
|
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
|
||||||
// boolean lockDeleted = documentMapper.deleteIndex(BaseEsConstants.LOCK_INDEX);
|
wrapper.match(Document::getCreator, "老汉");
|
||||||
// Assertions.assertTrue(deleted);
|
|
||||||
// Assertions.assertTrue(lockDeleted);
|
int count = documentMapper.delete(wrapper);
|
||||||
// }
|
Assertions.assertEquals(18, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(80)
|
||||||
|
public void testDeleteIndex() {
|
||||||
|
boolean deleted = documentMapper.deleteIndex(EntityInfoHelper.getEntityInfo(Document.class).getIndexName());
|
||||||
|
boolean lockDeleted = documentMapper.deleteIndex(BaseEsConstants.LOCK_INDEX);
|
||||||
|
Assertions.assertTrue(deleted);
|
||||||
|
Assertions.assertTrue(lockDeleted);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(79)
|
@Order(79)
|
||||||
@ -996,7 +997,8 @@ public class AllTest {
|
|||||||
.must(d -> d.terms(e -> e.field("state").terms(f -> f.value(values))))
|
.must(d -> d.terms(e -> e.field("state").terms(f -> f.value(values))))
|
||||||
));
|
));
|
||||||
|
|
||||||
System.out.println(boolQueryBuilder);
|
Query query = boolQueryBuilder.build()._toQuery();
|
||||||
|
System.out.println(query.toString());
|
||||||
System.out.println("--------------------");
|
System.out.println("--------------------");
|
||||||
|
|
||||||
// MP及EE写法
|
// MP及EE写法
|
||||||
@ -1004,7 +1006,12 @@ public class AllTest {
|
|||||||
wrapper.eq("business_type", 1)
|
wrapper.eq("business_type", 1)
|
||||||
.and(a -> a.eq("state", 9).or(b -> b.eq("state", 8).eq("bidding_sign", 1)))
|
.and(a -> a.eq("state", 9).or(b -> b.eq("state", 8).eq("bidding_sign", 1)))
|
||||||
.or(i -> i.eq("business_type", 2).in("state", 2, 3));
|
.or(i -> i.eq("business_type", 2).in("state", 2, 3));
|
||||||
documentMapper.selectList(wrapper);
|
SearchRequest.Builder searchBuilder = documentMapper.getSearchBuilder(wrapper);
|
||||||
|
Query qry = searchBuilder.build().query();
|
||||||
|
if (qry != null) {
|
||||||
|
System.out.println(qry);
|
||||||
|
}
|
||||||
|
List<Document> documents = documentMapper.selectList(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -108,7 +108,7 @@ public class MixTest {
|
|||||||
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
|
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
|
||||||
wrapper.eq(Document::getTitle, "老汉")
|
wrapper.eq(Document::getTitle, "老汉")
|
||||||
.match(Document::getContent, "推*");
|
.match(Document::getContent, "推*");
|
||||||
SearchRequest.Builder searchSourceBuilder = documentMapper.getSearchSourceBuilder(wrapper);
|
SearchRequest.Builder searchSourceBuilder = documentMapper.getSearchBuilder(wrapper);
|
||||||
|
|
||||||
// 追加或者设置一些SearchSourceBuilder支持但EE暂不支持的参数 不建议追加query参数,因为如果追加query参数会直接覆盖上面EE已经帮你生成好的query,以最后set的query为准
|
// 追加或者设置一些SearchSourceBuilder支持但EE暂不支持的参数 不建议追加query参数,因为如果追加query参数会直接覆盖上面EE已经帮你生成好的query,以最后set的query为准
|
||||||
searchSourceBuilder.timeout(TimeValue.timeValueSeconds(3L));
|
searchSourceBuilder.timeout(TimeValue.timeValueSeconds(3L));
|
||||||
@ -127,7 +127,7 @@ public class MixTest {
|
|||||||
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
|
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
|
||||||
wrapper.eq(Document::getTitle, "老汉")
|
wrapper.eq(Document::getTitle, "老汉")
|
||||||
.match(Document::getContent, "推*");
|
.match(Document::getContent, "推*");
|
||||||
SearchRequest.Builder searchSourceBuilder = documentMapper.getSearchSourceBuilder(wrapper);
|
SearchRequest.Builder searchSourceBuilder = documentMapper.getSearchBuilder(wrapper);
|
||||||
|
|
||||||
// ElasticsearchClient原生语法
|
// ElasticsearchClient原生语法
|
||||||
AggregationBuilder aggregation = AggregationBuilders.terms("titleAgg")
|
AggregationBuilder aggregation = AggregationBuilders.terms("titleAgg")
|
||||||
@ -148,7 +148,7 @@ public class MixTest {
|
|||||||
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
|
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
|
||||||
wrapper.eq(Document::getTitle, "老汉")
|
wrapper.eq(Document::getTitle, "老汉")
|
||||||
.match(Document::getContent, "推*");
|
.match(Document::getContent, "推*");
|
||||||
SearchRequest.Builder searchSourceBuilder = documentMapper.getSearchSourceBuilder(wrapper);
|
SearchRequest.Builder searchSourceBuilder = documentMapper.getSearchBuilder(wrapper);
|
||||||
|
|
||||||
// 用户又想在上面的基础上,再追加一些个性化的查询参数进去 但实际上此时执行查询时,查询条件仅仅是最后设置的title=隔壁老王,前面的老汉推*会被覆盖
|
// 用户又想在上面的基础上,再追加一些个性化的查询参数进去 但实际上此时执行查询时,查询条件仅仅是最后设置的title=隔壁老王,前面的老汉推*会被覆盖
|
||||||
searchSourceBuilder.query(QueryBuilders.matchQuery("title", "隔壁老王"));
|
searchSourceBuilder.query(QueryBuilders.matchQuery("title", "隔壁老王"));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user