1、pom.xml文件

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.2.3</version>
</dependency>

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.2.3</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>

2、es配置(案例使用SpringCloud)

es.cluster-name=es
es.ip=127.0.0.1
es.port=9300
es.pool=5

3、es初始化

@Configuration
public class EsConfig {

@Autowired
private Environment env;

@SuppressWarnings("resource")
@Bean
public TransportClient transportClient() throws UnknownHostException{
Settings settings = Settings.builder()
.put("cluster.name", env.getProperty("es.cluster-name"))
.put("client.transport.sniff", true)
.put("thread_pool.search.size", Integer.valueOf(env.getProperty("es.pool")))
.build();
TransportAddress transportAddress = new TransportAddress(InetAddress.getByName(env.getProperty("es.ip")), Integer.valueOf(env.getProperty("es.port")));
TransportClient esClient = new PreBuiltTransportClient(settings).addTransportAddress(transportAddress);
return esClient;
}

}

4、es索引Controller

@RestController
public class EsController {

@Autowired
EsService esService;

/**
* 初始化es索引
*
* @param userCode
* @return
*/
@RequestMapping(value = "/es/initIndex", method = { RequestMethod.GET, RequestMethod.POST })
public void initIndex() {
esService.initIndex();
}}

5、es索引接口

public interface EsService {

/**
* es索引
* @return
*/
void initIndex();

}

6、es索引接口实现

@Service
public class EsServiceImpl implements EsService {

Log log = LogFactory.getLog(EsServiceImpl.class);

@Autowired
TransportClient client;

public void initIndex(){
try {
XContentBuilder builder = XContentFactory
.jsonBuilder()
.startObject()
.startObject("test")
.startObject("properties")
.startObject("id")
.field("type", "integer")
.endObject()
.startObject("um")
.field("type", "keyword")
.endObject()
.startObject("question")
.field("type", "text")
.field("analyzer", "ik")
.field("search_analyzer","ik")
.endObject()
.startObject("questionType")
.field("type", "integer")
.endObject()
.startObject("nlp")
.field("type", "keyword")
.endObject()
.startObject("isHit")
.field("type", "integer")
.endObject()
.startObject("isSatisfied")
.field("type", "integer")
.endObject()
.startObject("opinion")
.field("type", "keyword")
.endObject()
.startObject("label")
.field("type", "keyword")
.endObject()
.startObject("askTimes")
.field("type", "integer")
.endObject()
.startObject("createdBy")
.field("type", "keyword")
.endObject()
.startObject("updatedBy")
.field("type", "keyword")
.endObject()
.startObject("createdDate")
.field("type", "date")
//.field("format", "yyyy-MM-dd HH:mm:ss")
.endObject()
.startObject("updatedDate")
.field("type", "date")
//.field("format", "yyyy-MM-dd HH:mm:ss")
.endObject()
.endObject()
.endObject()
.endObject();

//副本、分片

//定义中文分词+停词
String settingsJson = "{"
+ "\"number_of_replicas\": 1, "
+ "\"number_of_shards\": 5, "
+ "\"analysis\": { "
+ "\"analyzer\": { "
+ "\"ik\": { "
+ "\"tokenizer\": \"ik_max_word\", "
+ "\"type\": \"standard\", \"stopwords\": [\"也\",\"了\",\"仍\",\"从\",\"以\",\"使\",\"则\",\"却\",\"又\",\"及\",\"对\",\"就\",\"并\",\"很\",\"或\",\"把\",\"是\",\"的\",\"着\",\"给\",\"而\",\"被\",\"让\",\"在\",\"还\",\"比\",\"等\",\"当\",\"与\",\"于\",\"但\"] "
+ "} "
+ "} "
+ "} "
+ "}";

// Builder settings = Settings.builder()
// .put("number_of_replicas","1")
// .put("number_of_shards","5");

String mappingStr = builder.string();

//判断索引是否存在
client.admin().indices().prepareCreate("test_index").setSettings(settingsJson, XContentType.JSON).execute().actionGet();
client.admin().indices().preparePutMapping("test_index").setType("test").setSource(mappingStr,XContentType.JSON).execute().actionGet();
} catch (Exception e) {
log.error(e.getMessage(), e);
e.printStackTrace();
}
}

}

