POST和PUT区别
PUT 和 POST 都可以插入和更新数据,区别在于
PUT 增加或更新新数据必须跟上id(这里的 id 指 _doc_id),即
PUT stu/_doc/1001

而 POST 增加或更新数据则可以不跟 id,此时会为增加或更新的数据 自动生成一个 id
Java客户端操作
新增文档,ElasticSearch 中有索引,然后是文档,文档在索引中,类似于数据库中表在库中的概念。
写数据(即新增文档)
import io.searchbox.client.JestClient;
import io.searchbox.client.JestClientFactory;
import io.searchbox.client.config.HttpClientConfig;
import io.searchbox.core.Index;
import java.io.IOException;
public class EsWriter {
public static void main(String[] args) throws IOException {
// 1.获取客户端连接对象
JestClientFactory jestClientFactory = new JestClientFactory();
HttpClientConfig httpClientConfig =
new HttpClientConfig.Builder("http://hadoop102:9200").build();
jestClientFactory.setHttpClientConfig(httpClientConfig);
JestClient jestClient = jestClientFactory.getObject();
// 2.建立索引,Builder括号中为新建索引的语句
// Index要导的包为 import io.searchbox.core.Index;
// 待执行的语句为:
// PUT test5/_doc/2
// {
// "name":"张三",
// "age":17
// }
Index index = new Index.Builder("{\n" +
" \"name\":\"zhangsan\",\n" +
" \"age\":17\n" +
"}"
).index("test5").type("_doc").id("2").build();
// 3.执行语句
jestClient.execute(index);
// 4.关闭客户端连接
jestClient.shutdownClient();
}
}
读数据(即查取文档)
import io.searchbox.client.JestClient;
import io.searchbox.client.JestClientFactory;
import io.searchbox.client.config.HttpClientConfig;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
import javax.naming.directory.SearchControls;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public class EsReader {
public static void main(String[] args) throws IOException {
JestClientFactory jestClientFactory = new JestClientFactory();
jestClientFactory.setHttpClientConfig(
new HttpClientConfig.Builder("http://hadoop102:9200").build());
JestClient jestClient = jestClientFactory.getObject();
// 查询语句为
//GET test5/_search
//{
// "query": {
// "match": {
// "name": "张三"
// }
// }
//}
Search search = new Search.Builder("{\n" +
" \"query\": {\n" +
" \"match\": {\n" +
" \"name\": \"张三\"\n" +
" }\n" +
" }\n" +
"}").addIndex("test5").addType("_doc").build();
SearchResult result = jestClient.execute(search);
System.out.println("共有 " + result.getTotal() + " 查询结果");
List<SearchResult.Hit<Map, Void>> hits = result.getHits(Map.class);
for (SearchResult.Hit<Map, Void> hit : hits) {
System.out.println(hit.index + "--" + hit.id);
}
jestClient.shutdownClient();
}
}
