Java中使用elasticsearch搜索引擎实现简单、修改…
2018-11-09 02:38:11来源:博客园 阅读 ()
以下的操作环境为:jdk:1.8;elasticsearch:5.2.0
maven架包下载坐标为:
<dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId>transport-netty4-client</artifactId> <version>5.2.0</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>5.2.0</version> </dependency> <dependency> <groupId>org.nlpcn</groupId> <artifactId>elasticsearch-sql</artifactId> <version>6.3.0.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.9</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.2.0</version> </dependency>
Java创建ES连接工具类:
//创建连接工具类 public class ESClientConnectionUtil { public static TransportClient client=null; public final static String HOST = "192.168.200.211"; //服务器部署 public final static Integer PORT = 9301; //端口 public static TransportClient getESClientConnection(){ if (client == null) { System.setProperty("es.set.netty.runtime.available.processors", "false"); try { //设置集群名称 Settings settings = Settings.builder().put("cluster.name", "es5").put("client.transport.sniff", true).build(); //创建client client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(HOST), PORT)); } catch (Exception ex) { ex.printStackTrace(); System.out.println(ex.getMessage()); } } return client; } }
用Java命令想elasticsearch中插入数据
public Map<String,Object> addTopic(KnowledgeTopicDTO knowledgeTopicDTO){ Map<String,Object> map = new HashMap<>(); //连接ES TransportClient transportClient = ESClientConnectionUtil.getESClientConnection(); JSONObject json = JSONObject.fromObject(knowledgeTopicDTO);//后台传过来的对象数据转换成json格式 try{ //index 索引名称(相当于数据库) type :类型(相当于数据库中的表) IndexResponse response = transportClient.prepareIndex("knowledge", "knowledge_theme").setSource(json, XContentType.JSON).get(); if(null !=response.getId()){ map.put("code",200); return map; } }catch (Exception e){ e.printStackTrace(); map.put("code",500); return map; } return null; }
使用Java根据id查询数据
//连接ES TransportClient transportClient = ESClientConnectionUtil.getESClientConnection(); //参数:索引名,类型(type) id GetResponse response = client.prepareGet("knowledge", "knowledge_theme", "1") .setOperationThreaded(false) // 线程安全 .get();
根据id进行修改数据
//knowledgeTopic为修改数据的对象 //修改状态后的对象转换成json数据 JSONObject fromObject= JSONObject.fromObject(knowledgeTopic); //参数:索引名,类型(type) id 要修改的json数据:fromObject UpdateResponse updateResponse = client.prepareUpdate("knowledge", "knowledge_theme", "1") .setDoc(fromObject).get();
ES模糊查询
SearchResponse searchResponse=null; //连接elasticsearch TransportClient transportClient = ESClientConnectionUtil.getESClientConnection(); searchResponse = client.prepareSearch() .setIndices("knowledge") .setTypes("knowledge_theme") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setScroll(TimeValue.timeValueMinutes(30)) //游标维持时间 .setSize(2 * 5)//实际返回的数量为10*index的主分片数 .setQuery(QueryBuilders.wildcardQuery("name", ("*"+name+"*").toLowerCase())) //查询的字段名及值 .execute() .actionGet();
以上功能本人已亲测过,都能实现,希望这对大家有所帮助
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash