linwe
2024-09-03 764d883b5ea3bdc06abbec548b6df0511e567978
src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java
@@ -1,6 +1,7 @@
package org.springblade.es.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.logging.log4j.util.Strings;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
@@ -17,7 +18,10 @@
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.*;
import org.elasticsearch.index.reindex.BulkByScrollResponse;
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
import org.elasticsearch.index.reindex.UpdateByQueryRequest;
import org.elasticsearch.script.Script;
import org.elasticsearch.script.ScriptType;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
@@ -29,6 +33,8 @@
import org.springblade.es.vo.EsParam;
import org.springblade.modules.article.entity.Article;
import org.springblade.modules.article.service.ArticleService;
import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity;
import org.springblade.modules.doorplateAddress.service.IDoorplateAddressService;
import org.springblade.modules.grid.service.IGridRangeService;
import org.springblade.modules.house.entity.HouseEntity;
import org.springblade.modules.house.entity.HouseholdEntity;
@@ -43,7 +49,6 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.elasticsearch.script.Script;
import java.io.IOException;
import java.util.ArrayList;
@@ -71,6 +76,9 @@
   @Autowired
   private IGridRangeService gridRangeService;
   @Autowired
   private IDoorplateAddressService doorplateAddressService;
   @Value("${elasticsearch.sync}")
   private boolean elasticsearchSync;
@@ -102,14 +110,24 @@
    * @return
    */
   public boolean init(EsParam esParam) {
      // 场所
      initPlace(esParam);
      // 通知文章
      initArticle(esParam);
      // 房屋
      initHouse(esParam);
      // 住户
      initHousehold(esParam);
      if (!Strings.isBlank(esParam.getTableName())) {
         if (esParam.getTableName().equals("jczz_place")) {
            // 场所
            initPlace(esParam);
         }
         if (esParam.getTableName().equals("jczz_article")) {
            // 通知文章
            initArticle(esParam);
         }
         if (esParam.getTableName().equals("jczz_house")) {
            // 房屋
            initHouse(esParam);
         }
         if (esParam.getTableName().equals("jczz_household")) {
            // 住户
            initHousehold(esParam);
         }
      }
      // 返回
      return true;
   }
@@ -157,9 +175,9 @@
               // 刷新索引,确保文档可搜索
               client.indices().refresh(new RefreshRequest(esParam.getIndexName()), RequestOptions.DEFAULT);
            } catch (IOException e) {
               e.printStackTrace();
//               e.printStackTrace();
            }
            System.out.println("批量插入结果: " + !bulkResponse.hasFailures());
//            System.out.println("批量插入结果: " + !bulkResponse.hasFailures());
         }
      }
      // 返回
@@ -210,9 +228,9 @@
               // 刷新索引,确保文档可搜索
               client.indices().refresh(new RefreshRequest(esParam.getIndexName()), RequestOptions.DEFAULT);
            } catch (IOException e) {
               e.printStackTrace();
//               e.printStackTrace();
            }
            System.out.println("批量插入结果: " + !bulkResponse.hasFailures());
//            System.out.println("批量插入结果: " + !bulkResponse.hasFailures());
         }
      }
      // 返回
@@ -245,6 +263,7 @@
                  "tableId", household.getId().toString(),
                  "tableName", "jczz_household",
                  "title", household.getName(),
                  "relationship", household.getRelationship(),
                  "name", household.getName(),
                  "phone", household.getPhoneNumber(),
                  "idCard", household.getIdCard(),
@@ -261,9 +280,9 @@
               // 刷新索引,确保文档可搜索
               client.indices().refresh(new RefreshRequest(esParam.getIndexName()), RequestOptions.DEFAULT);
            } catch (IOException e) {
               e.printStackTrace();
//               e.printStackTrace();
            }
            System.out.println("批量插入结果: " + !bulkResponse.hasFailures());
//            System.out.println("批量插入结果: " + !bulkResponse.hasFailures());
         }
      }
      // 返回
@@ -312,9 +331,9 @@
               // 刷新索引,确保文档可搜索
               client.indices().refresh(new RefreshRequest(esParam.getIndexName()), RequestOptions.DEFAULT);
            } catch (IOException e) {
               e.printStackTrace();
//               e.printStackTrace();
            }
            System.out.println("批量插入结果: " + !bulkResponse.hasFailures());
//            System.out.println("批量插入结果: " + !bulkResponse.hasFailures());
         }
      }
      // 返回
@@ -346,7 +365,7 @@
               "articleType", article.getArticleType()
            );
         } catch (IOException e) {
            e.printStackTrace();
//            e.printStackTrace();
         }
      }
   }
@@ -372,7 +391,7 @@
               "communityCode", placeService.getCommunityCode(place.getId())
            );
         } catch (IOException e) {
            e.printStackTrace();
//            e.printStackTrace();
         }
      }
   }
@@ -398,7 +417,7 @@
               "communityCode", houseService.getCommunityCode(house.getId())
            );
         } catch (IOException e) {
            e.printStackTrace();
//            e.printStackTrace();
         }
      }
   }
@@ -412,6 +431,10 @@
   @Async
   public void addHousehold(EsParam esParam, HouseholdEntity household) {
      if (elasticsearchSync) {
         // 如果关系为空,则默认为19
         if (household.getRelationship() == null) {
            household.setRelationship(19);
         }
         try {
            indexDocument(esParam.getIndexName(),
               "tableId", household.getId().toString(),
@@ -420,13 +443,38 @@
               "name", household.getName(),
               "phone", household.getPhoneNumber(),
               "idCard", household.getIdCard(),
               "content", household.getCurrentAddress(),
               "relationship", household.getRelationship().toString(),
               "content", getAddress(household),
               "communityCode", householdService.getCommunityCode(household.getId())
            );
         } catch (IOException e) {
            e.printStackTrace();
//            e.printStackTrace();
         }
      }
   }
   /**
    * 获取房屋地址
    * @param household
    * @return
    */
   public String getAddress(HouseholdEntity household) {
      if (!Strings.isBlank(household.getHouseCode())){
         // 查询对应的房屋地址
         QueryWrapper<DoorplateAddressEntity> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("address_code",household.getHouseCode());
         List<DoorplateAddressEntity> list = doorplateAddressService.list(queryWrapper);
         if (list.size()>0){
            return list.get(0).getAddressName();
         }
         // 房屋查不到的情况
         if (!Strings.isBlank(household.getCurrentAddress())){
            return household.getCurrentAddress();
         }
      }else {
         return household.getCurrentAddress();
      }
      return null;
   }
   /**
@@ -577,9 +625,9 @@
               // 输出操作结果
               boolean acknowledged = deleteResponse.isAcknowledged();
               System.out.println("索引删除成功: " + acknowledged);
//               System.out.println("索引删除成功: " + acknowledged);
            } catch (IOException e) {
               e.printStackTrace();
//               e.printStackTrace();
            }
         }
      }
@@ -597,7 +645,7 @@
      try {
         indexDocument(esParam.getIndexName(), str);
      } catch (IOException e) {
         e.printStackTrace();
//         e.printStackTrace();
      }
      return true;
   }
@@ -632,7 +680,7 @@
            setHouseMap((HouseEntity) item, data);
         }
         if (esParam.getTableName().equals("jczz_household")) {
            setHousehouldMap((HouseholdEntity) item, data);
            setHouseholdMap((HouseholdEntity) item, data);
         }
         Map<String, Object> param = new HashMap<String, Object>();
         param.put("data", data);
@@ -647,7 +695,7 @@
            // 刷新索引,确保文档可搜索
            client.indices().refresh(new RefreshRequest(esParam.getIndexName()), RequestOptions.DEFAULT);
         } catch (IOException e) {
            e.printStackTrace();
//            e.printStackTrace();
         }
      }
   }
@@ -699,14 +747,15 @@
    * @param item
    * @param data
    */
   private void setHousehouldMap(HouseholdEntity item, Map<String, Object> data) {
   private void setHouseholdMap(HouseholdEntity item, Map<String, Object> data) {
      data.put("communityCode",householdService.getCommunityCode(item.getId()));
      data.put("tableId",item.getId());
      data.put("title",item.getName());
      data.put("relationship",item.getRelationship());
      data.put("name",item.getName());
      data.put("phone",item.getPhoneNumber());
      data.put("idCard",item.getIdCard());
      data.put("content",item.getCurrentAddress());
      data.put("content",getAddress(item));
   }
   /**
@@ -730,7 +779,7 @@
            BulkByScrollResponse bulkResponse =
               client.deleteByQuery(deleteByQueryRequest, RequestOptions.DEFAULT);
         } catch (IOException e) {
            e.printStackTrace();
//            e.printStackTrace();
         }
      }
      return true;