mget(可以通过索引、类型、或ID一次得到同一索引或不同索引库里的文档集合) & mapping
2017-11-21 17:20
417 查看
使用multi get API可以通过索引名、类型名、文档id一次得到一个文档集合,文档可以来自同一个索引库,也可以来自不同索引库。示例如下:
2
3
4
5
6
7
8
9
10
11
12
13
注释1: 通过单一的ID获取一个文档.
注释2:传入多个id,从相同的索引名/类型名中获取多个文档.
注释3:可以同时获取不同索引中的文档.
注释4:遍历结果集.
注释5:检验文档是否存在.
注释6:获取文档源.
通过java客户端获取mapping:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
mapping信息都是ImmutableOpenMap
MultiGetResponse multiGetItemResponses = client.prepareMultiGet() .add("twitter", "tweet", "1") //注释1 .add("twitter", "tweet", "2", "3", "4") //注释2 .add("another", "type", "foo") //注释3 .get(); for (MultiGetItemResponse itemResponse : multiGetItemResponses) { //注释4 GetResponse response = itemResponse.getResponse(); if (response.isExists()) { //注释5 String json = response.getSourceAsString(); //注释6 } }1
2
3
4
5
6
7
8
9
10
11
12
13
注释1: 通过单一的ID获取一个文档.
注释2:传入多个id,从相同的索引名/类型名中获取多个文档.
注释3:可以同时获取不同索引中的文档.
注释4:遍历结果集.
注释5:检验文档是否存在.
注释6:获取文档源.
一、获取索引的所有mapping
通过java客户端获取mapping:package elasticsearch.in.action.client; import java.net.InetAddress; import java.net.UnknownHostException; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.cluster.metadata.MappingMetaData; import org.elasticsearch.common.collect.ImmutableOpenMap; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; public class TransClient { public static String clusterName = "elasticsearch";// 集群名称 public static String serverIP = "127.0.0.1";// 服务器IP public static void main(String[] args) { System.out.println(getMapping("news", "sportnews")); } public static String getMapping(String indexname, String typename) { Settings settings = Settings.settingsBuilder().put("cluster.name", clusterName).build(); String mapping=""; try { TransportClient client = TransportClient.builder().settings(settings).build() .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(serverIP), 9300)); ImmutableOpenMap<String, MappingMetaData> mappings = client.admin().cluster().prepareState().execute() .actionGet().getState().getMetaData().getIndices().get(indexname).getMappings(); mapping = mappings.get(typename).source().toString(); client.close(); } catch (UnknownHostException e) { e.printStackTrace(); } return mapping; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
二、获取所有的type以及每个type的mapping
mapping信息都是ImmutableOpenMapfor (ObjectObjectCursor<String, MappingMetaData> cursor : mappings) { System.out.println(cursor.key); // 索引下的每个type System.out.println(cursor.value.getSourceAsMap()); // 每个type的mapping }
相关文章推荐
- Collection -> .Net集合类型大全,只要灵活运用可以节省很多开发时间和提高程序运行效率
- [Unity&JSON]如何在同一个JSON文档中存入多个不同类型的数据
- shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符`
- # include <errno.h >查看错误代码errno是调试程序的一个重要方法。当Linux C API函数发生异常时,一般会将errno变量赋值一个整数,不同的值表示不同的含义,可以通过查看
- 对集合{1, 2, 3, …, n}中的数进行全排列,可以得到 n!个不同的排列方式
- [Unity&C#&接口]通过接口调用不同类型 物体 的继承了接口的组件
- Collection -> .Net集合类型大全,只要灵活运用可以节省很多开发时间和提高程序运行效率
- Elasticsearch 关键字:索引,类型,字段,索引状态,mapping,文档,白话文说
- Http一次上传多个文件(类型可以不同)的方式
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 使用DTD文档对 xml 1 作业中的xml文档进行约束,其中河北省只能依次包含石家庄市、张家口市、保定市这三个市,保定市可以有多个或者1个,给保定市定义属性编号为ID类型,必须有;属性name为字符
- 创建一个包,其中定义一个过程,可以查询得到编号为7900的员工的姓名ename、薪水sal、佣金comm、上司编号mgr (通过OUT类型的参数将结果返回并打印) (注意包有包头部分的声明和包体部分的
- 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- ES里设置索引中倒排列表仅仅存文档ID——采用docs存储后可以降低pos文件和cfs文件大小
- Collection -&gt; .Net集合类型大全,只要灵活运用可以节省很多开发时间和提高程序运行效率
- 如何通过一个方法来传入并处理不同泛型类型的集合
- Java反射 类类型就是可以操作的类本身 如何通过反射得到函数 函数返回值 函数参数
- 对于"容量分别为A与B的两个水桶,是否能够通过互相倒水可以得到1~MAX(A,B)所有容量的水"问题的分析
- 迭代器foreach可以指定同个集合的不同的迭代实现方式