Elasticsearch搜索信息,从低版本2.4.6升级到高版本6.0.0遇到的问题

问题描述 :

                项目最初,es应用的不是那么深入,用到es的地方也相对较少,便直接在官网上下载了2.4.6版本的es作为项目中检索信息来使用了;  但是随着,业务不停的变更,以及产品人员需求的多变性. 升级es已经到了必须进行的事情了,就产生了以下内容.

               产品人员要求 将测试环境上数据导入到生产环境上; 当然所有的数据库中数据也都需要同步到生产,这样就需要将es做跨集群的数据传输和同步;

解决方法 :

     1,升级es到高版本;2,将测试数据copy到高版本的index库中;3,暴露对外访问的接口,将测试环境高版本的索引信息同步到外网的生产环境中;

                通过查询es官方网站的api信息,_reindex命令可以将信息进行传输和copy具体的命令如下

// post 请求在Postman工具中即可执行
192.168.xxxx.xxx:9200/_reindex { "source": { "index": "xxxx", "size": 1000 }, "dest": { "index": "yyyy" } }

tips:

  source:是数据来源哪里; index:为你的索引index名称; size: 不是必填项,当然规定后也可以,以及结合查询结果进行redix;

  dest: 目的地的意思; index:为索引index名称; 

这样同一个es中的不同index就可以进行数据同步了;

那么集群间又应该如何同步呢?生产环境和测试环境的es本身没有在同一台机器上;

这时就需要remote参数远程进行同步,而remote这个参数是在es5.0版本以后新加入的功能,所以必须升级es信息;

192.168.x.x:9200/_reindex
{
  "source": {
    "remote": {
      "host": "http://192.168.xx.xx:9200"
    },
    "index": "xxxx"
  },
  "dest": {
    "index": "xxxx"
  }
}

tips :

       remote : 远程路由地址;使用这个参数前提需要在es的配置文件中 elasticsearch.yml中添加 ip为数据来源的白名单;

    host:是在配置需要访问的白名单信息,http信息不能缺少;

      白名单具体的配置格式为:reindex.remote.whitelist:["192.168.xx.xx:9200"] 可以填多个ip;

再这里简单的列举一下低版本和高版本es在java应用中的区别欢迎指正

esclient使用上:

2.4低版本时,在java中获取es客户端时使用的是 TransportClient来获取客户端连接的;

6.0.0高版本时,使用 PreBuiltTransportClient 获取客户端连接;

插入到索引库时:

低版本es: prepareIndex()方法接收的json类型的数据;

高版本es:  prepareIndex()方法接收的map类型的数据;

返回结果:

低版本es: hit.getSource()方法只有返回一种对象类型数据;

高版本es: 提供了 getSourceAsString() 和 getSourceAsMap 两种格式的返回结果;

检索查询排序时:

低版本es: 可以对string类型的字段进行排序;

高版本es: 可以对string类型进行排序,但是需要进行处理,并且排序结果并不理想;

社区中给出的解释是这样的:

遇到这个错误是因为你尝试对一个text类型的字段做排序,而text类型的字段是要分词的。 一来词典很大,性能会很差;二来排序结果是词典里的词,而并非整个text的内容。 出于这2点原因,ES5.x以后对于text类型默认禁用了fielddata,防止对text字段一些错误的操作(排序,聚合,script)而给heap造成很大的压力

我们可以用region.keyword进行聚合,排序。具体如下描述

https://elasticsearch.cn/question/4960

tips: 在使用时,还需要注意的一点是,项目应用中的客户端版本需要和服务器中安装的版本一致;

客户端必须与集群中的节点具有相同的主版本(例如2.x或5.x)。客户端可以连接到具有不同次要版本(例如2.3.x)的集群,但可能不支持新功能。理想情况下,客户端应该具有与集群相同的版本。

 

posted on 2019-01-08 17:23  时倏珍慧  阅读(2785)  评论(0编辑  收藏  举报