使用Elasticsearch遇到的小问题

我们使用一个开源小工具实现了将数据从MySQL同步到ElasticSearch中的功能,几个月前调试时可以获得数据,因为前端没来得及联调,所以这件事就搁久了,也忘了一些细节。今天重新弄了一下,死活都是返回空数据,使用CURL获取数据是看到有很多条的。不得已,上调试器。

调试器里就很容易发现是这个错误: “Page 1 of 0 containing UNKNOWN instances”,这是构建搜索查询条件后,真正调用ElasticsearchRepository的接口去查询时的提示信息。看这信息就知道是有东西不匹配,但又不知道具体指的什么玩意。首先想到的是字段是否匹配,就是代码里面polo对象和ElasticSearch里面的字段是否匹配,当然也不清楚是否需要匹配,反正先改成匹配再说。改成匹配后,还是返回空数据,感觉有点头大,这种提示信息不太好定位到具体的问题,网上搜索,也没有多少相关内容,而且解决的办法看起来也行不通。

不服啊,然后就再使用CURL命令去查看ElasticSearch里面的数据,突然瞄到_index和_type这两个键的值,这两个值是一样的,因为我在将数据从MySQL同步到ElasticSearch时并不指定任何复杂的规则,默认的这两个值和MySQL表名相同。于是又回来看代码,发现Entity对象的注解为: @Document(indexName = “offline_entity”, type = “OfflineEntity”),这里就发现index和type的值不一样,于是将type值改成和index一样的,查询接口数据哗哗地过来了。有些纳闷之前没注意到这个,怎么也有数据返回了呢,哎,时间久了,有些糊涂了。

解决之后总结,觉得其实这个问题并没有多大难度,主要还是对ElasticSearch的相关概念和使用没有那么熟悉,再加上提示信息也是不明不白的,导致只能靠这种方式来诊断。问题暂时解决了,但以后还是要多花点时间去熟悉ElasticSearch的更多概念和原理,相信用起来就会更顺手。

微信扫码,进入【技术人成长】社群逛逛。