以下的操作环境为: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();
JSONObject obj = new JSONObject().fromObject(response.getSourceAsString());//将json字符串转换为json对象
InformationDTO information = (InformationDTO) JSONObject.toBean(obj, InformationDTO.class);//将json数据转换成InformationDTO实体对象
String codes =response.getId();//获取_id

根据id进行修改数据(传入对象)

//knowledgeTopic为修改数据的对象
//修改状态后的对象转换成json数据
JSONObject fromObject= JSONObject.fromObject(knowledgeTopic);
//参数:索引名,类型(type) id(指的是_id) 要修改的json数据:fromObject
UpdateResponse updateResponse = client.prepareUpdate("knowledge", "knowledge_theme", "1")
.setDoc(fromObject).get();

根据id修改数据(针对单个字段修改)

   XContentBuilder source = null;
try {
source = XContentFactory.jsonBuilder()
.startObject()
.field("browseNum", num) //browseNum:要修改的字段名,num 修改的值
.endObject();
} catch (IOException e) {
e.printStackTrace();
}
//client:ES连接 codes为文档的_id
UpdateResponse updateResponse = client.prepareUpdate("article", "up_information", codes).setDoc(source).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();

以上功能本人已亲测过,都能实现,希望这对大家有所帮助!转发请说明出处,本人的博客地址为:https://www.cnblogs.com/chenyuanbo/

技术在于交流!

Java中使用elasticsearch搜索引擎实现简单查询、修改等操作-已在项目中实际应用的更多相关文章

  1. 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...

  2. java使用elasticsearch进行模糊查询-已在项目中实际应用

    java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...

  3. 四十四 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    1.elasticsearch(搜索引擎)的查询 elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据 查询分类: 基本查询:使用elasticsearch内 ...

  4. React-Native集成到已有项目中的总结

    安装Python 从官网下载并安装python 2.7.x(3.x版本不行) 安装node.js 从官网下载node.js的官方V6.X.X版本或更高版本.安装完成后检测是否安装成功:node -v ...

  5. mybatis查询修改同时操作

    update dic_purchase set state =0 where purchase_number in (select tmp.* from (select purchase_number ...

  6. ASP.NET CORE MVC 2.0 如何在Filter中使用依赖注入来读取AppSettings,及.NET Core控制台项目中读取AppSettings

    问: ASP.NET CORE MVC 如何在Filter中使用依赖注入来读取AppSettings 答: Dependency injection is possible in filters as ...

  7. java中的ElasticSearch搜索引擎介绍。

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...

  8. MyBatis一对多映射简单查询案例(嵌套Mapper映射文件中的sql语句)

    一.案例描述 书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息. 二.数据库表格 书本类别表(booktypeid,booktypename) 书本信息表(booki ...

  9. sql 简单查询修改

    .group by order by from webdb where gathtrime between '2017-06-14 00:00:00' and '2017-06-14 23:59:59 ...

随机推荐

  1. Redis基础知识补充及持久化、备份介绍(二)--技术流ken

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...

  2. 【转载】PhpStudy修改网站根目录

    phpStudy是一个PHP调试环境的程序集成包.该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便.好用的 ...

  3. EF C# ToPagedList方法 The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must ……

    报错信息:The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' ...

  4. SpringBoot 2.0 报错: Failed to configure a DataSource: 'url' attribute is not specified and no embe

    问题描述 *************************** APPLICATION FAILED TO START *************************** Description ...

  5. Netty实战三之Netty的组件和设计

    有关Netty,我们可以从两个视角来讨论Netty:类库的视角以及框架的视角,对于使用Netty编写高效的.可重用的和可维护的代码来说,两者缺一不可. Netty解决了两个响应的关注领域,可以大致标志 ...

  6. Gvim 和vim 有什么区别

    Gvim 和vim 有什么区别 Gvim是windows的 vim是linux的黑色的命令符 Gvim是单独的窗口下的vim,像notepad一样. vim就是在黑乎乎的cmd窗口下的编辑器.wind ...

  7. vim 中:wq和:wq的不同之处

  8. 如何清除浮动(float)所带来的影响

    清除浮动(float) 1.定义和用法 在w3c中给了浮动这样的定义. "float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素 ...

  9. 08-HTML-框架标签

    <html> <head>  <title>框架标签学习</title>  <meta charset="utf-8"/> ...

  10. MySQL 内置函数

    CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符. +------------------------+ | CHAR_LENGTH('k ...