我刚刚开始学习Elasticsearch索引;然而,在我的日常工作中,我需要每天更新es索引。您可能假设数据每天都在变化,所以我删除我的索引名并重新创建相同的索引,并将数据插入重新创建的es-index中,但有时我们的客户端会说数据有时会消失,在重新刷新之后,它会稍后出现,因此会影响来自客户端的请求?请问这是否是更新索引的正确方法,我知道有一个叫做update by查询方法,但我只想知道这是否是更新es索引的坏方法?或者它将如何影响在网页上出现的结果,由前端开发人员调用?
基本上,我的代码如下所示:
if self.es.indices.exist(index=idx):
我有以下代码:(线程一次只能访问特定obj的一个synchronized(someObj)。)
@Async
public void funcA() {
synchronized (someObj) {
//query (using spring) for **some_data_in_ES**
//check if **some_data_in_ES** is not 'nothing'
//update **some_data_in_ES** to be 'A' using spring
}
}
@Async
pu
我想在我的Spring Boot应用程序中添加全文搜索功能,数据应该存储在SQL数据库中,我也读到不推荐使用ES作为主数据库。我想到的一种方法是:创建、更新和删除操作既可以在主SQL数据库上完成,也可以在ES中完成(我们可以使用Java High Level REST客户端),例如,当在SQL中插入一行时,我们也在ES中对其进行索引,然后使用Elasticsearch执行搜索。我想我们也可以使用Hibernate搜索。这是正确的方法吗?另外还有什么建议吗?
我正在使用Python创建一个Elasticsearch索引,如下所示:
from elasticsearch import Elasticsearch
es = Elasticsearch()
index_body = {"mappings": {".percolator": {"properties": {"message": {"type": "string", "analyzer": "english"}}}}}
# Creates the index i
我对ElasticSearch的用法有点困惑。我现在有一个带有关系数据库(Mysql)的应用程序(Ruby on Rails),我正试图从ElasticSearch提供的搜索功能中获益。我仍然想像以前一样使用我的关系数据库,但我只想使用ElasticSearch进行搜索。因此,我可以使用ES作为辅助存储吗?如何告诉我的应用程序总是将数据从Mysql复制到ES?这里有什么最佳实践吗?
我还听说couchdb很适合搜索,它是ES的替代品还是提供了不同的功能?