持续更新-ES造数-java实现-(摘抄总结)

流程图

持续更新-ES造数-java实现-(摘抄总结)

Fastjson:

 

  1. fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发

JSONObject

  1. JSONObject是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。

 

  1. JSON.parseObject(String str)和JSONObject.parseObject(String str)就是fastjson中的方法

          JSON.parseObject(String str)是将str转化为相应的JSONObject对象,其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置的方法,进行各种处理了

        JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回;JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法

 

ElasticSearch93009200端口的区别

ElasticSearch启动时,会占用两个端口9200和9300

9200端口:es节点与外部通讯使用的端口;它是http协议的RESTful接口(各种CRUD(create,retrieve读取查询,update,delete)操作都是走的该端口)

9300端口:是ES节点之间通讯使用的端口。它是tcp通讯端口,集群间和TCPclient都走的它。(java程序中使用ES时,在配置文件中要配置该端口)

 

Java发送http请求方法之CloseableHttpClient

 

依赖:

<dependency>

  <groupId>org.apache.httpcomponents</groupId>

  <artifactId>httpclient</artifactId>

  <version>4.5.2</version>

</dependency>

 

请求步骤:

  1. 使用帮助类HttpClients创建CloseableHttpClient对象.
  2. 基于要发送的HTTP请求类型创建HttpGet或者HttpPost实例.
  3. 使用addHeader方法添加请求头部,诸如User-Agent, Accept-Encoding等参数.
  4. 可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
  5. 通过执行此HttpGet或者HttpPost请求获取CloseableHttpResponse实例
  6. 从此CloseableHttpResponse实例中获取状态码,错误信息,以及响应页面等等.
  7. 释放连接。无论执行方法是否成功,都必须释放连接

HttpClient发送Post请求

  1. post请求头中常见content-type

1. application/json

把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。

JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用

Google 的 AngularJS 中的 Ajax 功能,默认就是提交 JSON 字符串。例如下面这段代码:

2. StringEntity

   继承于AbstractHttpEntity类,这个类做参数的时候设置比较灵活,通过类的构造方法可以看到有两个参数,一个是具体的参数值(string串),另一个是ContentType,通过重写的构造方法看到,当不指定ContentType时默认的ContentType是text/plain

   默认通过一个参数构造方法创建对象,ContentType得值是 ContentType.DEFAULT_TEXT,找到来源,所以当要通过post发送json数据时就要额外设置Contentype为application/json或在初始化时传入一个Contentype类型。其他类型也一样可以*设置,要注意的就是默认值,以免忘记设定而造成请求出错。

 

ObjectMapperwriteValuewriteValueAsString的区别

writeValue(参数,obj

               参数1:

                          File: 将对象转为json字符串,保存到指定的文件中

                         Writer: 将对象转为json字符串,并将json数据填充到字符输出流中

                         outputStream: 将对象转为json字符串,并将json数据填充到字节输出流中

 

writeValueAsStringobj):

                将对象转为json字符串