|
41 | 41 | import org.elasticsearch.action.admin.indices.forcemerge.ForceMergeRequest;
|
42 | 42 | import org.elasticsearch.action.admin.indices.forcemerge.ForceMergeResponse;
|
43 | 43 | import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
|
| 44 | +import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsRequest; |
| 45 | +import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsResponse; |
44 | 46 | import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
45 | 47 | import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
46 | 48 | import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
@@ -703,6 +705,110 @@ public void onFailure(Exception e) {
|
703 | 705 | }
|
704 | 706 | }
|
705 | 707 |
|
| 708 | + public void testGetFieldMapping() throws IOException, InterruptedException { |
| 709 | + RestHighLevelClient client = highLevelClient(); |
| 710 | + |
| 711 | + { |
| 712 | + CreateIndexResponse createIndexResponse = client.indices().create(new CreateIndexRequest("twitter"), RequestOptions.DEFAULT); |
| 713 | + assertTrue(createIndexResponse.isAcknowledged()); |
| 714 | + PutMappingRequest request = new PutMappingRequest("twitter"); |
| 715 | + request.type("tweet"); |
| 716 | + request.source( |
| 717 | + "{\n" + |
| 718 | + " \"properties\": {\n" + |
| 719 | + " \"message\": {\n" + |
| 720 | + " \"type\": \"text\"\n" + |
| 721 | + " },\n" + |
| 722 | + " \"timestamp\": {\n" + |
| 723 | + " \"type\": \"date\"\n" + |
| 724 | + " }\n" + |
| 725 | + " }\n" + |
| 726 | + "}", // <1> |
| 727 | + XContentType.JSON); |
| 728 | + PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT); |
| 729 | + assertTrue(putMappingResponse.isAcknowledged()); |
| 730 | + } |
| 731 | + |
| 732 | + // tag::get-field-mapping-request |
| 733 | + GetFieldMappingsRequest request = new GetFieldMappingsRequest(); // <1> |
| 734 | + request.indices("twitter"); // <2> |
| 735 | + request.types("tweet"); // <3> |
| 736 | + request.fields("message", "timestamp"); // <4> |
| 737 | + // end::get-field-mapping-request |
| 738 | + |
| 739 | + // tag::get-field-mapping-request-indicesOptions |
| 740 | + request.indicesOptions(IndicesOptions.lenientExpandOpen()); // <1> |
| 741 | + // end::get-field-mapping-request-indicesOptions |
| 742 | + |
| 743 | + // tag::get-field-mapping-request-local |
| 744 | + request.local(true); // <1> |
| 745 | + // end::get-field-mapping-request-local |
| 746 | + |
| 747 | + { |
| 748 | + |
| 749 | + // tag::get-field-mapping-execute |
| 750 | + GetFieldMappingsResponse response = |
| 751 | + client.indices().getFieldMapping(request, RequestOptions.DEFAULT); |
| 752 | + // end::get-field-mapping-execute |
| 753 | + |
| 754 | + // tag::get-field-mapping-response |
| 755 | + final Map<String, Map<String, Map<String, GetFieldMappingsResponse.FieldMappingMetaData>>> mappings = |
| 756 | + response.mappings();// <1> |
| 757 | + final Map<String, GetFieldMappingsResponse.FieldMappingMetaData> typeMappings = |
| 758 | + mappings.get("twitter").get("tweet"); // <2> |
| 759 | + final GetFieldMappingsResponse.FieldMappingMetaData metaData = |
| 760 | + typeMappings.get("message");// <3> |
| 761 | + |
| 762 | + final String fullName = metaData.fullName();// <4> |
| 763 | + final Map<String, Object> source = metaData.sourceAsMap(); // <5> |
| 764 | + // end::get-field-mapping-response |
| 765 | + } |
| 766 | + |
| 767 | + { |
| 768 | + // tag::get-field-mapping-execute-listener |
| 769 | + ActionListener<GetFieldMappingsResponse> listener = |
| 770 | + new ActionListener<GetFieldMappingsResponse>() { |
| 771 | + @Override |
| 772 | + public void onResponse(GetFieldMappingsResponse putMappingResponse) { |
| 773 | + // <1> |
| 774 | + } |
| 775 | + |
| 776 | + @Override |
| 777 | + public void onFailure(Exception e) { |
| 778 | + // <2> |
| 779 | + } |
| 780 | + }; |
| 781 | + // end::get-field-mapping-execute-listener |
| 782 | + |
| 783 | + // Replace the empty listener by a blocking listener in test |
| 784 | + final CountDownLatch latch = new CountDownLatch(1); |
| 785 | + final ActionListener<GetFieldMappingsResponse> latchListener = new LatchedActionListener<>(listener, latch); |
| 786 | + listener = ActionListener.wrap(r -> { |
| 787 | + final Map<String, Map<String, Map<String, GetFieldMappingsResponse.FieldMappingMetaData>>> mappings = |
| 788 | + r.mappings(); |
| 789 | + final Map<String, GetFieldMappingsResponse.FieldMappingMetaData> typeMappings = |
| 790 | + mappings.get("twitter").get("tweet"); |
| 791 | + final GetFieldMappingsResponse.FieldMappingMetaData metaData1 = typeMappings.get("message"); |
| 792 | + |
| 793 | + final String fullName = metaData1.fullName(); |
| 794 | + final Map<String, Object> source = metaData1.sourceAsMap(); |
| 795 | + latchListener.onResponse(r); |
| 796 | + }, e -> { |
| 797 | + latchListener.onFailure(e); |
| 798 | + fail("should not fail"); |
| 799 | + }); |
| 800 | + |
| 801 | + // tag::get-field-mapping-execute-async |
| 802 | + client.indices().getFieldMappingAsync(request, RequestOptions.DEFAULT, listener); // <1> |
| 803 | + // end::get-field-mapping-execute-async |
| 804 | + |
| 805 | + assertTrue(latch.await(30L, TimeUnit.SECONDS)); |
| 806 | + } |
| 807 | + |
| 808 | + |
| 809 | + } |
| 810 | + |
| 811 | + |
706 | 812 | public void testOpenIndex() throws Exception {
|
707 | 813 | RestHighLevelClient client = highLevelClient();
|
708 | 814 |
|
|
0 commit comments