Java操作es插入数据后,立即查询没结果解决办法

这篇具有很好参考价值的文章主要介绍了Java操作es插入数据后,立即查询没结果解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么每次在批量添加或者删除完成之后查询结果没有更新?

原因:ES默认不执行刷新操作,需要手动设置参数才能在更新文档后立即刷新。
从以下源码中可以看出刷新策略有三种: NONE(“false”)、IMMEDIATE(“true”)、WAIT_UNTIL(“wait_for”)

 public static enum RefreshPolicy implements Writeable {
 		/**
 		 *请求向Elasticsearch提交了数据,不进行数据刷新,直接结束请求。
 		 *这种策略的优点是资源消耗低、写入性能高,缺点是实时性低、数据安全性差。
 		**/
        NONE("false"),
        /**
 		 *请求向Elasticsearch提交了数据,立即进行数据刷新,然后再结束请求。
 		 *这种策略的优点是实时性高、操作延时短,缺点是资源消耗高。
 		**/
        IMMEDIATE("true"),
        /**
 		 *请求向Elasticsearch提交了数据,等待数据完成刷新,然后再结束请求。
 		 *这种策略的优点是实时性和资源消耗之间有一个平衡,缺点是操作延时较长。
 		**/
        WAIT_UNTIL("wait_for");
        private final String value;

        private RefreshPolicy(String value) {
            this.value = value;
        }

        public String getValue() {
            return this.value;
        }

        public static WriteRequest.RefreshPolicy parse(String value) {
            WriteRequest.RefreshPolicy[] var1 = values();
            int var2 = var1.length;

            for(int var3 = 0; var3 < var2; ++var3) {
                WriteRequest.RefreshPolicy policy = var1[var3];
                if (policy.getValue().equals(value)) {
                    return policy;
                }
            }

            if ("".equals(value)) {
                return IMMEDIATE;
            } else {
                throw new IllegalArgumentException("Unknown value for refresh: [" + value + "].");
            }
        }

        public static WriteRequest.RefreshPolicy readFrom(StreamInput in) throws IOException {
            return values()[in.readByte()];
        }

        public void writeTo(StreamOutput out) throws IOException {
            out.writeByte((byte)this.ordinal());
        }
    }

二、 具体操作:

request.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);//插入完成后立即强制刷新索引

添加位置如下:

 //单条增加
 IndexRequest request = new IndexRequest();
 request.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
 //后面省略。。。。。
 


//批量增加
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
//同上

官网地址:es批量操作官方文档
注:默认是不进行刷新的,因此需要手动添加进行刷新。文章来源地址https://www.toymoban.com/news/detail-519698.html

到了这里,关于Java操作es插入数据后,立即查询没结果解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES中使用 Top Hits 查询分桶聚合结果的每个桶的详细数据

    Top hits(顶部命中)是一个聚合功能,用于在查询结果中返回每个桶(bucket)中的顶部 N 个文档。这对于需要在聚合结果中查看每个桶中的最相关或最高评分文档的情况非常有用。 简单来说,Top Hits 就是对聚合结果中相关文档的详细展示,它不同于 Post Filter,Post Filter 是基于

    2024年02月07日
    浏览(35)
  • .NET 数据库大数据操作方案(插入、更新、删除、查询 、插入或更新)

    海量数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库达到极限性能,当然你如果不用sqlsugar了解一下原理也可以使用其他ORM实现   BulkCopy是一种用于高效批量插入大量数据

    2024年02月08日
    浏览(46)
  • SQL - 将查询结果插入到另一张表中

    注意:字段必须一致(位置一致,类型一致),否则会出现数据转换错误。 例如,要将 test 表插入到 newTest 表中,则可以通过如下SQL语句实现: 使用场景: 从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。

    2024年02月16日
    浏览(43)
  • ES各种查询语法及响应结果

    目录 查询 创建 删除请求 1. 删除索引  数据类型 一、创建索引     1.1 创建book_test索引     1.2 查看索引映射     1.3 添加文档记录     1.4 查询文档     1.6 删除文档中某一条数据 二、查询语法 2.1 termterms查询 2.2 match查询属于高层查询,他会根据你查询的字段类型不一样

    2023年04月09日
    浏览(42)
  • ES查询索引字段的分词结果

    一、_termvectors  1、查看文档中某一个字段的分词结果 GET /{index}/{type}/{_id}/_termvectors?fields=[field] 2、样例: text的值为:https://www.b4d99.com/html/202204/45672.html 得到的结果: 二、_analyze 1、语法 2、样例: text的值为:https://www.b4d99.com/html/202204/45672.html 得到的结果:

    2024年02月11日
    浏览(68)
  • ES聚合查询 基于RestHighLevelClient依赖 Java操作

    一、介绍 (偏自我理解)         1.ES聚合查询通用流程                 1.分组 ( 好比Mysql --- group by )                 2.组内聚合 也叫 组内指标( 好比Mysql --- SUM()、COUNT()、AVG()、MAX()、MIN() )         2.桶(我要是es开发者,我起名叫啥都行)                 1.满足特

    2024年02月06日
    浏览(48)
  • 【ElasticSearch】使用 Java 客户端 RestClient 实现对文档的查询操作,以及对搜索结果的排序、分页、高亮处理

    在 Elasticsearch 中,通过 RestAPI 进行 DSL 查询语句的构建通常是通过 HighLevelRestClient 中的 resource() 方法来实现的。该方法包含了查询、排序、分页、高亮等所有功能,为构建复杂的查询提供了便捷的接口。 RestAPI 中构建查询条件的核心部分是由一个名为 QueryBuilders 的工具类提供

    2024年01月16日
    浏览(63)
  • ElasticSearch进阶:多种查询操作,各种ES查询以及在Java中的实现

    目录 前言 1 词条查询 1.1 等值查询-term 1.2 多值查询-terms 1.3 范围查询-range 1.4 前缀查询-prefix 1.5 通配符查询-wildcard 2 复合查询 2.1 布尔查询 2.2 Filter查询 3 聚合查询 3.1 最值、平均值、求和 3.2 去重查询 3.3 分组聚合 3.3.1 单条件分组 3.3.2 多条件分组 3.4 过滤聚合 ElasticSearch 第一篇

    2024年02月02日
    浏览(53)
  • es查询响应结果中获取某些字段的值

            有时候使用es查询出的结果包含多个字段,如果数据中仅仅包含几个字段时,我们是很容易挑出自己需要的字段值,但是如果数据中包含几十或者几百甚至更多时,尤其是数据中嵌套好多层时,不容易直接挑取出需要的值,这时候可以借助程序直接查找出来。或者

    2024年02月12日
    浏览(55)
  • 如何使用 Python 操作 MongoDB,包括连接、插入、查询、更新和删除数据,以及进阶用法

    MongoDB 是一种流行的 NoSQL 数据库,支持面向文档的数据存储。Python 是一种流行的编程语言,提供了许多库和工具,方便与 MongoDB 进行交互。在本文中,我们将介绍如何使用 Python 操作 MongoDB,包括连接、插入、查询、更新和删除数据,以及一些高级用法。 连接 MongoDB 在使用

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包