From d5f77a020d823d64b8f6f7a6cc5a8432ee11b1ab Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Sat, 13 Apr 2024 19:56:07 +0800
Subject: [PATCH] es 搜索及数据初始化调整
---
src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java | 50 +++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 41 insertions(+), 9 deletions(-)
diff --git a/src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java b/src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java
index 42457df..97c24f7 100644
--- a/src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java
+++ b/src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java
@@ -1,5 +1,6 @@
package org.springblade.es.service;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.logging.log4j.util.Strings;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
@@ -21,12 +22,14 @@
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.springblade.common.cache.SysCache;
import org.springblade.common.constant.EsTableConstant;
import org.springblade.common.param.CommonParamSet;
import org.springblade.common.utils.SpringUtils;
import org.springblade.es.vo.EsParam;
import org.springblade.modules.article.entity.Article;
import org.springblade.modules.article.service.ArticleService;
+import org.springblade.modules.grid.service.IGridRangeService;
import org.springblade.modules.house.entity.HouseEntity;
import org.springblade.modules.house.entity.HouseholdEntity;
import org.springblade.modules.house.service.IHouseService;
@@ -65,6 +68,9 @@
@Autowired
private IHouseholdService householdService;
+
+ @Autowired
+ private IGridRangeService gridRangeService;
@Value("${elasticsearch.sync}")
private boolean elasticsearchSync;
@@ -180,12 +186,17 @@
for (Article article : articleList) {
// 初始化Elasticsearch客户端
IndexRequest indexRequest = new IndexRequest(esParam.getIndexName());
+ String communityNameListString
+ = SysCache.getAllCommunityNameListString(article.getArticleRange(),article.getId().toString());
+ Map<String, Object> map = new HashMap<>(1);
+ map.put("communityCode",communityNameListString);
+ String toString = new JSONObject(map).toString();
// 不设置id
// indexRequest.id("1");
indexRequest.source("tableId", article.getId().toString(),
"tableName", "jczz_article",
"title", article.getTitle(),
- "communityCode", article.getArticleRange(),
+ "communityCode", toString,
"type", null != article.getType() ? article.getType().toString() : "",
"content", article.getContent(),
"articleType", article.getArticleType());
@@ -319,12 +330,17 @@
@Async
public void addArticle(EsParam esParam, Article article) {
if (elasticsearchSync) {
+ // 查询当前文章范围对应的社区名称字符串集合
+ String communityNameListString = SysCache.getAllCommunityNameListString(article.getArticleRange(),article.getId().toString());
+ Map<String, Object> map = new HashMap<>(1);
+ map.put("communityCode",communityNameListString);
+ String toString = new JSONObject(map).toString();
try {
indexDocument(esParam.getIndexName(),
"tableId", article.getId().toString(),
"tableName", "jczz_article",
"title", article.getTitle(),
- "communityCode", article.getArticleRange(),
+ "communityCode", toString,
"type", null != article.getType() ? article.getType().toString() : "",
"content", article.getContent(),
"articleType", article.getArticleType()
@@ -464,18 +480,24 @@
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// boolQueryBuilder.should(QueryBuilders.matchQuery("content", esParam.getSearchKey()));
// boolQueryBuilder.should(QueryBuilders.matchQuery("name", esParam.getSearchKey()));
- boolQueryBuilder.should(QueryBuilders.matchQuery("title", esParam.getSearchKey()));
+ boolQueryBuilder.should(QueryBuilders.matchPhraseQuery("title", esParam.getSearchKey()));
// boolQueryBuilder.should(QueryBuilders.matchQuery("location", esParam.getSearchKey()));
// boolQueryBuilder.should(QueryBuilders.matchQuery("phone", esParam.getSearchKey()));
// boolQueryBuilder.should(QueryBuilders.matchQuery("idCard", esParam.getSearchKey()));
if (!Strings.isBlank(esParam.getTableName())) {
boolQueryBuilder.must(QueryBuilders.matchQuery("tableName", esParam.getTableName()));
}
+ String roleName = SpringUtils.getRequestParam("roleName");
String communityCode = SpringUtils.getRequestParam("communityCode");
if (!Strings.isBlank(communityCode)) {
- boolQueryBuilder.must(QueryBuilders.matchQuery("communityCode", communityCode));
+ if (!Strings.isBlank(roleName) && roleName.equals("inhabitant") && !Strings.isBlank(esParam.getHouseCode())){
+ // 居民根据房屋对应的小区过滤
+ boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("communityCode",gridRangeService.getDistrictIdByHouseCode(esParam.getHouseCode())));
+ }else {
+ // 设置查询社区名称,编号有多个,数字类型目前无法匹配到
+ boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("communityCode", communityCode));
+ }
}
- String roleName = SpringUtils.getRequestParam("roleName");
if (!Strings.isBlank(roleName)){
if (roleName.equals("wgy") || roleName.equals("mj")){
// 不查公告
@@ -636,12 +658,17 @@
* @param data
*/
private void setArticleMap(Article item, Map<String, Object> data) {
+ // 查询当前文章范围对应的社区名称字符串集合
+ String communityNameListString = SysCache.getAllCommunityNameListString(item.getArticleRange(),item.getId().toString());
+ Map<String, Object> map = new HashMap<>(1);
+ map.put("communityCode",communityNameListString);
+ String toString = new JSONObject(map).toString();
data.put("tableId",item.getId());
data.put("title",item.getTitle());
data.put("type",item.getType());
data.put("content",item.getContent());
data.put("articleType",item.getArticleType());
- data.put("communityCode",item.getArticleRange());
+ data.put("communityCode",toString);
}
/**
* 设置场所map
@@ -690,9 +717,14 @@
DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(esParam.getIndexName());
// 根据多个条件 生成 boolQueryBuilder
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
- boolQueryBuilder
- .must(QueryBuilders.matchQuery("tableId", esParam.getTableId()))
- .must(QueryBuilders.matchQuery("tableName", esParam.getTableName()));
+ if (!Strings.isBlank(esParam.getTableId())){
+ boolQueryBuilder
+ .must(QueryBuilders.matchQuery("tableId", esParam.getTableId()));
+ }
+ if (!Strings.isBlank(esParam.getTableName())) {
+ boolQueryBuilder
+ .must(QueryBuilders.matchQuery("tableName", esParam.getTableName()));
+ }
deleteByQueryRequest.setQuery(boolQueryBuilder);
try {
BulkByScrollResponse bulkResponse =
--
Gitblit v1.9.3