获取客户端对象

public class App {

    private TransportClient client;

    //获取客户端对象
@Before
public void getClinet() throws UnknownHostException {
Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //获得客户端对象
client = new PreBuiltTransportClient(settings); client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.1.11"), 9300));
System.out.println(client.toString()); }

## 创建索引

//创建索引
@Test
public void createIndex() {
client.admin().indices().prepareCreate("blog1").get();
client.close();
} //删除索引
@Test
public void deleteIndex() {
client.admin().indices().prepareDelete("blog").get();
client.close();
}

新建文档

//新建文档
@Test
public void createIndexByJson() {
//创建文档内容 String json = "{" + "\"id\":\"1\"," + "\"title\":\"基于Lucene的搜索服务器\","
+ "\"content\":\"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口\"" + "}"; //创建
IndexResponse response = client.prepareIndex("blog", "article", "1").setSource(json).execute().actionGet();
//打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close();
} //创建文档以hashmap
@Test
public void createIndexBymap() {
HashMap<String, Object> json = new HashMap<String, Object>(); json.put("id", "2");
json.put("title", "hph");
json.put("content", "博客 hph.blog");
IndexResponse response = client.prepareIndex("blog", "article", "2").setSource(json).execute().actionGet();
//打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close();
}
//创建文档以hashmap
@Test
public void createIndexBymap() {
HashMap<String, Object> json = new HashMap<String, Object>(); json.put("id", "2");
json.put("title", "hph");
json.put("content", "博客 hph.blog");
IndexResponse response = client.prepareIndex("blog", "article", "2").setSource(json).execute().actionGet();
//打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close(); } //创建文档已bulder
@Test
public void createIndexbyBulider() throws IOException {
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("id", "4").field("title", "博客").field("content", "hphblog.cn").endObject();
IndexResponse response = client.prepareIndex("blog", "article", "3").setSource(builder).execute().actionGet();
//打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close();
}

查询索引

//单个索引查询
@Test
public void queryIndex() {
//查询
GetResponse response = client.prepareGet("blog", "article", "2").get(); //打印
System.out.println(response.getSourceAsString()); //关闭资源
client.close(); } //多个索引查询
@Test
public void queryMultiIndex() { //查询
MultiGetResponse response = client.prepareMultiGet().add("blog", "article", "3")
.add("blog", "article", "1")
.add("blog", "article", "2").get(); for (MultiGetItemResponse multiGetItemResponse : response) {
GetResponse response1 = multiGetItemResponse.getResponse(); //判断是否存在
if (response1.isExists()) {
System.out.println(response1.getSourceAsString());
}
}
} //更改数据
@Test
public void update() throws ExecutionException, InterruptedException, IOException {
UpdateRequest updateRequest = new UpdateRequest("blog", "article", "2");
updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("id", "2")
.field("title", "hphblog").field("content", "大数据博客学习技术分享").endObject()
); UpdateResponse response = client.update(updateRequest).get(); //打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close(); }

更新文档

//更新文档updaset
@Test
public void upsert() throws IOException, ExecutionException, InterruptedException {
//没有就创建
IndexRequest indexRequest = new IndexRequest("blog", "article", "5");
indexRequest.source(XContentFactory.jsonBuilder().startObject().field("id", "5")
.field("title", "大数据技术分享的学习").field("content", "大数据技术的分享与学习希望和大家多多交流").endObject
());
//有文档内容就更新
UpdateRequest updateRequest = new UpdateRequest("blog", "article", "5");
updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("id", "5")
.field("title", "hphblog").field("content", "技术分享、技术交流、技术学习").endObject()
); updateRequest.upsert(indexRequest); UpdateResponse response = client.update(updateRequest).get(); //打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close(); }

删除文档

//删除文档
@Test
public void delete() {
client.prepareDelete("blog", "article", "5").get();
client.close(); }

查询所有

//查询所有
@Test
public void matchAllquery() {
//1.执行查询
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.matchAllQuery()).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
} client.close();
} //分词查询
@Test
public void query() {
//1.执行查询
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.queryStringQuery("学习全文")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
} client.close();
}

通配符查询

//通配符查询
@Test
public void wildcardQuery() {
//1.执行查询
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.wildcardQuery("content", "分")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
} client.close();
}

模糊查询

