前言
官方推荐的RestHighLevelClient在网络上相关文档较少,因此很多坑都需要通过自己看官方文档,源代码解决。因此这系列文章就是为了解决这些文档提及不全的部分,如果有文章没提到的部分,欢迎一起交流。
这篇就关于使用RestClient操作索引,内容就是解决问题的实例。同样,一切版本以5.6.0为准。其他升级版本新的api不属此列。
正文
问题根源
由于使用RestHighLevelClient(后称为rhlClient)时,进行Index操作,所有IndexRequest都会校验Index,type,source,contentType不为空。
// 校验源码
if (type == null) {
validationException = addValidationError("type is missing", validationException);
}
if (source == null) {
validationException = addValidationError("source is missing", validationException);
}
if (contentType == null) {
validationException = addValidationError("content type is missing", validationException);
}
所以,如果只创建索引时一定会遇到校验抛出异常,而是否有其他方法绕过校验不得而知,而本人的方法是使用老版本RestClient直接操作。虽然在封装上会比rhlClient简陋,但是同时具备了更高的灵活性。
操作实例
创建索引
首先给出rest api 操作的格式:
因为整合了ik中文分词器,所以“analyzer”: “ik_max_word”此处参考安装配置ik分词器
/PUT { {host}}:{ {port}}/demo { "mappings":{ "doc":{ "properties":{ "title":{ "type":"text", "analyzer": "ik_max_word" }, "content":{ "type":"text", "analyzer": "ik_max_word" }, "uniqueId":{ "type":"keyword", "index":"not_analyzed" }, "created": { "type": "date", "format": "strict_date_optional_time||epoch_millis" } } } }, "settings":{

1736

被折叠的 条评论
为什么被折叠?