Java创建ES索引实现的更多相关文章

  1. 创建es索引{"acknowledged"=>true, "shards_acknowledged"=>false}

    创建es索引{"acknowledged"=>true, "shards_acknowledged"=>false} [2018-05-19T13: ...

  2. 创建es索引-格式化和非格式化

    创建es索引-格式化和非格式化 学习了:https://www.imooc.com/video/15768 索引有结构化和非结构化的区分: 1, 先创建索引,然后POST修改mapping 首先创建索 ...

  3. Python创建ES索引

    # pip install elasticsearch from datetime import datetime from elasticsearch import Elasticsearch es ...

  4. ES 记录之如何创建一个索引映射,以及一些设置

    ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两 ...

  5. phoenix连接hbase数据库,创建二级索引报错:Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Tue Mar 06 10:32:02 CST 2018, null, java.net.SocketTimeoutException: callTimeou

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  6. es创建普通索引以及各种查询

    创建索引 创建普通索引: PUT /my_index { "settings": { "index": { "number_of_shards&quo ...

  7. 基于java的ES开发

    3.1 环境配置 Jdk 1.8及以上 Elasticsearch.client 5.5.2(与服务器版本一致) Log4j 2.7及以下 maven工程必要的jar包依赖 <project x ...

  8. Elasticsearch笔记五之java操作es

    Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功能 ...

  9. Elasticsearch ES索引

    ES是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎. 同时ES还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,能够横向 ...

随机推荐

  1. quartzJob

    定时任务的时间修改.暂停.立即执行 定时任务的修改.暂停主要是调用quartz内置方法pauseJob().resumeJob().triggerJob()等方法 //暂停一个job JobKey j ...

  2. 曹工谈Spring Boot:Spring boot中怎么进行外部化配置,一不留神摔一跤;一路debug,原来是我太年轻了

    spring boot中怎么进行外部化配置,一不留神摔一跤:一路debug,原来是我太年轻了 背景 我们公司这边,目前都是spring boot项目,没有引入spring cloud config,也 ...

  3. Navicat for MySQL数据库管理工具安装和破解

    Navicat for MySQL官方下载地址:https://www.navicat.com/en/download/navicat-for-mysql 1.下载后安装 navicat110_mys ...

  4. 第四篇:NLP(Natural Language Processing)自然语言处理

    NLP自然语言处理: 百度AI的 NLP自然语言处理python语言--pythonSDK文档: https://ai.baidu.com/docs#/NLP-Python-SDK/top 第三方模块 ...

  5. jquery.autocomplete的使用-----------------------摘抄别人的

    作者:lxhwss | 2011/10/11 9:46:38 | 阅读43次 document.write(”<script language=javascript src=’/js/2.js’ ...

  6. zwx_helper 只用小括号()和中括号[ ] 轻松开发wxWidgets

    https://github.com/bbqz007/zhelper-wxWidgets https://github.com/bbqz007/zhelper-wxWidgets/tree/maste ...

  7. 【Linux】Linux常用操作

    终端命令格式 command [-options] [parameter]command : 命令名,相应功能的英文单词或单词的缩写[-options]:选项,可用来对命令进行控制,也可以省略para ...

  8. Java——XML基础知识

    XML大小写敏感,不可省略结束标签,可以标签自闭合<img />,属性值必须用引号括起来.CDATA部分用<![CDATA[ ]]>来限定界限,它们是字符数据的一种特殊形式.可 ...

  9. 一,View中引用自定义Dialog组件

    需求: 在项目中,有时候可能在不同画面需要完成同一功能,比如示例文件列表查看功能,系统上传文件,需要查看文件列表,以及文件历史记录 话不多说,上图 这个查看文件的Dialog需要在系统中的很多地方调用 ...

  10. ORCLE 列转行

    字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union all函数等方式 wm_concat函数 wm_conc ...