Elasticsearch+SpringBoot开发搜房Demo(1)--Springboot整合ElasticSearch Client和数据初始化

本文主要是介绍Elasticsearch+SpringBoot开发搜房Demo(1)--Springboot整合ElasticSearch Client和数据初始化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本系列文章以ElasticSearch技术栈为核心,结合当下最流行的互联网技术的租房网站实战,解决企业“搜索”业务难题。
Springboot整合ElasticSearch Client
修改Maven依赖,加入

<elasticsearch.version>5.6.1</elasticsearch.version><!-- ES --><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>${elasticsearch.version}</version></dependency>

配置文件
application.properties

elasticsearch.cluster.name=xunwu
elasticsearch.host=127.0.0.1
elasticsearch.port=9300

读取配置

package com.imooc.config;import java.net.InetAddress;
import java.net.UnknownHostException;import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ElasticSearchConfig {@Value("${elasticsearch.host}")private String esHost;@Value("${elasticsearch.port}")private int esPort;@Value("${elasticsearch.cluster.name}")private String esName;@Beanpublic TransportClient esClient() throws UnknownHostException {Settings settings = Settings.builder().put("cluster.name", this.esName)
//                .put("cluster.name", "elasticsearch").put("client.transport.sniff", true).build();InetSocketTransportAddress master = new InetSocketTransportAddress(InetAddress.getByName(esHost), esPort
//          InetAddress.getByName("10.99.207.76"), 8999);TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(master);return client;}
}

Elasticsearch 创建索引
PUT http://:/<索引>
在用Kibana的时候不需要http://:

settings 设置
number_of_shards 分片数
number_of_replicas 副本数
mappings 结构化数据设置
mappings下面的一级属性 是自定义的类型
properties 类型的属性设置节点,下面都是属性
epoch_millis表示时间戳

例如
在这里插入图片描述本例子使用的json

{"settings": {"number_of_replicas": 0},"mappings": {"house": {"dynamic": false,"properties": {"houseId": {"type": "long"},"title": {"type": "text","index": "analyzed","analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"price": {"type": "integer"},"area": {"type": "integer"},"createTime": {"type": "date","format": "strict_date_optional_time||epoch_millis"},"lastUpdateTime": {"type": "date","format": "strict_date_optional_time||epoch_millis"},"cityEnName": {"type": "keyword"},"regionEnName": {"type": "keyword"},"direction": {"type": "integer"},"distanceToSubway": {"type": "integer"},"subwayLineName": {"type": "keyword"},"subwayStationName": {"type": "keyword"},"tags": {"type": "text"},"street": {"type": "keyword"},"district": {"type": "keyword"},"description": {"type": "text","index": "analyzed","analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"layoutDesc" : {"type": "text","index": "analyzed","analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"traffic": {"type": "text","index": "analyzed","analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"roundService": {"type": "text","index": "analyzed","analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"rentWay": {"type": "integer"},"suggest": {"type": "completion"},"location": {"type": "geo_point"}}}}
}

这篇关于Elasticsearch+SpringBoot开发搜房Demo(1)--Springboot整合ElasticSearch Client和数据初始化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974785

相关文章

Java集合的一些知识点和登录注册习题

java 集合中的一些知识点 集合:集合是存储对象数据的集合容器。 集合比数组的优势: 1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。 2. 集合的长度是会发生变化的,数组的长度是固定的。 ——-| Collection 单例集合的根接口。 ———-| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。 ———-| Set 如果是实现

java-return浅析

这个是我网上问问题有个大神解析的小小分享 转自:http://www.cnblogs.com/paomoopt/p/3746963.html 1、return语句的作用:a、返回一个值,这个值可以是任意类型。b、使程序返回到操作系统(即终止程序) 2、java中对于一个函数,不论有没有返回值类型,都可以带有return 语句。 但是区别在于,return 语句是否可以返回一个值(这取决与该

java封装中关于set()和get()的用法

转自:http://www.cnblogs.com/fly-sky-han/p/6564439.html 我们先来看看set和get这两个词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。而且,在类中使用set和get方法时,都是在set和get后面跟上一些特定的词来形成特定意思的方法名,比如setage()和getage(),表示设置年龄和

java基础语法难点(day01-day05)

学学高级语言,面向对象的语言,和c语言比起来,前面的语法还是有一定的相似度的,所以,在学习面向对象之前,简单的把java的一些常用的基础语法过一遍,相当于复习了。 有个隐形的类型转换,但是就是小的转到大的,可以。但是如果是int数据类型转到小一点的short去,不强制类型转换就会溢出报错。 注意+=这个扩展运算符是可以接受类型转换的,所以不会报错。 三元运算符中的三个数比较最大值: int

YOLOv3实践darknet跑voc数据集的问题

最近在用YOLOv3的darknet训练VOC数据集,初学小白的我对参数,源码还在了解层面,但是结果已经训练开始之后发现IoU出现了nan值循环。所以就开始网上寻找。总结在下: 参考:https://blog.csdn.net/lilai619/article/details/79695109#commentsedit 如何训练自己的数据 说明: (1)平台 linux + 作者官方代码

图像数据不足时的处理方法

一个模型所能提供的信息一般来源于两个方面,一是训练数据中蕴含的信息;二是在模型的形成过程中(构造,学习,推理),人们提供的先验信息。训练数据不足时,说明模型从从原始信息获取的信息比较少,要想保证效果,就要更多的先验信息。先验信息可以作用在模型上,例如让模型采用特定的内在结构,条件假设;先验信息也可以直接施加在数据集上,即根据特定的先验假设去调整,变换或扩展训练数据,让其展现出更多更有用的信息,以利

FCM聚类算法详解(Python实现iris数据集)

参考:https://blog.csdn.net/on2way/article/details/47087201 模糊C均值(Fuzzy C-means)算法简称FCM算法,是一种基于目标函数的模糊聚类算法,主要用于数据的聚类分析。理论成熟,应用广泛,是一种优秀的聚类算法。本文关于FCM算法的一些原理推导部分介绍,加上自己的理解和在课题项目中的应用以文字的形式呈现出来。 首先介绍一下模糊这个概

java设计模式之工厂模式--普通工厂方法模式(Factory Method)

1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。 2.先定义一个接口: package com.zhong.pattern.factorymethod;/*** 发送接口* @author admin**/public interface Sender {/*** 发送消息方法* @param msg*/void send(String msg);} 3

Java设计模式之代理模式2-动态代理(jdk实现)

这篇是接着上一篇继续介绍java设计模式之代理模式。下面讲解的是jdk实现动态代理。 1.)首先我们要声明一个动态代理类,实现InvocationHandler接口 package com.zhong.pattern.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;/*** 演

java设计模式之代理模式1--静态代理

Java编程的目标是实现现实不能完成的,优化现实能够完成的,是一种虚拟技术。生活中的方方面面都可以虚拟到代码中。代理模式所讲的就是现实生活中的这么一个概念:助手。 代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 1.)首先新建一个表演的接口 package com.zhong.pattern.proxy;/*** 表演接口* @author admin*