//模糊查询
@Test
public void fuzzyQuery() {
//1.执行查询
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.fuzzyQuery("title", "LuceNe")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
} client.close();
} //映射相关的操作
@Test
public void createMapping() throws Exception { // 1设置mapping
XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.startObject("article")
.startObject("properties")
.startObject("id1")
.field("type", "string")
.field("store", "yes")
.endObject()
.startObject("title2")
.field("type", "string")
.field("store", "no")
.endObject()
.startObject("content")
.field("type", "string")
.field("store", "yes")
.endObject()
.endObject()
.endObject()
.endObject();

添加mapping

// 2 添加mapping
PutMappingRequest mapping = Requests.putMappingRequest("blog1").type("article").source(builder); client.admin().indices().putMapping(mapping).get(); // 3 关闭资源
client.close();
}

原文:http://hphblog.cn/2018/12/16/Elasticsearch%E7%9A%84JavaAPI/

Elasticsearch的JavaAPI的更多相关文章

  1. Elasticsearch的javaAPI之percolator

    Elasticsearch的javaAPI之percolator percolator同意一个在index中注冊queries,然后发送包括doc的请求,返回得到在index中注冊过的而且匹配doc的 ...

  2. elasticsearch的javaAPI之query

    elasticsearch的javaAPI之query API the Search API同意运行一个搜索查询,返回一个与查询匹配的结果(hits). 它能够在跨一个或多个index上运行, 或者一 ...

  3. Elasticsearch的javaAPI之get,delete,bulk

    Elsasticsearch的javaAPI之get get API同意依据其id获得指定index中的基于json document.以下的样例得到一个JSON document(index为twi ...

  4. Elasticsearch的javaAPI之query dsl-queries

    Elasticsearch的javaAPI之query dsl-queries 和rest query dsl一样,elasticsearch提供了一个完整的Java query dsl. 查询建造者 ...

  5. elasticsearch的javaAPI之index

    Index API 原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html ...

  6. ElasticSearch的javaAPI之Client

    翻译的原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-c ...

  7. Elasticsearch JavaApi

    官网JavaApi地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search.html 博 ...

  8. ElasticSearch的基本用法与集群搭建

    一.简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式 ...

  9. ElasticSearch Java api 详解_V1.0

    /×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...

随机推荐

  1. MT7628如何配置使用 Openwrt路由模式 (校园网配置)

    1.设置wan,把网线插入wan口 1) 在 MT7628 开发板上的 3 个网口默认都是“LAN 口”功能,但拨号上网一般需要用到“WAN口”的功能,所以我们需要将其中一个切换为“WAN 口”,这里 ...

  2. 利用JSON将Map转换为类对象

    Map类型做为一种常见的Java类型,经常在开发过程中使用,笔者最近遇到要将Map对象做为一种通用的参数变量,下传到多个业务类方法中,然后在各个业务类方法中将Map转换为指定类对象的情况.如何将Map ...

  3. tornado 笔记

    简单比较Django和Tornado Django是走大而全的方向,注重的是高效开发,最出名的是全自动化管理后台 Tornado走的是少而精的方向,注重的是性能的优化,最出名的是异步非堵塞 安装方式: ...

  4. python编码encode decode(解惑)

    关于python 字符串编码一直没有搞清楚,今天总结了一下. Python 字符串类型 Python有两种字符串类型:str 与 unicode. 字符串实例 # -*- coding: utf-8 ...

  5. 查找Python项目依赖的库并生成requirements.txt

    使用pip freeze pip freeze > requirements.txt 这种方式配合virtualenv 才好使,否则把整个环境中的包都列出来了. 使用 pipreqs 这个工具的 ...

  6. VS2012打开项目——已停止工作

    VS2012打开项目——已停止工作 解决方法如下: 1. 开始-->所有程序-->Microsoft Visual Studio 2012-->Visual Studio Tools ...

  7. GetPostBackEventReference加RaisePostBackEvent实现自定义控件中回调传参

    ; //回调函数,回调参数值:eventArgument        public void RaisePostBackEvent(string eventArgument)        {    ...

  8. Java 中统计文件中出现单词的次数练习

    统计英文article.txt文件中出现hello这个单词的次数 这个是article.txt文件内容 { hello The Royal Navy is trying hello to play h ...

  9. 胖子哥的大数据之路(9)-数据仓库金融行业数据逻辑模型FS-LDM

    引言: 大数据不是海市蜃楼,万丈高楼平地起只是意淫,大数据发展还要从点滴做起,基于大数据构建国家级.行业级数据中心的项目会越来越多,大数据只是技术,而非解决方案,同样面临数据组织模式,数据逻辑模式的问 ...

  10. C++进阶--Named Parameter Idiom

    //############################################################################ /* Named Parameter Id ...