我们使用弹性搜索动态映射,java文件如下所示。
@Document(indexName = "test", type = "test", shards = 1, replicas = 0)
public class ElasticSearchIndexObject {
private @Id
@Indexed
String id;
private @Indexed("name")
String name;
}
我们使用每60分钟运行一次的调度程序从数据库中获取数据并添加到索引中。
Connection conn = dataSource.getConnection();
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(FETCH_SIZE);
rs = stmt.executeQuery(ESEARCH_QUERY);
int i=1;
while (rs.next()) {
ElasticSearchIndexObject indexObj = new ElasticSearchIndexObject();
indexObj.setName(rs.getString("name"));
indexObj.setId(rs.getString("id"));
indexObjects.add(indexObj);
i=i+1;
}
elasticSearchObjectIndexRepository.save(indexObjects);
indexObjects.clear();
}
问题是数据库中已删除的记录。这些记录不会从索引中删除,而是成为孤立记录。
我遇到了“ttl”属性,并寻找一种方法将其添加到索引中,以便在ttl时间之后删除孤儿记录。
如果不将ttl添加到每个索引中,它是否应该是所有文档的通用级别?如果是,是否应该为每次调度运行设置此设置?
谢谢,
确保索引类型已经配置了“_ttl”:{“enabled”:true}
映射。然后在_source
中传递文档的_ttl
值。在POJO中添加这个字段:
@JsonInclude(value=Include.NON_EMPTY) //to make it optional
@JsonProperty("_ttl")
private Long ttl;
我有一个设计糟糕的文档结构: 我想从上面的文档中检索标题、Fach和代码。 多谢了。
升级到Spring boot 2.3和Spring data elasticsearch 4.0.9后的问题。我有这样的文档: 这在spring data 3.0中与Jackson配合得很好,但升级到4.0后,Jackson不再可用,现在我收到了一个来自spring的实例化异常,无法实例化URL对象。 例外情况: 任何关于解决方案的想法都将受到赞赏。
我试图用Spring Boot和弹性搜索设置一个应用程序。这个应用程序已经使用Spring Data JPA存储库来持久化我的实体。当我试图在启用弹性搜索配置的情况下运行应用程序时,我遇到的问题是,当存储库被扫描时,我得到了一个异常。 我得到了以下例外: 我的存储库的定义如下: 异常似乎是由于count查询的签名导致的,该签名返回一个int。尽管这个存储库可以很好地处理JPA,但它会抛出一个异常,
匹配查询用于实现以下情况的映射是什么 不区分大小写的搜索 数字搜索 特殊字符搜索 单字符搜索 > 我尝试使用通配符,但id不支持区分大小写 尝试使用小写规范化器匹配查询,它不支持特殊字符和单字符搜索 已尝试使用 ngram 匹配查询,但它不支持特殊字符和数字搜索。 任何人都可以帮助我的映射来支持上面提到的所有情况,无论是类型还是类型都很好
是否缺少配置设置?
我正在使用spring数据elasticsearch来执行CRUD操作。 我有一个扩展Elasticsearch chRepository的自定义存储库。 最终,ElasticsearchRepository扩展了CrudRepository,这意味着可以更新现有记录。 问题是,你是如何做到这一点的?我还没有找到一个名为“update()”的方法 我认为做以下事情会有用(代码从https://gi