ElasticSearch索引会随机变空,但大多数情况下,它发生在部署用Rails构建的应用程序之后。
以下是有关ElastiSearch的一些信息:
curl-xget“http://localhost:9200/_nodes?pretty”
curl-xget“http://localhost:9200/_cluster/health?pretty”
curl“localhost:9200/_cat/indexs?v”
/var/log/elasticsearch/elasticsearch.log中的重复堆栈跟踪:
[2014-11-21 16:46:05,204][WARN ][cluster.service ] [Joe Cartelli] failed to reconnect to node [Joe Cartelli][AvwiuMNRRUywfTyii7gI0A][ip-172-31-19-137][inet[/172.31.19.137:9300]]
org.elasticsearch.transport.ConnectTransportException: [Joe Cartelli][inet[/172.31.19.137:9300]] connect_timeout[30s]
at org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:727)
at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:656)
at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:624)
at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:146)
at org.elasticsearch.cluster.service.InternalClusterService$ReconnectToNodes.run(InternalClusterService.java:518)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.net.ConnectException: Connection refused: /172.31.19.137:9300
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:150)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
... 3 more
OBS:172.31.19.137 IP地址是AWS上EC2实例的专用IP。
编辑:
erros剧照发生了,我有了关于这个问题的新信息。
在“data gone”之后,我查看elasticsearch.log
,堆栈跟踪被打印了很多次。我不知道这个错误是发生在‘数据消失’之前还是之后。请注意,索引名称为products_production_20141130122307375
。
运行列出所有Elasticsearch索引的命令curl'localhost:9200/_cat/indexs?v'
,打印了产品索引,但编号不同:Products_Production_20141xxxxxxxxx
(我没有记下确切的编号)。
那么,为什么索引的名称不一样呢?
有可能,由于某种奇怪的原因,Rails/Searchkick重新创建了索引并丢失了数据?
编辑2
问题发生在ElasticSearch记录以下内容后:
[2014-12-02 00:47:10,698][INFO ][cluster.metadata ] [Tyr] [products_production_20141202004040313] update_mapping [product] (dynamic)
[2014-12-02 00:58:02,173][INFO ][cluster.metadata ] [Tyr] [products_production_20141202005801257] creating index, cause [api], shards [5]/[1], mappings [_default_]
[2014-12-02 00:58:46,064][INFO ][cluster.metadata ] [Tyr] [products_production_20141202005801257] update_mapping [product] (dynamic)
[2014-12-02 00:58:48,371][INFO ][cluster.metadata ] [Tyr] [products_production_20141202004040313] deleting index
看起来searchkick
重新创建了索引,并丢失了旧索引的乘积。
也许这个问题可能与您的问题有关:
https://github.com/ankane/searchkick/issues/307
我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!
我刚加入弹性搜索公司。而不知道如何在JSON请求中对索引和an类型发出正确的请求?(所以我不想像localhost:9200/myindex/mytype/_search那样在URL中使用索引和类型,而是向localhost:9200/_search发出JSON请求) 我试过这样的东西。但我得到的结果是'AAA'索引而不是'BBB'索引。如何只从bbb索引得到结果或者根本没有结果?
假设我有三个指数:城市、博物馆和景点。 现在我正在查询一个术语的所有索引(),例如“维也纳” 作为结果,我得到: 维也纳:维也纳艺术博物馆 有没有办法优先考虑指数,这样我就可以得到第一个城市,而不是景点,最后是博物馆,就像这样: 维也纳 维也纳的Riesenrad 维也纳:维也纳艺术博物馆 维也纳:维也纳历史博物馆
我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。
我是弹性搜索新手,并且已经完成了类似mykong教程的基本教程 我对创建任何文档的一部分有疑问 创建操作示例插入包含 /mkyong/posts/1001和以下请求数据的新文档: 问题1:-ES是否会在上述文档的所有属性上创建反向索引,即默认情况下的标题/类别/已发布/作者,并提供全文搜索,还是需要明确提及? 问题2:-在上述示例中,我们已经有了唯一的\u id,即。如果我已经将其存储在DB中并生
我编写了一个reindex方法,可以执行以下操作: 它确实起到了作用,但我现在确定,仅仅删除然后创建一个索引是否有意义。如何改进此方法?