elasticsearch-java-api 8.10.X使用示例

1.获取 ElasticsearchClient 实例 具体操作参考本人之前的文章 spring boot3.2 集成 es 8.x 版本工具类 支持认证与非认证的方式( jdk21)-CSDN博客

2.Query DSL 使用样例如下

java 复制代码
 public void testhttps() {

        String host = "17X.20.5X.XXX";

        int port = XXX;

        String login = "xxx";

        String password = "xxx@123";

        // Create the transport and the API client
        EsRestClientUtil esRestClientUtil = EsRestClientUtil.getInstance();
        try (esRestClientUtil) {
            var esClient = esRestClientUtil.getElasticsearchHttpClient(host, port, login, password);
            JSONObject condition = JSONObject.of("xm.keyword", "张柳");
            JSONObject condition1 = JSONObject.of("gmsfhm.keyword", "610102190012120016");
            List<JSONObject> esCondition = new ArrayList<>();
            List<Query> queries = new ArrayList<>();
            condition1.forEach((k, v) -> {
                Query byName = MatchQuery.of(m -> m
                        .field(k)
                        .query(v.toString())
                )._toQuery();
                queries.add(byName);
            });
            // 模糊查询  支持如下四种格式
            // Changing a character (box → fox)
            //Removing a character (black → lack)
            //Inserting a character (sic → sick)
            //Transposing two adjacent characters (act → cat)
            Query fquzzy = FuzzyQuery.of(fq-> fq.field("user").value("suer1").fuzziness("AUTO"))._toQuery();
            // 年龄段查询示例
            Query rksj = RangeQuery.of(mq -> mq.field("age").gt(JsonData.of("18")).lte(JsonData.of("40")))._toQuery();
            Query rksj1 = RangeQuery.of(mq -> mq.field("rksj").gt(JsonData.of("2020-10-15 14:28:10")).lte(JsonData.of("2022-10-15 14:38:14")).format("yyyy-MM-dd HH:mm:ss"))._toQuery();
            // text 类型的时间范围查询示例
            Query rksj2 = RangeQuery.of(mq -> mq.field("gxsj.keyword").gt(JsonData.of("2020-10-15 14:28:10")).lte(JsonData.of("2022-10-15 14:38:14")))._toQuery();
            // termQuery 写法    类比SQl  =
            Query termQuery = TermQuery.of(mq -> mq.field("xm.keyword").value("王五"))._toQuery();
            // TermsQuery 写法  类比SQL  in
            List<FieldValue> fieldValues = new ArrayList<>();
            fieldValues.add(FieldValue.of("张柳"));
            fieldValues.add(FieldValue.of("王五"));
            Query query = TermsQuery.of(mq -> mq.field("xm.keyword").terms(ts -> ts.value(fieldValues)))._toQuery();
            Query query1 = TermsQuery.of(mq -> mq.field("xm.keyword").terms(ts -> ts.value(List.of(FieldValue.of("张柳"),FieldValue.of("王五")))))._toQuery();
            queries.add(termQuery);
            SearchResponse<JSONObject> response = esClient.search(es -> es
                            .index("ads_tag_rk_dd")
                            .query(q -> q
                                    .bool(b -> b
//                                            .should(s-> s.bool(b1 -> b1.must(b2->b2.bool(s2->s2.should(queries))).must(termQuery)))
                                            .must(fquzzy)
//                                            .must(rksj1)
//                                            .must(rksj2)
//                                            .must(termQuery)
//                                            .


                                    )

                            )
                            // 排序写法
                            .sort(SortOptions.of(so->so.field(FieldSort.of(fs -> fs.field("rksj").order(SortOrder.Desc)))))
                            .from(0)
                            .size(3),
                    JSONObject.class);
            List<Hit<JSONObject>> hits = response.hits().hits();
            for (Hit<JSONObject> hit : hits) {
                JSONObject product = hit.source();
                esCondition.add(product);
            }
            log.info("数据为{}",esCondition);
            log.info("总数为{}",response.hits().total().value());
        } catch (Exception e) {e.printStackTrace();
        }

    }
相关推荐
Qdgr_4 分钟前
价值实证:数字化转型标杆案例深度解析
大数据·数据库·人工智能
选择不变11 分钟前
日线周线MACD指标使用图文教程,通达信指标
大数据·区块链·通达信指标公式·炒股技巧·短线指标·炒股指标
高山莫衣36 分钟前
git rebase多次触发冲突
大数据·git·elasticsearch
链上Sniper1 小时前
智能合约状态快照技术:实现 EVM 状态的快速同步与回滚
java·大数据·linux·运维·web3·区块链·智能合约
kobe_OKOK_1 小时前
【团队开发】git 操作流程
git·elasticsearch·团队开发
wx_ywyy67981 小时前
推客系统小程序终极指南:从0到1构建自动裂变增长引擎,实现业绩10倍增长!
大数据·人工智能·短剧·短剧系统·推客系统·推客小程序·推客系统开发
蚂蚁数据AntData2 小时前
从性能优化赛到社区Committer,走进赵宇捷在Apache Fory的成长之路
大数据·开源·apache·数据库架构
谷新龙0013 小时前
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据·hadoop·docker
阿里云大数据AI技术5 小时前
AI搜索 MCP最佳实践
数据库·人工智能·搜索引擎
FF-Studio5 小时前
【硬核数学】3. AI如何应对不确定性?概率论为模型注入“灵魂”《从零构建机器学习、深度学习到LLM的数学认知》
大数据·人工智能·深度学习·机器学习·数学建模·自然语言处理·概率论