轻松掌握Elasticsearch查询:一站式查询解析利器

1. 背景

在海量数据时代,高效的数据检索变得越来越重要。Elasticsearch作为当今最流行的分布式搜索和分析引擎,为开发者提供了强大的全文搜索能力。然而,复杂的查询构建DSL让开发者望而生畏。

2 easy-Elasticsearch诞生

这是一款基于Java注解的轻量级Elasticsearch搜索组件,旨在解决Elasticsearch使用难度较大的问题。开发者无需关心复杂的ES查询DSL语句的构建细节,只需根据业务需求在Java对象属性上添加相应的注解,就能轻松实现高效的搜索功能,大大减少开发难度和时间成本。
官方地址:https://github.com/xinchengzezhi/easy-elasticsearch

3.使用

@Data
public class EsSearchQuery implements Serializable {
    /**
     * equals 等于
     */
    @EsEquals(name = "_id")
    private String                id;
    /**
     * not equals 不等于
     */
    @EsNotEquals
    private String                tenantId;
    /**
     * like 模糊搜索 左右模糊可选 支持?*等特殊字符
     */
    @EsLike(name = "orgName", leftLike = true, rightLike = true)
    private String                purOrgName;
    /**
     * es 分词匹配
     */
    @EsMatch
    private String                context;
    /**
     * range 范围查询起
     */
    @EsRange(name = "createTime", gt = true, includeLower = true)
    private Long                  createTimeStart;
    /**
     * range 范围查询止
     */
    @EsRange(name = "createTime", lt = true, includeUpper = true)
    private Long                  createTimeEnd;
    /**
     * 嵌套子查询
     */
    @EsMulti
    private EsOrgMultiQuery       esOrgMultiQuery;
    /**
     * nested 
     */
    @EsNested(name = "subList")
    private EsNestedQuery         nestedQuery;
    
}
@Service
public class Search{
  @Autowired
    private EsQueryClient esQueryService;
    public String search() {
        SearchPageRequest<Object> request = new SearchPageRequest<>();
        EsSearchQuery query = new EsSearchQuery();
        query.setId("123");
        EsOrgMultiQuery orgMultiQuery = new EsOrgMultiQuery();
        orgMultiQuery.setCode("10005767661");
        orgMultiQuery.setOrgContainSub("13453460001");
        request.setParam(query);
        request.setPageSize(20);
        request.setIndex("alias_idx_test");
        SearchPageResult<Map> afterResult = esQueryService.search(request, Map.class);
        return  JsonUtils.writeAsJson(afterResult);
    }
}
dsl日志如下:
{
    "from": 0,
    "size": 10,
    "query": {
        "bool": {
            "filter": [
                {
                    "terms": {
                        "status": [
                            "EFFECTIVE"
                        ],
                        "boost": 1
                    }
                },
                {
                    "term": {
                        "deleted": {
                            "value": 0,
                            "boost": 1
                        }
                    }
                },
                {
                    "terms": {
                        "tenderRelStyle": [
                            "NONE"
                        ],
                        "boost": 1
                    }
                },
                {
                    "term": {
                        "relTenderTaskFlag": {
                            "value": 0,
                            "boost": 1
                        }
                    }
                },
                {
                    "bool": {
                        "should": [
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "term": {
                                                "orgCode": {
                                                    "value": "000101009003",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            },
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "wildcard": {
                                                "orgCode": {
                                                    "wildcard": "000101009003*",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            },
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "wildcard": {
                                                "orgCode": {
                                                    "wildcard": "000101009003*",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            },
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "wildcard": {
                                                "orgCode": {
                                                    "wildcard": "0001010000500002*",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            },
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "wildcard": {
                                                "orgCode": {
                                                    "wildcard": "0001*",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            },
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "wildcard": {
                                                "orgCode": {
                                                    "wildcard": "00010100*",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            },
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "wildcard": {
                                                "orgCode": {
                                                    "wildcard": "0001*",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            },
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "wildcard": {
                                                "orgCode": {
                                                    "wildcard": "000101009003*",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            }
                        ],
                        "adjust_pure_negative": true,
                        "boost": 1
                    }
                },
                {
                    "bool": {
                        "should": [
                            {
                                "bool": {
                                    "filter": [
                                        {
                                            "wildcard": {
                                                "orgCode": {
                                                    "wildcard": "00010100*",
                                                    "boost": 1
                                                }
                                            }
                                        }
                                    ],
                                    "adjust_pure_negative": true,
                                    "boost": 1
                                }
                            }
                        ],
                        "adjust_pure_negative": true,
                        "boost": 1
                    }
                },
                {
                    "term": {
                        "tenantId": {
                            "value": "cscec",
                            "boost": 1
                        }
                    }
                }
            ],
            "must_not": [
                {
                    "term": {
                        "tenderType": {
                            "value": "OFFLINE",
                            "boost": 1
                        }
                    }
                }
            ],
            "adjust_pure_negative": true,
            "boost": 1
        }
    },
    "_source": {
        "includes": [

        ],
        "excludes": [

        ]
    },
    "sort": [
        {
            "urgentFlag": {
                "order": "desc"
            }
        },
        {
            "createTime": {
                "order": "desc"
            }
        }
    ],
    "track_total_hits": 2147483647
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容