| | |
| | | import java.util.ArrayList;
|
| | | import java.util.List;
|
| | |
|
| | | import org.elasticsearch.action.search.MultiSearchRequest;
|
| | | import org.elasticsearch.action.search.MultiSearchResponse;
|
| | | import org.elasticsearch.action.search.MultiSearchResponse.Item;
|
| | | import org.elasticsearch.action.search.SearchRequest;
|
| | | import org.elasticsearch.action.search.SearchResponse;
|
| | | import org.elasticsearch.client.RequestOptions;
|
| | | import org.elasticsearch.common.unit.Fuzziness;
|
| | | import org.elasticsearch.index.query.BoolQueryBuilder;
|
| | | import org.elasticsearch.index.query.FuzzyQueryBuilder;
|
| | | import org.elasticsearch.index.query.MatchPhraseQueryBuilder;
|
| | | import org.elasticsearch.index.query.MatchQueryBuilder;
|
| | | import org.elasticsearch.index.query.MoreLikeThisQueryBuilder;
|
| | | import org.elasticsearch.index.query.MultiMatchQueryBuilder;
|
| | | import org.elasticsearch.index.query.QueryBuilders;
|
| | | import org.elasticsearch.index.query.TermQueryBuilder;
|
| | | import org.elasticsearch.index.query.WildcardQueryBuilder;
|
| | | import org.elasticsearch.search.SearchHit;
|
| | | import org.elasticsearch.search.SearchHits;
|
| | | import org.elasticsearch.search.builder.SearchSourceBuilder;
|
| | |
| | | * @param uid 用户id
|
| | | * @return
|
| | | */
|
| | | public List<ESOrder> queryMatch(String key, String uid) {
|
| | | List<ESOrder> list = new ArrayList<ESOrder>();
|
| | |
|
| | | // 商品名称匹配
|
| | | MatchQueryBuilder match1 = new MatchQueryBuilder("goodsName", key).fuzziness(Fuzziness.AUTO);
|
| | | // 订单号匹配
|
| | | MatchQueryBuilder match2 = new MatchQueryBuilder("orderNo", key).fuzziness(Fuzziness.AUTO);
|
| | |
|
| | | TermQueryBuilder term1 = QueryBuilders.termQuery("uid", uid);
|
| | | // 上级
|
| | | TermQueryBuilder term2 = QueryBuilders.termQuery("uidDirect", uid);
|
| | | // 上上级
|
| | | TermQueryBuilder term3 = QueryBuilders.termQuery("uidIndirect", uid);
|
| | |
|
| | | SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
|
| | | sourceBuilder.query(match1).query(match2).query(term1).query(term2).query(term3);
|
| | |
|
| | | SearchRequest searchRequest = new SearchRequest();
|
| | | searchRequest.indices(index);
|
| | | searchRequest.source(sourceBuilder);
|
| | | try {
|
| | | SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
|
| | | SearchHits hits = searchResponse.getHits();
|
| | | SearchHit[] searchHits = hits.getHits();
|
| | | Gson gson = new Gson();
|
| | | for (SearchHit hit : searchHits) {
|
| | | String content = hit.getSourceAsString();
|
| | | list.add(gson.fromJson(content, ESOrder.class));
|
| | | }
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return list;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 查询匹配
|
| | | * |
| | | * @param key 搜索词
|
| | | * @param uid 用户id
|
| | | * @return
|
| | | */
|
| | | public List<ESOrder> query(String key, String uid) {
|
| | | public List<ESOrder> query(String key, String uid, List<Integer> listPlatform) {
|
| | | List<ESOrder> list = new ArrayList<ESOrder>();
|
| | | // 商品名称匹配
|
| | | BoolQueryBuilder should1 = QueryBuilders.boolQuery().should(QueryBuilders.matchPhraseQuery("orderNo", key))
|
| | |
| | |
|
| | | // 查询创建
|
| | | SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
|
| | | sourceBuilder.query(QueryBuilders.boolQuery().must(should1).must(should2));
|
| | | |
| | | if (listPlatform == null || listPlatform.size() == 0) {
|
| | | sourceBuilder.query(QueryBuilders.boolQuery().must(should1).must(should2));
|
| | | } else {
|
| | | BoolQueryBuilder should3 = QueryBuilders.boolQuery();
|
| | | for (Integer platform: listPlatform) {
|
| | | should3.should(QueryBuilders.termQuery("platform", platform));
|
| | | }
|
| | | sourceBuilder.query(QueryBuilders.boolQuery().must(should1).must(should2).must(should3));
|
| | | }
|
| | |
|
| | | SearchRequest searchRequest = new SearchRequest();
|
| | | searchRequest.indices(index);
|
| | | searchRequest.indices(getDocument(ESOrder.class));
|
| | | searchRequest.source(sourceBuilder);
|
| | | try {
|
| | | SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
|