Advertisement
Guest User

Untitled

a guest
Aug 31st, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.44 KB | None | 0 0
  1. public Map findAllByIndexParams(AuctionIndexSearchParams searchParams, Pageable pageable) {
  2. List rows = new ArrayList();
  3. Map response = new HashMap();
  4.  
  5. final List<FilterBuilder> filters = Lists.newArrayList();
  6. final NativeSearchQueryBuilder searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery());
  7. Optional.ofNullable(searchParams.getCategoryId()).ifPresent(v -> filters.add(boolFilter().must(termFilter("cat", v))));
  8. Optional.ofNullable(searchParams.getCurrency()).ifPresent(v -> filters.add(boolFilter().must(termFilter("curr", v))));
  9. Optional.ofNullable(searchParams.getTreeCategoryId()).ifPresent(v -> filters.add(boolFilter().must(termFilter("tcat", v))));
  10. Optional.ofNullable(searchParams.getUid()).ifPresent(v -> filters.add(boolFilter().must(termFilter("uid", v))));
  11.  
  12. // //access for many uids
  13. // if (searchParams.getUids() != null) {
  14. // Optional.ofNullable(searchParams.getUids().split(",")).ifPresent(v -> {
  15. // filters.add(boolFilter().must(termsFilter("uid", v)));
  16. // });
  17. // }
  18. //
  19. // //access for many categories
  20. // if (searchParams.getCategories() != null) {
  21. // Optional.ofNullable(searchParams.getCategories().split(",")).ifPresent(v -> {
  22. // filters.add(boolFilter().must(termsFilter("cat", v)));
  23. // });
  24. // }
  25. final BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
  26. //access for many uids
  27. if (searchParams.getUids() != null) {
  28. if (searchParams.getItemId() != null || searchParams.getTitle() != null) {
  29. Optional.ofNullable(searchParams.getUids().split(",")).ifPresent(v -> {
  30. filters.add(boolFilter().must(termsFilter("uid", v)));
  31. });
  32. } else {
  33. for (String user : searchParams.getUids().split(",")) {
  34. boolQueryBuilder.should(queryStringQuery(user).field("uid"));
  35. }
  36. }
  37. }
  38. //access for many categories
  39. if (searchParams.getCategories() != null) {
  40. Optional.ofNullable(searchParams.getCategories().split(",")).ifPresent(v -> {
  41. filters.add(boolFilter().must(termsFilter("cat", v)));
  42. });
  43. }
  44. if (searchParams.getItemId() != null) {
  45. boolQueryBuilder.must(queryStringQuery(searchParams.getItemId()).field("_id"));
  46. }
  47. if (Optional.ofNullable(searchParams.getTitle()).isPresent()) {
  48. boolQueryBuilder.must(queryStringQuery(searchParams.getTitle()).analyzeWildcard(true).field("title"));
  49. }
  50. if (searchParams.getLoc() != null) {
  51. filters.add(boolFilter().must(termsFilter("loc", searchParams.getLoc())));
  52. // boolQueryBuilder.must(queryStringQuery(searchParams.getLoc()).field("loc"));
  53. }
  54. if (searchParams.getPow() != null) {
  55. filters.add(boolFilter().must(termsFilter("pow", searchParams.getPow())));
  56. // boolQueryBuilder.must(queryStringQuery(searchParams.getPow()).field("pow"));
  57. }
  58. if (searchParams.getWoj() != null) {
  59. filters.add(boolFilter().must(termsFilter("woj", searchParams.getWoj())));
  60. // boolQueryBuilder.must(queryStringQuery(searchParams.getWoj()).field("woj"));
  61. }
  62. if (searchParams.getLang() != null) {
  63. boolQueryBuilder.must(queryStringQuery(searchParams.getLang()).field("lang"));
  64. }
  65. if (Optional.ofNullable(searchParams.getCatdecFrom()).isPresent()
  66. || Optional.ofNullable(searchParams.getCatdecTo()).isPresent()) {
  67.  
  68. filters.add(rangeFilter("catdec").from(searchParams.getCatdecFrom()).to(searchParams.getCatdecTo()));
  69. }
  70. // if (searchParams.getCatdec() != null) {
  71. // boolQueryBuilder.must(queryStringQuery(String.valueOf(searchParams.getCatdec())).field("catdec"));
  72. // }
  73. if (Optional.ofNullable(searchParams.getStartDateFrom()).isPresent()
  74. || Optional.ofNullable(searchParams.getStartDateTo()).isPresent()) {
  75. filters.add(rangeFilter("start_date").from(searchParams.getStartDateFrom()).to(searchParams.getStartDateTo()));
  76. }
  77.  
  78. if (Optional.ofNullable(searchParams.getEndDateFrom()).isPresent()
  79. || Optional.ofNullable(searchParams.getEndDateTo()).isPresent()) {
  80. filters.add(rangeFilter("end_date").from(searchParams.getEndDateFrom()).to(searchParams.getEndDateTo()));
  81. }
  82.  
  83. if (Optional.ofNullable(searchParams.getPriceFrom()).isPresent()
  84. || Optional.ofNullable(searchParams.getPriceTo()).isPresent()) {
  85. filters.add(rangeFilter("price").from(searchParams.getPriceFrom()).to(searchParams.getPriceTo()));
  86. }
  87.  
  88. searchQuery.withQuery(boolQueryBuilder);
  89.  
  90. FilterBuilder[] filterArr = new FilterBuilder[filters.size()];
  91. filterArr = filters.toArray(filterArr);
  92. searchQuery.withFilter(andFilter(filterArr));
  93.  
  94. if (searchParams.getOrderBy() != null && searchParams.getOrderDir() != null) {
  95. if (searchParams.getOrderDir().toLowerCase().equals("asc")) {
  96. searchQuery.withSort(SortBuilders.fieldSort(searchParams.getOrderBy()).order(SortOrder.ASC));
  97. } else {
  98. searchQuery.withSort(SortBuilders.fieldSort(searchParams.getOrderBy()).order(SortOrder.DESC));
  99. }
  100. }
  101.  
  102. String scrollId = searchTemplate.scan(searchQuery.build(), 1000, false);
  103.  
  104. Page<AuctionIndex> page = searchTemplate.scroll(scrollId, 5000L, AuctionIndex.class);
  105.  
  106. if (page.hasContent()) {
  107. while (true) {
  108.  
  109. for (AuctionIndex hit : page.getContent()) {
  110. Auction row = Auction.builder()
  111. .lang(hit.getLang())
  112. .catdec(hit.getCatdec())
  113. .cat(hit.getCat())
  114. .item(Long.parseLong(hit.getId()))
  115. .endts(hit.getEnd_date())
  116. .startts(hit.getStart_date())
  117. .loc(hit.getLoc())
  118. .pow(hit.getPow())
  119. .woj(hit.getWoj())
  120. .price(hit.getPrice())
  121. .qty(hit.getQty())
  122. .title(hit.getTitle())
  123. .user(hit.getUid())
  124. .catName(hit.getCat_name())
  125. .build();
  126. rows.add(row);
  127. }
  128. page = searchTemplate.scroll(scrollId, 5000L, AuctionIndex.class);
  129. if (page.hasContent() == false) {
  130. break;
  131. }
  132. }
  133. }
  134.  
  135. response.put("content", rows);
  136. return response;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement