Elasticsearch的Java API/查询/分页等
来源:互联网 发布:淘宝电商会计做帐流程 编辑:程序博客网 时间:2024/05/21 17:35
Elasticsearch的Java API
添加Maven依赖。
链接到ES集
1.通过TransportClient这个接口,我们可以不启动节点就可以和es集群进行通信,它需要指定es集群中其中一台或多台机的ip地址和端口
TransportClient client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("host1", 9300)).addTransportAddress(new InetSocketTransportAddress("host2", 9300));
如果需要使用其他名称的集群(默认是elasticsearch),需要如下设置
Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "myClusterName").build();
TransportClientclient = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("host1", 9300));
2.通过TransportClient这个接口,自动嗅探整个集群的状态,es会自动把集群中其它机器的ip地址加到客户端中
Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.sniff", true).build();
TransportClient client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("host1", 9300));
索引index(四种json, map, bean, es helpers)
IndexResponse response = client.prepareIndex(“hello", "emp", "1").setSource().execute().actionGet();
查询get
GetResponse response = client.prepareGet(“hello", "emp", "1").execute().actionGet();
更新update
更新或者插入upsert
删除delete
DeleteResponse response = client.prepareDelete(“hello", "emp", "1").execute().actionGet();
总数count
long count = client.prepareCount(“hello").execute().get().getCount();
批量操作bulk
查询search
SearchType
Elasticsearch的查询
es的搜索类型有4种
query and fetch(速度最快)(返回N倍数据量)
query then fetch(默认的搜索方式)
DFS query and fetch(可以更精确控制搜索打分和排名。)
DFS query then fetch
DFS解释:见备注
总结一下,从性能考虑QUERY_AND_FETCH是最快的,DFS_QUERY_THEN_FETCH是最慢的。从搜索的准确度来说,DFS要比非DFS的准确度更高。
查询:query
.setQuery(QueryBuilders.matchQuery("name", "test"))
分页:from/size
.setFrom(0).setSize(1)
排序:sort
.addSort("age", SortOrder.DESC)
过滤:filter
.setPostFilter(FilterBuilders.rangeFilter("age").from(1).to(19))
高亮:highlight
统计:facet(已废弃)使用aggregations 替代
根据字段进行分组统计
根据字段分组,统计其他字段的值
size设置为0,会获取所有数据,否则,只会返回10条
Elasticsearch的分页
与SQL使用LIMIT来控制单“页”数量类似,Elasticsearch使用的是from以及size两个参数:
size:每次返回多少个结果,默认值为10
from:从哪条结果开始,默认值为0
假设每页显示5条结果,那么1至3页的请求就是:
GET /_search?size=5
GET /_search?size=5&from=5
GET /_search?size=5&from=10
注意:不要一次请求过多或者页码过大的结果,这么会对服务器造成很大的压力。因为它们会在返回前排序。一个请求会经过多个分片。每个分片都会生成自己的排序结果。然后再进行集中整理,以确保最终结果的正确性。
timed_out告诉了我们查询是否超时
curl -XGET http://localhost:9200/_search?timeout=10ms
es会在10ms之内返回查询内容
注意:timeout并不会终止查询,它只是会在你指定的时间内返回当时已经查询到的数据,然后关闭连接。在后台,其他的查询可能会依旧继续,尽管查询结果已经被返回了。
- Elasticsearch的Java API/查询/分页等
- ElasticSearch java API - 聚合查询
- ElasticSearch的Java API
- ElasticSearch的Java API
- elasticsearch 的java api
- Elasticsearch java API (20)查询 DSL
- elasticsearch 常规java api string查询
- 使用Elasticsearch的java api,操作elasticsearch
- elasticsearch分页查询
- Elasticsearch分页查询
- PHP分页+Elasticsearch查询
- ElasticSearch-分页查询
- Java链接elasticsearch的api
- ElasticSearch Java API的使用
- java操作ElasticSearch的API
- Elasticsearch的Java API使用
- Elasticsearch java API (9)更新的API
- Elasticsearch java API (21)查询 DSL 项级别查询
- codeforces818D Multicolored Cars -- 线段树上二分
- 安卓内存优化第一弹
- TestLink学习七:TestLink测试用例Excel转换XML工具
- JAVA过滤器的使用(Filter)
- 一次网络异常的Hadoop trouble shooting 过程
- Elasticsearch的Java API/查询/分页等
- cgi,fast-cgi,php-fpm是什么?
- TestLink学习八:TestLink1.9.13与Mantis1.2.19集成
- nexus3.3.2配置使用(mac版)
- java中保留两位小数
- Python reduce未定义
- CJOJ 1087 【NOIP2010】乌龟棋 / Luogu 1541 乌龟棋
- swift3.0 unexpectedly found nil while unwrapping an Optional value的解释 && Swift中Optional
- Delphi新注释