From 2dfeaff8f959433727ff30b240aed091e990ba45 Mon Sep 17 00:00:00 2001 From: "Zheng, Xiu" Date: Thu, 6 Jun 2024 16:15:58 +0000 Subject: [PATCH] css umn 23.5.1 20240520 Reviewed-by: Pruthi, Vineet Co-authored-by: Zheng, Xiu Co-committed-by: Zheng, Xiu --- docs/css/umn/ALL_META.TXT.json | 3677 +++++++++++------ docs/css/umn/CLASS.TXT.json | 3171 +++++++------- docs/css/umn/css_01_0001.html | 31 - docs/css/umn/css_01_0006.html | 11 - docs/css/umn/css_01_0007.html | 302 -- docs/css/umn/css_01_0008.html | 19 - docs/css/umn/css_01_0009.html | 27 - docs/css/umn/css_01_0011.html | 343 -- docs/css/umn/css_01_0014.html | 25 - docs/css/umn/css_01_0015.html | 15 - docs/css/umn/css_01_0024.html | 144 - docs/css/umn/css_01_0033.html | 12 - docs/css/umn/css_01_0041.html | 15 - docs/css/umn/css_01_0042.html | 52 - docs/css/umn/css_01_0045.html | 13 - docs/css/umn/css_01_0048.html | 189 - docs/css/umn/css_01_0049.html | 13 - docs/css/umn/css_01_0050.html | 103 - docs/css/umn/css_01_0051.html | 19 - docs/css/umn/css_01_0053.html | 67 - docs/css/umn/css_01_0055.html | 146 - docs/css/umn/css_01_0056.html | 64 - docs/css/umn/css_01_0058.html | 18 - docs/css/umn/css_01_0060.html | 88 - docs/css/umn/css_01_0061.html | 325 -- docs/css/umn/css_01_0070.html | 13 - docs/css/umn/css_01_0072.html | 21 - docs/css/umn/css_01_0075.html | 57 - docs/css/umn/css_01_0076.html | 57 - docs/css/umn/css_01_0077.html | 109 - docs/css/umn/css_01_0078.html | 24 - docs/css/umn/css_01_0079.html | 52 - docs/css/umn/css_01_0080.html | 111 - docs/css/umn/css_01_0082.html | 38 - docs/css/umn/css_01_0086.html | 83 - docs/css/umn/css_01_0088.html | 86 - docs/css/umn/css_01_0091.html | 17 - docs/css/umn/css_01_0092.html | 40 - docs/css/umn/css_01_0093.html | 37 - docs/css/umn/css_01_0094.html | 260 -- docs/css/umn/css_01_0107.html | 24 - docs/css/umn/css_01_0108.html | 15 - docs/css/umn/css_01_0109.html | 83 - docs/css/umn/css_01_0111.html | 31 - docs/css/umn/css_01_0112.html | 24 - docs/css/umn/css_01_0113.html | 15 - docs/css/umn/css_01_0114.html | 521 --- docs/css/umn/css_01_0116.html | 139 - docs/css/umn/css_01_0117.html | 29 - docs/css/umn/css_01_0118.html | 22 - docs/css/umn/css_01_0121.html | 230 -- docs/css/umn/css_01_0122.html | 74 - docs/css/umn/css_01_0123.html | 297 -- docs/css/umn/css_01_0124.html | 86 - docs/css/umn/css_01_0125.html | 11 - docs/css/umn/css_01_0126.html | 51 - docs/css/umn/css_01_0130.html | 19 - docs/css/umn/css_01_0131.html | 18 - docs/css/umn/css_01_0132.html | 14 - docs/css/umn/css_01_0133.html | 219 - docs/css/umn/css_01_0134.html | 24 - docs/css/umn/css_01_0135.html | 13 - docs/css/umn/css_01_0136.html | 76 - docs/css/umn/css_01_0137.html | 142 - docs/css/umn/css_01_0138.html | 114 - docs/css/umn/css_01_0139.html | 31 - docs/css/umn/css_01_0140.html | 18 - docs/css/umn/css_01_0141.html | 99 - docs/css/umn/css_01_0142.html | 122 - docs/css/umn/css_01_0143.html | 43 - docs/css/umn/css_01_0144.html | 73 - docs/css/umn/css_01_0145.html | 176 - docs/css/umn/css_01_0146.html | 170 - docs/css/umn/css_01_0147.html | 92 - docs/css/umn/css_01_0148.html | 25 - docs/css/umn/css_01_0149.html | 32 - docs/css/umn/css_01_0150.html | 29 - docs/css/umn/css_01_0151.html | 85 - docs/css/umn/css_01_0152.html | 20 - docs/css/umn/css_01_0153.html | 87 - docs/css/umn/css_01_0154.html | 22 - docs/css/umn/css_01_0155.html | 79 - docs/css/umn/css_01_0156.html | 23 - docs/css/umn/css_01_0157.html | 43 - docs/css/umn/css_01_0158.html | 82 - docs/css/umn/css_01_0161.html | 19 - docs/css/umn/css_01_0162.html | 13 - docs/css/umn/css_01_0164.html | 23 - docs/css/umn/css_01_0165.html | 32 - docs/css/umn/css_01_0166.html | 64 - docs/css/umn/css_01_0167.html | 70 - docs/css/umn/css_01_0168.html | 13 - docs/css/umn/css_01_0169.html | 94 - docs/css/umn/css_01_0170.html | 18 - docs/css/umn/css_01_0172.html | 22 - docs/css/umn/css_01_0173.html | 44 - docs/css/umn/css_01_0174.html | 62 - docs/css/umn/css_01_0175.html | 47 - docs/css/umn/css_01_0176.html | 71 - docs/css/umn/css_01_0177.html | 17 - docs/css/umn/css_01_0178.html | 70 - docs/css/umn/css_01_0179.html | 63 - docs/css/umn/css_01_0181.html | 226 - docs/css/umn/css_01_0182.html | 397 -- docs/css/umn/css_01_0184.html | 20 - docs/css/umn/css_01_0185.html | 169 - docs/css/umn/css_01_0187.html | 153 - docs/css/umn/css_01_0188.html | 156 - docs/css/umn/css_01_0189.html | 36 - docs/css/umn/css_01_0190.html | 17 - docs/css/umn/css_01_0191.html | 28 - docs/css/umn/css_01_0192.html | 17 - docs/css/umn/css_01_0193.html | 99 - docs/css/umn/css_01_0194.html | 104 - docs/css/umn/css_01_0195.html | 51 - docs/css/umn/css_01_0196.html | 26 - docs/css/umn/css_01_0198.html | 107 - docs/css/umn/css_01_0199.html | 159 - docs/css/umn/css_01_0200.html | 17 - docs/css/umn/css_01_0201.html | 70 - docs/css/umn/css_01_0202.html | 85 - docs/css/umn/css_01_0207.html | 31 - docs/css/umn/css_01_0210.html | 25 - docs/css/umn/css_01_0211.html | 23 - docs/css/umn/css_01_0212.html | 21 - docs/css/umn/css_01_0227.html | 19 - docs/css/umn/css_01_0228.html | 19 - docs/css/umn/css_01_0229.html | 21 - docs/css/umn/css_01_0230.html | 45 - docs/css/umn/css_01_0231.html | 21 - docs/css/umn/css_01_0232.html | 27 - docs/css/umn/css_01_0233_0.html | 20 - docs/css/umn/css_01_0234.html | 44 - docs/css/umn/css_01_0246.html | 369 -- docs/css/umn/css_01_0266.html | 28 - docs/css/umn/css_01_0267.html | 65 - docs/css/umn/css_01_0268.html | 54 - docs/css/umn/css_01_0269.html | 23 - docs/css/umn/css_01_0271.html | 14 - docs/css/umn/css_02_0001.html | 29 - docs/css/umn/css_02_0006.html | 17 - docs/css/umn/css_02_0007.html | 15 - docs/css/umn/css_02_0008.html | 12 - docs/css/umn/css_02_0009.html | 11 - docs/css/umn/css_02_0010.html | 12 - docs/css/umn/css_02_0017.html | 17 - docs/css/umn/css_02_0025.html | 20 - docs/css/umn/css_02_0034.html | 22 - docs/css/umn/css_02_0041.html | 25 - docs/css/umn/css_02_0042.html | 23 - docs/css/umn/css_02_0043.html | 23 - docs/css/umn/css_02_0051.html | 32 - docs/css/umn/css_02_0052.html | 12 - docs/css/umn/css_02_0055.html | 43 - docs/css/umn/css_02_0058.html | 15 - docs/css/umn/css_02_0063.html | 23 - docs/css/umn/css_02_0064.html | 11 - docs/css/umn/css_02_0066.html | 35 - docs/css/umn/css_02_0067.html | 18 - docs/css/umn/css_02_0068.html | 18 - docs/css/umn/css_02_0069.html | 11 - docs/css/umn/css_02_0070.html | 19 - docs/css/umn/css_02_0073.html | 18 - docs/css/umn/css_02_0077.html | 22 - docs/css/umn/css_02_0078.html | 11 - docs/css/umn/css_02_0079.html | 11 - docs/css/umn/css_02_0081.html | 11 - docs/css/umn/css_02_0082.html | 21 - docs/css/umn/css_02_0083.html | 13 - docs/css/umn/css_02_0088.html | 12 - docs/css/umn/css_02_0089.html | 18 - docs/css/umn/css_02_0093.html | 13 - docs/css/umn/css_02_0094.html | 14 - docs/css/umn/css_02_0096.html | 19 - docs/css/umn/css_02_0097.html | 37 - docs/css/umn/css_02_0098.html | 13 - docs/css/umn/css_02_0099.html | 17 - docs/css/umn/css_02_0101.html | 16 - docs/css/umn/css_02_0102.html | 20 - docs/css/umn/css_02_0106.html | 12 - docs/css/umn/css_02_0118.html | 13 - docs/css/umn/css_02_0119.html | 29 - docs/css/umn/css_02_0120.html | 22 - docs/css/umn/css_02_0124.html | 11 - docs/css/umn/css_02_0125.html | 25 - docs/css/umn/css_02_0126.html | 14 - docs/css/umn/css_02_0127.html | 16 - docs/css/umn/css_02_0128.html | 16 - docs/css/umn/css_02_0130.html | 25 - docs/css/umn/css_02_0131.html | 16 - docs/css/umn/css_02_0132.html | 15 - docs/css/umn/css_02_0201.html | 75 - docs/css/umn/css_04_0001.html | 20 - docs/css/umn/css_04_0002.html | 26 - docs/css/umn/css_04_0004.html | 62 - docs/css/umn/css_04_0005.html | 36 - docs/css/umn/css_04_0007.html | 19 - docs/css/umn/css_04_0010.html | 43 - docs/css/umn/css_04_0012.html | 29 - docs/css/umn/css_04_0014.html | 362 -- docs/css/umn/css_04_0019.html | 12 - ...> en-us_formulaimage_0000001575321958.png} | Bin ...> en-us_formulaimage_0000001575640870.png} | Bin ...> en-us_formulaimage_0000001625680497.png} | Bin ...> en-us_formulaimage_0000001626000845.png} | Bin ...8.png => en-us_image_0000001223434560.png} | Bin ...2.png => en-us_image_0000001223594508.png} | Bin docs/css/umn/en-us_image_0000001519064934.png | Bin 0 -> 88013 bytes docs/css/umn/en-us_image_0000001519225242.png | Bin 0 -> 19043 bytes docs/css/umn/en-us_image_0000001519541498.png | Bin 0 -> 23672 bytes docs/css/umn/en-us_image_0000001569480321.png | Bin 0 -> 30347 bytes docs/css/umn/en-us_image_0000001569656909.png | Bin 0 -> 41663 bytes ...6.png => en-us_image_0000001575311218.png} | Bin ...5.png => en-us_image_0000001575312654.png} | Bin ...4.png => en-us_image_0000001575313618.png} | Bin ...4.png => en-us_image_0000001575316322.png} | Bin ...2.png => en-us_image_0000001575319174.png} | Bin ...6.png => en-us_image_0000001575470374.png} | Bin ...2.png => en-us_image_0000001575471322.png} | Bin ...6.png => en-us_image_0000001575471938.png} | Bin ...0.png => en-us_image_0000001575475526.png} | Bin ...6.png => en-us_image_0000001575478486.png} | Bin ...7.png => en-us_image_0000001575482950.png} | Bin ...3.png => en-us_image_0000001575631554.png} | Bin ...9.png => en-us_image_0000001575631754.png} | Bin ...8.png => en-us_image_0000001575631898.png} | Bin ...0.png => en-us_image_0000001575631966.png} | Bin ...3.png => en-us_image_0000001575632538.png} | Bin ...2.png => en-us_image_0000001575635254.png} | Bin ...6.png => en-us_image_0000001575635862.png} | Bin ...2.jpg => en-us_image_0000001575637658.jpg} | Bin ...5.png => en-us_image_0000001575638082.png} | Bin ...6.png => en-us_image_0000001575642526.png} | Bin ...7.png => en-us_image_0000001575791646.png} | Bin ...4.png => en-us_image_0000001575802422.png} | Bin ...4.png => en-us_image_0000001575802426.png} | Bin ...9.png => en-us_image_0000001578525026.png} | Bin ...4.png => en-us_image_0000001578844214.png} | Bin ...4.png => en-us_image_0000001579004138.png} | Bin ...5.png => en-us_image_0000001583151098.png} | Bin ...9.png => en-us_image_0000001583151102.png} | Bin ...7.png => en-us_image_0000001583310486.png} | Bin ...3.png => en-us_image_0000001583470414.png} | Bin ...1.png => en-us_image_0000001583470442.png} | Bin ...9.png => en-us_image_0000001606771374.png} | Bin ...2.png => en-us_image_0000001606924426.png} | Bin docs/css/umn/en-us_image_0000001606925014.png | Bin 0 -> 27329 bytes docs/css/umn/en-us_image_0000001606925022.png | Bin 0 -> 19164 bytes ...2.png => en-us_image_0000001607164138.png} | Bin ...5.png => en-us_image_0000001607164742.png} | Bin docs/css/umn/en-us_image_0000001607405894.png | Bin 0 -> 40082 bytes docs/css/umn/en-us_image_0000001607447036.png | Bin 0 -> 44703 bytes docs/css/umn/en-us_image_0000001607591784.png | Bin 0 -> 58654 bytes docs/css/umn/en-us_image_0000001607766004.png | Bin 0 -> 52633 bytes docs/css/umn/en-us_image_0000001607890430.png | Bin 0 -> 48459 bytes docs/css/umn/en-us_image_0000001607915032.png | Bin 0 -> 27159 bytes docs/css/umn/en-us_image_0000001607933650.png | Bin 0 -> 60702 bytes docs/css/umn/en-us_image_0000001607935630.png | Bin 0 -> 50923 bytes ...4.png => en-us_image_0000001625669589.png} | Bin ...3.png => en-us_image_0000001625671361.png} | Bin docs/css/umn/en-us_image_0000001625673045.png | Bin 0 -> 28062 bytes ...0.png => en-us_image_0000001625674753.png} | Bin ...3.png => en-us_image_0000001625790509.png} | Bin ...7.png => en-us_image_0000001625791329.png} | Bin docs/css/umn/en-us_image_0000001625794717.png | Bin 0 -> 20491 bytes ...1.png => en-us_image_0000001625797681.png} | Bin ...9.png => en-us_image_0000001625802121.png} | Bin ...6.png => en-us_image_0000001625870985.png} | Bin ...2.png => en-us_image_0000001625871637.png} | Bin ...1.png => en-us_image_0000001625875305.png} | Bin ...9.png => en-us_image_0000001625878165.png} | Bin ...1.png => en-us_image_0000001625991489.png} | Bin ...7.png => en-us_image_0000001625991493.png} | Bin ...4.png => en-us_image_0000001625991693.png} | Bin ...9.png => en-us_image_0000001625992469.png} | Bin ...4.png => en-us_image_0000001625995085.png} | Bin ...0.png => en-us_image_0000001625998045.png} | Bin ...5.png => en-us_image_0000001628524809.png} | Bin ...3.png => en-us_image_0000001633030485.png} | Bin docs/css/umn/en-us_image_0000001633111029.png | Bin 0 -> 14643 bytes ...0.png => en-us_image_0000001633311021.png} | Bin docs/css/umn/en-us_image_0000001633709689.png | Bin 0 -> 295 bytes docs/css/umn/en-us_image_0000001634029125.png | Bin 0 -> 619 bytes docs/css/umn/en-us_image_0000001634149053.png | Bin 0 -> 270 bytes docs/css/umn/en-us_image_0000001634149089.png | Bin 0 -> 503 bytes docs/css/umn/en-us_image_0000001637133729.png | Bin 0 -> 503 bytes ...3.png => en-us_image_0000001641018664.png} | Bin docs/css/umn/en-us_image_0000001655964997.png | Bin 0 -> 17606 bytes docs/css/umn/en-us_image_0000001656084945.png | Bin 0 -> 22538 bytes docs/css/umn/en-us_image_0000001656204689.png | Bin 0 -> 619 bytes docs/css/umn/en-us_image_0000001656284657.png | Bin 0 -> 619 bytes docs/css/umn/en-us_image_0000001656284673.png | Bin 0 -> 14145 bytes docs/css/umn/en-us_image_0000001656290797.png | Bin 0 -> 69895 bytes docs/css/umn/en-us_image_0000001656848929.png | Bin 0 -> 16819 bytes docs/css/umn/en-us_image_0000001656851577.png | Bin 0 -> 115839 bytes ...1.png => en-us_image_0000001656902246.png} | Bin ...8.png => en-us_image_0000001656902250.png} | Bin ...7.png => en-us_image_0000001656902254.png} | Bin docs/css/umn/en-us_image_0000001656931909.png | Bin 0 -> 37505 bytes ...2.png => en-us_image_0000001657061586.png} | Bin ...4.png => en-us_image_0000001657061590.png} | Bin ...5.png => en-us_image_0000001657061594.png} | Bin docs/css/umn/en-us_image_0000001657091157.png | Bin 0 -> 22618 bytes docs/css/umn/en-us_image_0000001657091853.png | Bin 0 -> 27159 bytes docs/css/umn/en-us_image_0000001657221737.png | Bin 0 -> 68882 bytes docs/css/umn/en-us_image_0000001657244165.png | Bin 0 -> 58129 bytes docs/css/umn/en-us_image_0000001657249665.png | Bin 0 -> 26728 bytes docs/css/umn/en-us_image_0000001666842626.png | Bin 11656 -> 0 bytes docs/css/umn/en-us_image_0000001666842658.png | Bin 11166 -> 0 bytes docs/css/umn/en-us_image_0000001666842734.png | Bin 1108 -> 0 bytes docs/css/umn/en-us_image_0000001667002386.png | Bin 17845 -> 0 bytes docs/css/umn/en-us_image_0000001667002450.png | Bin 296 -> 0 bytes docs/css/umn/en-us_image_0000001696678850.png | Bin 0 -> 565 bytes docs/css/umn/en-us_image_0000001696838310.png | Bin 0 -> 180 bytes docs/css/umn/en-us_image_0000001696838318.png | Bin 0 -> 18908 bytes ...5.png => en-us_image_0000001705061713.png} | Bin ...0.png => en-us_image_0000001705061717.png} | Bin ...9.png => en-us_image_0000001705061721.png} | Bin ...7.png => en-us_image_0000001705220953.png} | Bin ...2.png => en-us_image_0000001705220957.png} | Bin ...0.png => en-us_image_0000001705227645.png} | Bin ...3.png => en-us_image_0000001705958261.png} | Bin docs/css/umn/en-us_image_0000001714802085.png | Bin 40413 -> 0 bytes docs/css/umn/en-us_image_0000001714802105.png | Bin 12131 -> 0 bytes docs/css/umn/en-us_image_0000001714802109.png | Bin 12055 -> 0 bytes docs/css/umn/en-us_image_0000001714802149.png | Bin 8493 -> 0 bytes docs/css/umn/en-us_image_0000001714802201.png | Bin 10063 -> 0 bytes docs/css/umn/en-us_image_0000001714802297.png | Bin 11988 -> 0 bytes docs/css/umn/en-us_image_0000001714802397.png | Bin 5594 -> 0 bytes docs/css/umn/en-us_image_0000001714921929.png | Bin 21360 -> 0 bytes docs/css/umn/en-us_image_0000001714921945.png | Bin 15871 -> 0 bytes docs/css/umn/en-us_image_0000001714922005.png | Bin 12708 -> 0 bytes docs/css/umn/en-us_image_0000001744598325.png | Bin 0 -> 32235 bytes docs/css/umn/en-us_image_0000001744678489.jpg | Bin 0 -> 744 bytes docs/css/umn/en-us_image_0000001758618249.png | Bin 0 -> 19134 bytes docs/css/umn/en-us_image_0000001768547780.png | Bin 0 -> 88013 bytes docs/css/umn/en-us_image_0000001771562782.png | Bin 0 -> 91162 bytes docs/css/umn/en-us_image_0000001815267817.png | Bin 0 -> 30347 bytes docs/css/umn/en-us_image_0000001815267821.png | Bin 0 -> 19043 bytes docs/css/umn/en-us_image_0000001818277097.png | Bin 0 -> 41223 bytes docs/css/umn/en-us_image_0000001823414260.png | Bin 0 -> 8903 bytes docs/css/umn/en-us_image_0000001823619658.png | Bin 0 -> 29666 bytes docs/css/umn/en-us_image_0000001823780106.png | Bin 0 -> 16287 bytes docs/css/umn/en-us_image_0000001824400680.png | Bin 0 -> 9165 bytes docs/css/umn/en-us_image_0000001824562672.png | Bin 0 -> 13213 bytes docs/css/umn/en-us_image_0000001870298901.png | Bin 0 -> 8903 bytes docs/css/umn/en-us_image_0000001870333105.png | Bin 0 -> 12599 bytes docs/css/umn/en-us_image_0000001870378393.png | Bin 0 -> 12273 bytes docs/css/umn/en-us_image_0000001871319057.png | Bin 0 -> 13358 bytes .../css/umn/en-us_topic_0000001476817894.html | 12 + .../css/umn/en-us_topic_0000001476817902.html | 22 + .../css/umn/en-us_topic_0000001476817906.html | 16 + .../css/umn/en-us_topic_0000001476817910.html | 20 + .../css/umn/en-us_topic_0000001476817914.html | 22 + .../css/umn/en-us_topic_0000001476817918.html | 21 + .../css/umn/en-us_topic_0000001476977542.html | 20 + .../css/umn/en-us_topic_0000001476977546.html | 17 + .../css/umn/en-us_topic_0000001476977550.html | 12 + .../css/umn/en-us_topic_0000001476977554.html | 11 + .../css/umn/en-us_topic_0000001476977558.html | 19 + .../css/umn/en-us_topic_0000001476977562.html | 18 + .../css/umn/en-us_topic_0000001477137526.html | 16 + .../css/umn/en-us_topic_0000001477137530.html | 43 + .../css/umn/en-us_topic_0000001477137534.html | 32 + .../css/umn/en-us_topic_0000001477137538.html | 11 + .../css/umn/en-us_topic_0000001477137542.html | 12 + .../css/umn/en-us_topic_0000001477137546.html | 17 + .../css/umn/en-us_topic_0000001477297334.html | 29 + .../css/umn/en-us_topic_0000001477297338.html | 11 + .../css/umn/en-us_topic_0000001477297346.html | 11 + .../css/umn/en-us_topic_0000001477297350.html | 12 + .../css/umn/en-us_topic_0000001477297354.html | 25 + .../css/umn/en-us_topic_0000001477297358.html | 13 + .../css/umn/en-us_topic_0000001477297362.html | 11 + .../css/umn/en-us_topic_0000001477419712.html | 17 + .../css/umn/en-us_topic_0000001477419716.html | 74 + .../css/umn/en-us_topic_0000001477419720.html | 107 + .../css/umn/en-us_topic_0000001477419724.html | 161 + .../css/umn/en-us_topic_0000001477419728.html | 17 + .../css/umn/en-us_topic_0000001477419736.html | 104 + .../css/umn/en-us_topic_0000001477419740.html | 15 + .../css/umn/en-us_topic_0000001477419744.html | 92 + .../css/umn/en-us_topic_0000001477419748.html | 70 + .../css/umn/en-us_topic_0000001477419752.html | 21 + .../css/umn/en-us_topic_0000001477419760.html | 44 + .../css/umn/en-us_topic_0000001477419764.html | 86 + .../css/umn/en-us_topic_0000001477419768.html | 13 + .../css/umn/en-us_topic_0000001477419772.html | 63 + .../css/umn/en-us_topic_0000001477419776.html | 37 + ...html => en-us_topic_0000001477419788.html} | 14 +- .../css/umn/en-us_topic_0000001477579336.html | 79 + .../css/umn/en-us_topic_0000001477579340.html | 33 + .../css/umn/en-us_topic_0000001477579352.html | 99 + .../css/umn/en-us_topic_0000001477579356.html | 73 + .../css/umn/en-us_topic_0000001477579364.html | 26 + .../css/umn/en-us_topic_0000001477579368.html | 67 + .../css/umn/en-us_topic_0000001477579372.html | 100 + .../css/umn/en-us_topic_0000001477579376.html | 23 + .../css/umn/en-us_topic_0000001477579380.html | 17 + .../css/umn/en-us_topic_0000001477579388.html | 219 + .../css/umn/en-us_topic_0000001477579396.html | 15 + .../css/umn/en-us_topic_0000001477579404.html | 23 + .../css/umn/en-us_topic_0000001477579408.html | 76 + .../css/umn/en-us_topic_0000001477579412.html | 38 + .../css/umn/en-us_topic_0000001477739336.html | 104 + .../css/umn/en-us_topic_0000001477739344.html | 346 ++ .../css/umn/en-us_topic_0000001477739348.html | 396 ++ .../css/umn/en-us_topic_0000001477739356.html | 18 + .../css/umn/en-us_topic_0000001477739360.html | 153 + .../css/umn/en-us_topic_0000001477739364.html | 43 + .../css/umn/en-us_topic_0000001477739368.html | 24 + .../css/umn/en-us_topic_0000001477739376.html | 14 + .../css/umn/en-us_topic_0000001477739380.html | 25 + .../css/umn/en-us_topic_0000001477739384.html | 15 + .../css/umn/en-us_topic_0000001477739388.html | 24 + .../css/umn/en-us_topic_0000001477739392.html | 37 + .../css/umn/en-us_topic_0000001477739396.html | 11 + .../css/umn/en-us_topic_0000001477739400.html | 226 + .../css/umn/en-us_topic_0000001477739404.html | 32 + .../css/umn/en-us_topic_0000001477739408.html | 25 + .../css/umn/en-us_topic_0000001477899148.html | 84 + .../css/umn/en-us_topic_0000001477899152.html | 31 + .../css/umn/en-us_topic_0000001477899160.html | 31 + .../css/umn/en-us_topic_0000001477899164.html | 85 + .../css/umn/en-us_topic_0000001477899172.html | 263 ++ .../css/umn/en-us_topic_0000001477899176.html | 30 + .../css/umn/en-us_topic_0000001477899180.html | 21 + .../css/umn/en-us_topic_0000001477899184.html | 18 + .../css/umn/en-us_topic_0000001477899188.html | 42 + .../css/umn/en-us_topic_0000001477899192.html | 297 ++ .../css/umn/en-us_topic_0000001477899200.html | 148 + .../css/umn/en-us_topic_0000001477899208.html | 19 + .../css/umn/en-us_topic_0000001477899212.html | 325 ++ .../css/umn/en-us_topic_0000001477899216.html | 152 + .../css/umn/en-us_topic_0000001477899220.html | 18 + .../css/umn/en-us_topic_0000001477899224.html | 13 + .../css/umn/en-us_topic_0000001504911882.html | 37 + .../css/umn/en-us_topic_0000001527697777.html | 23 + .../css/umn/en-us_topic_0000001527697781.html | 25 + .../css/umn/en-us_topic_0000001527697785.html | 35 + .../css/umn/en-us_topic_0000001527697789.html | 19 + .../css/umn/en-us_topic_0000001527697793.html | 13 + .../css/umn/en-us_topic_0000001527697797.html | 13 + .../css/umn/en-us_topic_0000001527777425.html | 14 + .../css/umn/en-us_topic_0000001527777429.html | 16 + .../css/umn/en-us_topic_0000001527777433.html | 23 + .../css/umn/en-us_topic_0000001527777437.html | 16 + .../css/umn/en-us_topic_0000001527777441.html | 17 + .../css/umn/en-us_topic_0000001527777445.html | 11 + .../css/umn/en-us_topic_0000001527777449.html | 23 + .../css/umn/en-us_topic_0000001527937329.html | 13 + .../css/umn/en-us_topic_0000001527937333.html | 18 + .../css/umn/en-us_topic_0000001527937337.html | 11 + .../css/umn/en-us_topic_0000001527937341.html | 15 + .../css/umn/en-us_topic_0000001527937345.html | 18 + .../css/umn/en-us_topic_0000001528097289.html | 18 + .../css/umn/en-us_topic_0000001528097293.html | 12 + .../css/umn/en-us_topic_0000001528097297.html | 15 + .../css/umn/en-us_topic_0000001528097305.html | 22 + .../css/umn/en-us_topic_0000001528097309.html | 14 + .../css/umn/en-us_topic_0000001528097313.html | 15 + .../css/umn/en-us_topic_0000001528097317.html | 25 + .../css/umn/en-us_topic_0000001528299557.html | 232 ++ .../css/umn/en-us_topic_0000001528299569.html | 537 +++ .../css/umn/en-us_topic_0000001528299573.html | 103 + .../css/umn/en-us_topic_0000001528299577.html | 176 + .../css/umn/en-us_topic_0000001528299581.html | 88 + .../css/umn/en-us_topic_0000001528299585.html | 68 + .../css/umn/en-us_topic_0000001528299597.html | 84 + .../css/umn/en-us_topic_0000001528299601.html | 111 + .../css/umn/en-us_topic_0000001528299609.html | 86 + .../css/umn/en-us_topic_0000001528299613.html | 68 + .../css/umn/en-us_topic_0000001528299617.html | 22 + .../css/umn/en-us_topic_0000001528299621.html | 18 + .../css/umn/en-us_topic_0000001528299625.html | 22 + .../css/umn/en-us_topic_0000001528299629.html | 57 + .../css/umn/en-us_topic_0000001528379249.html | 19 + .../css/umn/en-us_topic_0000001528379253.html | 29 + .../css/umn/en-us_topic_0000001528379257.html | 22 + .../css/umn/en-us_topic_0000001528379265.html | 70 + .../css/umn/en-us_topic_0000001528379273.html | 83 + .../css/umn/en-us_topic_0000001528379277.html | 17 + .../css/umn/en-us_topic_0000001528379285.html | 82 + .../css/umn/en-us_topic_0000001528379297.html | 20 + .../css/umn/en-us_topic_0000001528379301.html | 85 + .../css/umn/en-us_topic_0000001528379305.html | 17 + .../css/umn/en-us_topic_0000001528379309.html | 139 + .../css/umn/en-us_topic_0000001528379313.html | 32 + .../css/umn/en-us_topic_0000001528379317.html | 303 ++ .../css/umn/en-us_topic_0000001528379321.html | 13 + ...html => en-us_topic_0000001528499121.html} | 14 +- .../css/umn/en-us_topic_0000001528499125.html | 13 + ...html => en-us_topic_0000001528499129.html} | 8 +- .../css/umn/en-us_topic_0000001528499133.html | 24 + .../css/umn/en-us_topic_0000001528499137.html | 197 + .../css/umn/en-us_topic_0000001528499141.html | 25 + .../css/umn/en-us_topic_0000001528499145.html | 47 + .../css/umn/en-us_topic_0000001528499153.html | 24 + .../css/umn/en-us_topic_0000001528499157.html | 122 + .../css/umn/en-us_topic_0000001528499165.html | 43 + .../css/umn/en-us_topic_0000001528499169.html | 102 + .../css/umn/en-us_topic_0000001528499181.html | 13 + .../css/umn/en-us_topic_0000001528499197.html | 114 + .../css/umn/en-us_topic_0000001528499201.html | 170 + .../css/umn/en-us_topic_0000001528659081.html | 52 + .../css/umn/en-us_topic_0000001528659085.html | 40 + .../css/umn/en-us_topic_0000001528659089.html | 29 + .../css/umn/en-us_topic_0000001528659093.html | 36 + .../css/umn/en-us_topic_0000001528659101.html | 170 + .../css/umn/en-us_topic_0000001528659105.html | 142 + .../css/umn/en-us_topic_0000001528659117.html | 51 + .../css/umn/en-us_topic_0000001528659121.html | 22 + .../css/umn/en-us_topic_0000001528659125.html | 62 + .../css/umn/en-us_topic_0000001528659133.html | 52 + .../css/umn/en-us_topic_0000001528659137.html | 58 + .../css/umn/en-us_topic_0000001528659141.html | 71 + .../css/umn/en-us_topic_0000001528659149.html | 159 + .../css/umn/en-us_topic_0000001528659153.html | 217 + .../css/umn/en-us_topic_0000001528659157.html | 64 + .../css/umn/en-us_topic_0000001533829376.html | 19 + .../css/umn/en-us_topic_0000001533988876.html | 19 + .../css/umn/en-us_topic_0000001534148568.html | 45 + .../css/umn/en-us_topic_0000001534308508.html | 21 + .../css/umn/en-us_topic_0000001555591537.html | 25 + .../css/umn/en-us_topic_0000001562137917.html | 75 + .../css/umn/en-us_topic_0000001564706853.html | 18 + .../css/umn/en-us_topic_0000001564906577.html | 148 + .../css/umn/en-us_topic_0000001583146906.html | 14 + .../css/umn/en-us_topic_0000001583300810.html | 29 + .../css/umn/en-us_topic_0000001583460750.html | 67 + .../css/umn/en-us_topic_0000001583669884.html | 154 + .../css/umn/en-us_topic_0000001583669892.html | 22 + .../css/umn/en-us_topic_0000001583989096.html | 28 + .../css/umn/en-us_topic_0000001584149004.html | 340 ++ .../css/umn/en-us_topic_0000001584708761.html | 44 + .../css/umn/en-us_topic_0000001584828717.html | 27 + .../css/umn/en-us_topic_0000001584988497.html | 20 + .../css/umn/en-us_topic_0000001585148465.html | 21 + .../css/umn/en-us_topic_0000001587956758.html | 19 + .../css/umn/en-us_topic_0000001590323656.html | 37 + .../css/umn/en-us_topic_0000001590323664.html | 54 + .../css/umn/en-us_topic_0000001590332948.html | 85 + .../css/umn/en-us_topic_0000001590603388.html | 382 ++ .../css/umn/en-us_topic_0000001590612676.html | 18 + .../css/umn/en-us_topic_0000001590963076.html | 57 + .../css/umn/en-us_topic_0000001590963080.html | 65 + .../css/umn/en-us_topic_0000001590972372.html | 84 + .../css/umn/en-us_topic_0000001591285452.html | 20 + .../css/umn/en-us_topic_0000001591285456.html | 28 + .../css/umn/en-us_topic_0000001591294758.html | 79 + .../css/umn/en-us_topic_0000001591298678.html | 36 + .../css/umn/en-us_topic_0000001591298682.html | 74 + .../css/umn/en-us_topic_0000001591456866.html | 104 + .../css/umn/en-us_topic_0000001591616594.html | 44 + .../css/umn/en-us_topic_0000001591776270.html | 39 + .../css/umn/en-us_topic_0000001591776274.html | 18 + .../css/umn/en-us_topic_0000001599872681.html | 385 ++ .../css/umn/en-us_topic_0000001633220693.html | 54 + .../css/umn/en-us_topic_0000001633221741.html | 23 + .../css/umn/en-us_topic_0000001633303977.html | 12 + .../css/umn/en-us_topic_0000001633949601.html | 28 + .../css/umn/en-us_topic_0000001637436445.html | 35 + .../css/umn/en-us_topic_0000001640645481.html | 226 + .../css/umn/en-us_topic_0000001640645485.html | 14 + .../css/umn/en-us_topic_0000001640654793.html | 40 + .../css/umn/en-us_topic_0000001640658697.html | 17 + .../css/umn/en-us_topic_0000001640658701.html | 86 + .../css/umn/en-us_topic_0000001640764229.html | 393 ++ .../css/umn/en-us_topic_0000001640773493.html | 29 + .../css/umn/en-us_topic_0000001640773505.html | 68 + .../css/umn/en-us_topic_0000001640777441.html | 111 + .../css/umn/en-us_topic_0000001640879293.html | 20 + .../css/umn/en-us_topic_0000001640883633.html | 23 + .../css/umn/en-us_topic_0000001640892937.html | 19 + .../css/umn/en-us_topic_0000001640998693.html | 15 + .../css/umn/en-us_topic_0000001641003025.html | 17 + .../css/umn/en-us_topic_0000001641003029.html | 12 + .../css/umn/en-us_topic_0000001641012329.html | 24 + .../css/umn/en-us_topic_0000001641016221.html | 42 + .../css/umn/en-us_topic_0000001647464345.html | 58 + .../css/umn/en-us_topic_0000001667545170.html | 20 + .../css/umn/en-us_topic_0000001667545182.html | 12 + .../css/umn/en-us_topic_0000001667704882.html | 19 + .../css/umn/en-us_topic_0000001667704890.html | 43 + .../css/umn/en-us_topic_0000001715624649.html | 29 + .../css/umn/en-us_topic_0000001715624661.html | 62 + .../css/umn/en-us_topic_0000001715624665.html | 362 ++ .../css/umn/en-us_topic_0000001715624677.html | 36 + .../css/umn/en-us_topic_0000001715704493.html | 26 + .../css/umn/en-us_topic_0000001720964408.html | 25 + .../css/umn/en-us_topic_0000001814230837.html | 139 + .../css/umn/en-us_topic_0000001815107861.html | 198 + .../css/umn/en-us_topic_0000001832788405.html | 39 + .../css/umn/en-us_topic_0000001866261281.html | 21 + .../css/umn/en-us_topic_0000001876048066.html | 29 + .../css/umn/en-us_topic_0000001921967557.html | 31 + 596 files changed, 19876 insertions(+), 14647 deletions(-) delete mode 100644 docs/css/umn/css_01_0001.html delete mode 100644 docs/css/umn/css_01_0006.html delete mode 100644 docs/css/umn/css_01_0007.html delete mode 100644 docs/css/umn/css_01_0008.html delete mode 100644 docs/css/umn/css_01_0009.html delete mode 100644 docs/css/umn/css_01_0011.html delete mode 100644 docs/css/umn/css_01_0014.html delete mode 100644 docs/css/umn/css_01_0015.html delete mode 100644 docs/css/umn/css_01_0024.html delete mode 100644 docs/css/umn/css_01_0033.html delete mode 100644 docs/css/umn/css_01_0041.html delete mode 100644 docs/css/umn/css_01_0042.html delete mode 100644 docs/css/umn/css_01_0045.html delete mode 100644 docs/css/umn/css_01_0048.html delete mode 100644 docs/css/umn/css_01_0049.html delete mode 100644 docs/css/umn/css_01_0050.html delete mode 100644 docs/css/umn/css_01_0051.html delete mode 100644 docs/css/umn/css_01_0053.html delete mode 100644 docs/css/umn/css_01_0055.html delete mode 100644 docs/css/umn/css_01_0056.html delete mode 100644 docs/css/umn/css_01_0058.html delete mode 100644 docs/css/umn/css_01_0060.html delete mode 100644 docs/css/umn/css_01_0061.html delete mode 100644 docs/css/umn/css_01_0070.html delete mode 100644 docs/css/umn/css_01_0072.html delete mode 100644 docs/css/umn/css_01_0075.html delete mode 100644 docs/css/umn/css_01_0076.html delete mode 100644 docs/css/umn/css_01_0077.html delete mode 100644 docs/css/umn/css_01_0078.html delete mode 100644 docs/css/umn/css_01_0079.html delete mode 100644 docs/css/umn/css_01_0080.html delete mode 100644 docs/css/umn/css_01_0082.html delete mode 100644 docs/css/umn/css_01_0086.html delete mode 100644 docs/css/umn/css_01_0088.html delete mode 100644 docs/css/umn/css_01_0091.html delete mode 100644 docs/css/umn/css_01_0092.html delete mode 100644 docs/css/umn/css_01_0093.html delete mode 100644 docs/css/umn/css_01_0094.html delete mode 100644 docs/css/umn/css_01_0107.html delete mode 100644 docs/css/umn/css_01_0108.html delete mode 100644 docs/css/umn/css_01_0109.html delete mode 100644 docs/css/umn/css_01_0111.html delete mode 100644 docs/css/umn/css_01_0112.html delete mode 100644 docs/css/umn/css_01_0113.html delete mode 100644 docs/css/umn/css_01_0114.html delete mode 100644 docs/css/umn/css_01_0116.html delete mode 100644 docs/css/umn/css_01_0117.html delete mode 100644 docs/css/umn/css_01_0118.html delete mode 100644 docs/css/umn/css_01_0121.html delete mode 100644 docs/css/umn/css_01_0122.html delete mode 100644 docs/css/umn/css_01_0123.html delete mode 100644 docs/css/umn/css_01_0124.html delete mode 100644 docs/css/umn/css_01_0125.html delete mode 100644 docs/css/umn/css_01_0126.html delete mode 100644 docs/css/umn/css_01_0130.html delete mode 100644 docs/css/umn/css_01_0131.html delete mode 100644 docs/css/umn/css_01_0132.html delete mode 100644 docs/css/umn/css_01_0133.html delete mode 100644 docs/css/umn/css_01_0134.html delete mode 100644 docs/css/umn/css_01_0135.html delete mode 100644 docs/css/umn/css_01_0136.html delete mode 100644 docs/css/umn/css_01_0137.html delete mode 100644 docs/css/umn/css_01_0138.html delete mode 100644 docs/css/umn/css_01_0139.html delete mode 100644 docs/css/umn/css_01_0140.html delete mode 100644 docs/css/umn/css_01_0141.html delete mode 100644 docs/css/umn/css_01_0142.html delete mode 100644 docs/css/umn/css_01_0143.html delete mode 100644 docs/css/umn/css_01_0144.html delete mode 100644 docs/css/umn/css_01_0145.html delete mode 100644 docs/css/umn/css_01_0146.html delete mode 100644 docs/css/umn/css_01_0147.html delete mode 100644 docs/css/umn/css_01_0148.html delete mode 100644 docs/css/umn/css_01_0149.html delete mode 100644 docs/css/umn/css_01_0150.html delete mode 100644 docs/css/umn/css_01_0151.html delete mode 100644 docs/css/umn/css_01_0152.html delete mode 100644 docs/css/umn/css_01_0153.html delete mode 100644 docs/css/umn/css_01_0154.html delete mode 100644 docs/css/umn/css_01_0155.html delete mode 100644 docs/css/umn/css_01_0156.html delete mode 100644 docs/css/umn/css_01_0157.html delete mode 100644 docs/css/umn/css_01_0158.html delete mode 100644 docs/css/umn/css_01_0161.html delete mode 100644 docs/css/umn/css_01_0162.html delete mode 100644 docs/css/umn/css_01_0164.html delete mode 100644 docs/css/umn/css_01_0165.html delete mode 100644 docs/css/umn/css_01_0166.html delete mode 100644 docs/css/umn/css_01_0167.html delete mode 100644 docs/css/umn/css_01_0168.html delete mode 100644 docs/css/umn/css_01_0169.html delete mode 100644 docs/css/umn/css_01_0170.html delete mode 100644 docs/css/umn/css_01_0172.html delete mode 100644 docs/css/umn/css_01_0173.html delete mode 100644 docs/css/umn/css_01_0174.html delete mode 100644 docs/css/umn/css_01_0175.html delete mode 100644 docs/css/umn/css_01_0176.html delete mode 100644 docs/css/umn/css_01_0177.html delete mode 100644 docs/css/umn/css_01_0178.html delete mode 100644 docs/css/umn/css_01_0179.html delete mode 100644 docs/css/umn/css_01_0181.html delete mode 100644 docs/css/umn/css_01_0182.html delete mode 100644 docs/css/umn/css_01_0184.html delete mode 100644 docs/css/umn/css_01_0185.html delete mode 100644 docs/css/umn/css_01_0187.html delete mode 100644 docs/css/umn/css_01_0188.html delete mode 100644 docs/css/umn/css_01_0189.html delete mode 100644 docs/css/umn/css_01_0190.html delete mode 100644 docs/css/umn/css_01_0191.html delete mode 100644 docs/css/umn/css_01_0192.html delete mode 100644 docs/css/umn/css_01_0193.html delete mode 100644 docs/css/umn/css_01_0194.html delete mode 100644 docs/css/umn/css_01_0195.html delete mode 100644 docs/css/umn/css_01_0196.html delete mode 100644 docs/css/umn/css_01_0198.html delete mode 100644 docs/css/umn/css_01_0199.html delete mode 100644 docs/css/umn/css_01_0200.html delete mode 100644 docs/css/umn/css_01_0201.html delete mode 100644 docs/css/umn/css_01_0202.html delete mode 100644 docs/css/umn/css_01_0207.html delete mode 100644 docs/css/umn/css_01_0210.html delete mode 100644 docs/css/umn/css_01_0211.html delete mode 100644 docs/css/umn/css_01_0212.html delete mode 100644 docs/css/umn/css_01_0227.html delete mode 100644 docs/css/umn/css_01_0228.html delete mode 100644 docs/css/umn/css_01_0229.html delete mode 100644 docs/css/umn/css_01_0230.html delete mode 100644 docs/css/umn/css_01_0231.html delete mode 100644 docs/css/umn/css_01_0232.html delete mode 100644 docs/css/umn/css_01_0233_0.html delete mode 100644 docs/css/umn/css_01_0234.html delete mode 100644 docs/css/umn/css_01_0246.html delete mode 100644 docs/css/umn/css_01_0266.html delete mode 100644 docs/css/umn/css_01_0267.html delete mode 100644 docs/css/umn/css_01_0268.html delete mode 100644 docs/css/umn/css_01_0269.html delete mode 100644 docs/css/umn/css_01_0271.html delete mode 100644 docs/css/umn/css_02_0001.html delete mode 100644 docs/css/umn/css_02_0006.html delete mode 100644 docs/css/umn/css_02_0007.html delete mode 100644 docs/css/umn/css_02_0008.html delete mode 100644 docs/css/umn/css_02_0009.html delete mode 100644 docs/css/umn/css_02_0010.html delete mode 100644 docs/css/umn/css_02_0017.html delete mode 100644 docs/css/umn/css_02_0025.html delete mode 100644 docs/css/umn/css_02_0034.html delete mode 100644 docs/css/umn/css_02_0041.html delete mode 100644 docs/css/umn/css_02_0042.html delete mode 100644 docs/css/umn/css_02_0043.html delete mode 100644 docs/css/umn/css_02_0051.html delete mode 100644 docs/css/umn/css_02_0052.html delete mode 100644 docs/css/umn/css_02_0055.html delete mode 100644 docs/css/umn/css_02_0058.html delete mode 100644 docs/css/umn/css_02_0063.html delete mode 100644 docs/css/umn/css_02_0064.html delete mode 100644 docs/css/umn/css_02_0066.html delete mode 100644 docs/css/umn/css_02_0067.html delete mode 100644 docs/css/umn/css_02_0068.html delete mode 100644 docs/css/umn/css_02_0069.html delete mode 100644 docs/css/umn/css_02_0070.html delete mode 100644 docs/css/umn/css_02_0073.html delete mode 100644 docs/css/umn/css_02_0077.html delete mode 100644 docs/css/umn/css_02_0078.html delete mode 100644 docs/css/umn/css_02_0079.html delete mode 100644 docs/css/umn/css_02_0081.html delete mode 100644 docs/css/umn/css_02_0082.html delete mode 100644 docs/css/umn/css_02_0083.html delete mode 100644 docs/css/umn/css_02_0088.html delete mode 100644 docs/css/umn/css_02_0089.html delete mode 100644 docs/css/umn/css_02_0093.html delete mode 100644 docs/css/umn/css_02_0094.html delete mode 100644 docs/css/umn/css_02_0096.html delete mode 100644 docs/css/umn/css_02_0097.html delete mode 100644 docs/css/umn/css_02_0098.html delete mode 100644 docs/css/umn/css_02_0099.html delete mode 100644 docs/css/umn/css_02_0101.html delete mode 100644 docs/css/umn/css_02_0102.html delete mode 100644 docs/css/umn/css_02_0106.html delete mode 100644 docs/css/umn/css_02_0118.html delete mode 100644 docs/css/umn/css_02_0119.html delete mode 100644 docs/css/umn/css_02_0120.html delete mode 100644 docs/css/umn/css_02_0124.html delete mode 100644 docs/css/umn/css_02_0125.html delete mode 100644 docs/css/umn/css_02_0126.html delete mode 100644 docs/css/umn/css_02_0127.html delete mode 100644 docs/css/umn/css_02_0128.html delete mode 100644 docs/css/umn/css_02_0130.html delete mode 100644 docs/css/umn/css_02_0131.html delete mode 100644 docs/css/umn/css_02_0132.html delete mode 100644 docs/css/umn/css_02_0201.html delete mode 100644 docs/css/umn/css_04_0001.html delete mode 100644 docs/css/umn/css_04_0002.html delete mode 100644 docs/css/umn/css_04_0004.html delete mode 100644 docs/css/umn/css_04_0005.html delete mode 100644 docs/css/umn/css_04_0007.html delete mode 100644 docs/css/umn/css_04_0010.html delete mode 100644 docs/css/umn/css_04_0012.html delete mode 100644 docs/css/umn/css_04_0014.html delete mode 100644 docs/css/umn/css_04_0019.html rename docs/css/umn/{en-us_formulaimage_0000001667002558.png => en-us_formulaimage_0000001575321958.png} (100%) rename docs/css/umn/{en-us_formulaimage_0000001714802349.png => en-us_formulaimage_0000001575640870.png} (100%) rename docs/css/umn/{en-us_formulaimage_0000001666842858.png => en-us_formulaimage_0000001625680497.png} (100%) rename docs/css/umn/{en-us_formulaimage_0000001714802345.png => en-us_formulaimage_0000001626000845.png} (100%) rename docs/css/umn/{en-us_image_0000001667002358.png => en-us_image_0000001223434560.png} (100%) rename docs/css/umn/{en-us_image_0000001666842622.png => en-us_image_0000001223594508.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001519064934.png create mode 100644 docs/css/umn/en-us_image_0000001519225242.png create mode 100644 docs/css/umn/en-us_image_0000001519541498.png create mode 100644 docs/css/umn/en-us_image_0000001569480321.png create mode 100644 docs/css/umn/en-us_image_0000001569656909.png rename docs/css/umn/{en-us_image_0000001667002486.png => en-us_image_0000001575311218.png} (100%) rename docs/css/umn/{en-us_image_0000001714802265.png => en-us_image_0000001575312654.png} (100%) rename docs/css/umn/{en-us_image_0000001666842594.png => en-us_image_0000001575313618.png} (100%) rename docs/css/umn/{en-us_image_0000001666842674.png => en-us_image_0000001575316322.png} (100%) rename docs/css/umn/{en-us_image_0000001667002462.png => en-us_image_0000001575319174.png} (100%) rename docs/css/umn/{en-us_image_0000001667002546.png => en-us_image_0000001575470374.png} (100%) rename docs/css/umn/{en-us_image_0000001667002502.png => en-us_image_0000001575471322.png} (100%) rename docs/css/umn/{en-us_image_0000001666842766.png => en-us_image_0000001575471938.png} (100%) rename docs/css/umn/{en-us_image_0000001667002610.png => en-us_image_0000001575475526.png} (100%) rename docs/css/umn/{en-us_image_0000001666842746.png => en-us_image_0000001575478486.png} (100%) rename docs/css/umn/{en-us_image_0000001714922197.png => en-us_image_0000001575482950.png} (100%) rename docs/css/umn/{en-us_image_0000001714922093.png => en-us_image_0000001575631554.png} (100%) rename docs/css/umn/{en-us_image_0000001714921949.png => en-us_image_0000001575631754.png} (100%) rename docs/css/umn/{en-us_image_0000001666842898.png => en-us_image_0000001575631898.png} (100%) rename docs/css/umn/{en-us_image_0000001666842670.png => en-us_image_0000001575631966.png} (100%) rename docs/css/umn/{en-us_image_0000001714921933.png => en-us_image_0000001575632538.png} (100%) rename docs/css/umn/{en-us_image_0000001667002402.png => en-us_image_0000001575635254.png} (100%) rename docs/css/umn/{en-us_image_0000001666842726.png => en-us_image_0000001575635862.png} (100%) rename docs/css/umn/{en-us_image_0000001666842902.jpg => en-us_image_0000001575637658.jpg} (100%) rename docs/css/umn/{en-us_image_0000001714802245.png => en-us_image_0000001575638082.png} (100%) rename docs/css/umn/{en-us_image_0000001666842866.png => en-us_image_0000001575642526.png} (100%) rename docs/css/umn/{en-us_image_0000001714802117.png => en-us_image_0000001575791646.png} (100%) rename docs/css/umn/{en-us_image_0000001667002574.png => en-us_image_0000001575802422.png} (100%) rename docs/css/umn/{en-us_image_0000001667002434.png => en-us_image_0000001575802426.png} (100%) rename docs/css/umn/{en-us_image_0000001714922229.png => en-us_image_0000001578525026.png} (100%) rename docs/css/umn/{en-us_image_0000001667002374.png => en-us_image_0000001578844214.png} (100%) rename docs/css/umn/{en-us_image_0000001666842614.png => en-us_image_0000001579004138.png} (100%) rename docs/css/umn/{en-us_image_0000001714922185.png => en-us_image_0000001583151098.png} (100%) rename docs/css/umn/{en-us_image_0000001714922189.png => en-us_image_0000001583151102.png} (100%) rename docs/css/umn/{en-us_image_0000001714802137.png => en-us_image_0000001583310486.png} (100%) rename docs/css/umn/{en-us_image_0000001714802393.png => en-us_image_0000001583470414.png} (100%) rename docs/css/umn/{en-us_image_0000001714922221.png => en-us_image_0000001583470442.png} (100%) rename docs/css/umn/{en-us_image_0000001714802389.png => en-us_image_0000001606771374.png} (100%) rename docs/css/umn/{en-us_image_0000001667002382.png => en-us_image_0000001606924426.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001606925014.png create mode 100644 docs/css/umn/en-us_image_0000001606925022.png rename docs/css/umn/{en-us_image_0000001666842702.png => en-us_image_0000001607164138.png} (100%) rename docs/css/umn/{en-us_image_0000001714802405.png => en-us_image_0000001607164742.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001607405894.png create mode 100644 docs/css/umn/en-us_image_0000001607447036.png create mode 100644 docs/css/umn/en-us_image_0000001607591784.png create mode 100644 docs/css/umn/en-us_image_0000001607766004.png create mode 100644 docs/css/umn/en-us_image_0000001607890430.png create mode 100644 docs/css/umn/en-us_image_0000001607915032.png create mode 100644 docs/css/umn/en-us_image_0000001607933650.png create mode 100644 docs/css/umn/en-us_image_0000001607935630.png rename docs/css/umn/{en-us_image_0000001666842834.png => en-us_image_0000001625669589.png} (100%) rename docs/css/umn/{en-us_image_0000001714802113.png => en-us_image_0000001625671361.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001625673045.png rename docs/css/umn/{en-us_image_0000001666842890.png => en-us_image_0000001625674753.png} (100%) rename docs/css/umn/{en-us_image_0000001714922113.png => en-us_image_0000001625790509.png} (100%) rename docs/css/umn/{en-us_image_0000001714922157.png => en-us_image_0000001625791329.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001625794717.png rename docs/css/umn/{en-us_image_0000001714802241.png => en-us_image_0000001625797681.png} (100%) rename docs/css/umn/{en-us_image_0000001714802369.png => en-us_image_0000001625802121.png} (100%) rename docs/css/umn/{en-us_image_0000001666842786.png => en-us_image_0000001625870985.png} (100%) rename docs/css/umn/{en-us_image_0000001667002482.png => en-us_image_0000001625871637.png} (100%) rename docs/css/umn/{en-us_image_0000001714922161.png => en-us_image_0000001625875305.png} (100%) rename docs/css/umn/{en-us_image_0000001714802249.png => en-us_image_0000001625878165.png} (100%) rename docs/css/umn/{en-us_image_0000001714802261.png => en-us_image_0000001625991489.png} (100%) rename docs/css/umn/{en-us_image_0000001714922097.png => en-us_image_0000001625991493.png} (100%) rename docs/css/umn/{en-us_image_0000001667002614.png => en-us_image_0000001625991693.png} (100%) rename docs/css/umn/{en-us_image_0000001714802089.png => en-us_image_0000001625992469.png} (100%) rename docs/css/umn/{en-us_image_0000001666842894.png => en-us_image_0000001625995085.png} (100%) rename docs/css/umn/{en-us_image_0000001666842750.png => en-us_image_0000001625998045.png} (100%) rename docs/css/umn/{en-us_image_0000001714922225.png => en-us_image_0000001628524809.png} (100%) rename docs/css/umn/{en-us_image_0000001714922233.png => en-us_image_0000001633030485.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001633111029.png rename docs/css/umn/{en-us_image_0000001666842850.png => en-us_image_0000001633311021.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001633709689.png create mode 100644 docs/css/umn/en-us_image_0000001634029125.png create mode 100644 docs/css/umn/en-us_image_0000001634149053.png create mode 100644 docs/css/umn/en-us_image_0000001634149089.png create mode 100644 docs/css/umn/en-us_image_0000001637133729.png rename docs/css/umn/{en-us_image_0000001714921993.png => en-us_image_0000001641018664.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001655964997.png create mode 100644 docs/css/umn/en-us_image_0000001656084945.png create mode 100644 docs/css/umn/en-us_image_0000001656204689.png create mode 100644 docs/css/umn/en-us_image_0000001656284657.png create mode 100644 docs/css/umn/en-us_image_0000001656284673.png create mode 100644 docs/css/umn/en-us_image_0000001656290797.png create mode 100644 docs/css/umn/en-us_image_0000001656848929.png create mode 100644 docs/css/umn/en-us_image_0000001656851577.png rename docs/css/umn/{en-us_image_0000001714922041.png => en-us_image_0000001656902246.png} (100%) rename docs/css/umn/{en-us_image_0000001667002438.png => en-us_image_0000001656902250.png} (100%) rename docs/css/umn/{en-us_image_0000001714802217.png => en-us_image_0000001656902254.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001656931909.png rename docs/css/umn/{en-us_image_0000001667002442.png => en-us_image_0000001657061586.png} (100%) rename docs/css/umn/{en-us_image_0000001667002454.png => en-us_image_0000001657061590.png} (100%) rename docs/css/umn/{en-us_image_0000001714922065.png => en-us_image_0000001657061594.png} (100%) create mode 100644 docs/css/umn/en-us_image_0000001657091157.png create mode 100644 docs/css/umn/en-us_image_0000001657091853.png create mode 100644 docs/css/umn/en-us_image_0000001657221737.png create mode 100644 docs/css/umn/en-us_image_0000001657244165.png create mode 100644 docs/css/umn/en-us_image_0000001657249665.png delete mode 100644 docs/css/umn/en-us_image_0000001666842626.png delete mode 100644 docs/css/umn/en-us_image_0000001666842658.png delete mode 100644 docs/css/umn/en-us_image_0000001666842734.png delete mode 100644 docs/css/umn/en-us_image_0000001667002386.png delete mode 100644 docs/css/umn/en-us_image_0000001667002450.png create mode 100644 docs/css/umn/en-us_image_0000001696678850.png create mode 100644 docs/css/umn/en-us_image_0000001696838310.png create mode 100644 docs/css/umn/en-us_image_0000001696838318.png rename docs/css/umn/{en-us_image_0000001714802205.png => en-us_image_0000001705061713.png} (100%) rename docs/css/umn/{en-us_image_0000001666842730.png => en-us_image_0000001705061717.png} (100%) rename docs/css/umn/{en-us_image_0000001714802229.png => en-us_image_0000001705061721.png} (100%) rename docs/css/umn/{en-us_image_0000001714922057.png => en-us_image_0000001705220953.png} (100%) rename docs/css/umn/{en-us_image_0000001666842722.png => en-us_image_0000001705220957.png} (100%) rename docs/css/umn/{en-us_image_0000001666842710.png => en-us_image_0000001705227645.png} (100%) rename docs/css/umn/{en-us_image_0000001714802213.png => en-us_image_0000001705958261.png} (100%) delete mode 100644 docs/css/umn/en-us_image_0000001714802085.png delete mode 100644 docs/css/umn/en-us_image_0000001714802105.png delete mode 100644 docs/css/umn/en-us_image_0000001714802109.png delete mode 100644 docs/css/umn/en-us_image_0000001714802149.png delete mode 100644 docs/css/umn/en-us_image_0000001714802201.png delete mode 100644 docs/css/umn/en-us_image_0000001714802297.png delete mode 100644 docs/css/umn/en-us_image_0000001714802397.png delete mode 100644 docs/css/umn/en-us_image_0000001714921929.png delete mode 100644 docs/css/umn/en-us_image_0000001714921945.png delete mode 100644 docs/css/umn/en-us_image_0000001714922005.png create mode 100644 docs/css/umn/en-us_image_0000001744598325.png create mode 100644 docs/css/umn/en-us_image_0000001744678489.jpg create mode 100644 docs/css/umn/en-us_image_0000001758618249.png create mode 100644 docs/css/umn/en-us_image_0000001768547780.png create mode 100644 docs/css/umn/en-us_image_0000001771562782.png create mode 100644 docs/css/umn/en-us_image_0000001815267817.png create mode 100644 docs/css/umn/en-us_image_0000001815267821.png create mode 100644 docs/css/umn/en-us_image_0000001818277097.png create mode 100644 docs/css/umn/en-us_image_0000001823414260.png create mode 100644 docs/css/umn/en-us_image_0000001823619658.png create mode 100644 docs/css/umn/en-us_image_0000001823780106.png create mode 100644 docs/css/umn/en-us_image_0000001824400680.png create mode 100644 docs/css/umn/en-us_image_0000001824562672.png create mode 100644 docs/css/umn/en-us_image_0000001870298901.png create mode 100644 docs/css/umn/en-us_image_0000001870333105.png create mode 100644 docs/css/umn/en-us_image_0000001870378393.png create mode 100644 docs/css/umn/en-us_image_0000001871319057.png create mode 100644 docs/css/umn/en-us_topic_0000001476817894.html create mode 100644 docs/css/umn/en-us_topic_0000001476817902.html create mode 100644 docs/css/umn/en-us_topic_0000001476817906.html create mode 100644 docs/css/umn/en-us_topic_0000001476817910.html create mode 100644 docs/css/umn/en-us_topic_0000001476817914.html create mode 100644 docs/css/umn/en-us_topic_0000001476817918.html create mode 100644 docs/css/umn/en-us_topic_0000001476977542.html create mode 100644 docs/css/umn/en-us_topic_0000001476977546.html create mode 100644 docs/css/umn/en-us_topic_0000001476977550.html create mode 100644 docs/css/umn/en-us_topic_0000001476977554.html create mode 100644 docs/css/umn/en-us_topic_0000001476977558.html create mode 100644 docs/css/umn/en-us_topic_0000001476977562.html create mode 100644 docs/css/umn/en-us_topic_0000001477137526.html create mode 100644 docs/css/umn/en-us_topic_0000001477137530.html create mode 100644 docs/css/umn/en-us_topic_0000001477137534.html create mode 100644 docs/css/umn/en-us_topic_0000001477137538.html create mode 100644 docs/css/umn/en-us_topic_0000001477137542.html create mode 100644 docs/css/umn/en-us_topic_0000001477137546.html create mode 100644 docs/css/umn/en-us_topic_0000001477297334.html create mode 100644 docs/css/umn/en-us_topic_0000001477297338.html create mode 100644 docs/css/umn/en-us_topic_0000001477297346.html create mode 100644 docs/css/umn/en-us_topic_0000001477297350.html create mode 100644 docs/css/umn/en-us_topic_0000001477297354.html create mode 100644 docs/css/umn/en-us_topic_0000001477297358.html create mode 100644 docs/css/umn/en-us_topic_0000001477297362.html create mode 100644 docs/css/umn/en-us_topic_0000001477419712.html create mode 100644 docs/css/umn/en-us_topic_0000001477419716.html create mode 100644 docs/css/umn/en-us_topic_0000001477419720.html create mode 100644 docs/css/umn/en-us_topic_0000001477419724.html create mode 100644 docs/css/umn/en-us_topic_0000001477419728.html create mode 100644 docs/css/umn/en-us_topic_0000001477419736.html create mode 100644 docs/css/umn/en-us_topic_0000001477419740.html create mode 100644 docs/css/umn/en-us_topic_0000001477419744.html create mode 100644 docs/css/umn/en-us_topic_0000001477419748.html create mode 100644 docs/css/umn/en-us_topic_0000001477419752.html create mode 100644 docs/css/umn/en-us_topic_0000001477419760.html create mode 100644 docs/css/umn/en-us_topic_0000001477419764.html create mode 100644 docs/css/umn/en-us_topic_0000001477419768.html create mode 100644 docs/css/umn/en-us_topic_0000001477419772.html create mode 100644 docs/css/umn/en-us_topic_0000001477419776.html rename docs/css/umn/{css_01_0183.html => en-us_topic_0000001477419788.html} (96%) create mode 100644 docs/css/umn/en-us_topic_0000001477579336.html create mode 100644 docs/css/umn/en-us_topic_0000001477579340.html create mode 100644 docs/css/umn/en-us_topic_0000001477579352.html create mode 100644 docs/css/umn/en-us_topic_0000001477579356.html create mode 100644 docs/css/umn/en-us_topic_0000001477579364.html create mode 100644 docs/css/umn/en-us_topic_0000001477579368.html create mode 100644 docs/css/umn/en-us_topic_0000001477579372.html create mode 100644 docs/css/umn/en-us_topic_0000001477579376.html create mode 100644 docs/css/umn/en-us_topic_0000001477579380.html create mode 100644 docs/css/umn/en-us_topic_0000001477579388.html create mode 100644 docs/css/umn/en-us_topic_0000001477579396.html create mode 100644 docs/css/umn/en-us_topic_0000001477579404.html create mode 100644 docs/css/umn/en-us_topic_0000001477579408.html create mode 100644 docs/css/umn/en-us_topic_0000001477579412.html create mode 100644 docs/css/umn/en-us_topic_0000001477739336.html create mode 100644 docs/css/umn/en-us_topic_0000001477739344.html create mode 100644 docs/css/umn/en-us_topic_0000001477739348.html create mode 100644 docs/css/umn/en-us_topic_0000001477739356.html create mode 100644 docs/css/umn/en-us_topic_0000001477739360.html create mode 100644 docs/css/umn/en-us_topic_0000001477739364.html create mode 100644 docs/css/umn/en-us_topic_0000001477739368.html create mode 100644 docs/css/umn/en-us_topic_0000001477739376.html create mode 100644 docs/css/umn/en-us_topic_0000001477739380.html create mode 100644 docs/css/umn/en-us_topic_0000001477739384.html create mode 100644 docs/css/umn/en-us_topic_0000001477739388.html create mode 100644 docs/css/umn/en-us_topic_0000001477739392.html create mode 100644 docs/css/umn/en-us_topic_0000001477739396.html create mode 100644 docs/css/umn/en-us_topic_0000001477739400.html create mode 100644 docs/css/umn/en-us_topic_0000001477739404.html create mode 100644 docs/css/umn/en-us_topic_0000001477739408.html create mode 100644 docs/css/umn/en-us_topic_0000001477899148.html create mode 100644 docs/css/umn/en-us_topic_0000001477899152.html create mode 100644 docs/css/umn/en-us_topic_0000001477899160.html create mode 100644 docs/css/umn/en-us_topic_0000001477899164.html create mode 100644 docs/css/umn/en-us_topic_0000001477899172.html create mode 100644 docs/css/umn/en-us_topic_0000001477899176.html create mode 100644 docs/css/umn/en-us_topic_0000001477899180.html create mode 100644 docs/css/umn/en-us_topic_0000001477899184.html create mode 100644 docs/css/umn/en-us_topic_0000001477899188.html create mode 100644 docs/css/umn/en-us_topic_0000001477899192.html create mode 100644 docs/css/umn/en-us_topic_0000001477899200.html create mode 100644 docs/css/umn/en-us_topic_0000001477899208.html create mode 100644 docs/css/umn/en-us_topic_0000001477899212.html create mode 100644 docs/css/umn/en-us_topic_0000001477899216.html create mode 100644 docs/css/umn/en-us_topic_0000001477899220.html create mode 100644 docs/css/umn/en-us_topic_0000001477899224.html create mode 100644 docs/css/umn/en-us_topic_0000001504911882.html create mode 100644 docs/css/umn/en-us_topic_0000001527697777.html create mode 100644 docs/css/umn/en-us_topic_0000001527697781.html create mode 100644 docs/css/umn/en-us_topic_0000001527697785.html create mode 100644 docs/css/umn/en-us_topic_0000001527697789.html create mode 100644 docs/css/umn/en-us_topic_0000001527697793.html create mode 100644 docs/css/umn/en-us_topic_0000001527697797.html create mode 100644 docs/css/umn/en-us_topic_0000001527777425.html create mode 100644 docs/css/umn/en-us_topic_0000001527777429.html create mode 100644 docs/css/umn/en-us_topic_0000001527777433.html create mode 100644 docs/css/umn/en-us_topic_0000001527777437.html create mode 100644 docs/css/umn/en-us_topic_0000001527777441.html create mode 100644 docs/css/umn/en-us_topic_0000001527777445.html create mode 100644 docs/css/umn/en-us_topic_0000001527777449.html create mode 100644 docs/css/umn/en-us_topic_0000001527937329.html create mode 100644 docs/css/umn/en-us_topic_0000001527937333.html create mode 100644 docs/css/umn/en-us_topic_0000001527937337.html create mode 100644 docs/css/umn/en-us_topic_0000001527937341.html create mode 100644 docs/css/umn/en-us_topic_0000001527937345.html create mode 100644 docs/css/umn/en-us_topic_0000001528097289.html create mode 100644 docs/css/umn/en-us_topic_0000001528097293.html create mode 100644 docs/css/umn/en-us_topic_0000001528097297.html create mode 100644 docs/css/umn/en-us_topic_0000001528097305.html create mode 100644 docs/css/umn/en-us_topic_0000001528097309.html create mode 100644 docs/css/umn/en-us_topic_0000001528097313.html create mode 100644 docs/css/umn/en-us_topic_0000001528097317.html create mode 100644 docs/css/umn/en-us_topic_0000001528299557.html create mode 100644 docs/css/umn/en-us_topic_0000001528299569.html create mode 100644 docs/css/umn/en-us_topic_0000001528299573.html create mode 100644 docs/css/umn/en-us_topic_0000001528299577.html create mode 100644 docs/css/umn/en-us_topic_0000001528299581.html create mode 100644 docs/css/umn/en-us_topic_0000001528299585.html create mode 100644 docs/css/umn/en-us_topic_0000001528299597.html create mode 100644 docs/css/umn/en-us_topic_0000001528299601.html create mode 100644 docs/css/umn/en-us_topic_0000001528299609.html create mode 100644 docs/css/umn/en-us_topic_0000001528299613.html create mode 100644 docs/css/umn/en-us_topic_0000001528299617.html create mode 100644 docs/css/umn/en-us_topic_0000001528299621.html create mode 100644 docs/css/umn/en-us_topic_0000001528299625.html create mode 100644 docs/css/umn/en-us_topic_0000001528299629.html create mode 100644 docs/css/umn/en-us_topic_0000001528379249.html create mode 100644 docs/css/umn/en-us_topic_0000001528379253.html create mode 100644 docs/css/umn/en-us_topic_0000001528379257.html create mode 100644 docs/css/umn/en-us_topic_0000001528379265.html create mode 100644 docs/css/umn/en-us_topic_0000001528379273.html create mode 100644 docs/css/umn/en-us_topic_0000001528379277.html create mode 100644 docs/css/umn/en-us_topic_0000001528379285.html create mode 100644 docs/css/umn/en-us_topic_0000001528379297.html create mode 100644 docs/css/umn/en-us_topic_0000001528379301.html create mode 100644 docs/css/umn/en-us_topic_0000001528379305.html create mode 100644 docs/css/umn/en-us_topic_0000001528379309.html create mode 100644 docs/css/umn/en-us_topic_0000001528379313.html create mode 100644 docs/css/umn/en-us_topic_0000001528379317.html create mode 100644 docs/css/umn/en-us_topic_0000001528379321.html rename docs/css/umn/{css_01_0129.html => en-us_topic_0000001528499121.html} (93%) create mode 100644 docs/css/umn/en-us_topic_0000001528499125.html rename docs/css/umn/{css_01_0197.html => en-us_topic_0000001528499129.html} (90%) create mode 100644 docs/css/umn/en-us_topic_0000001528499133.html create mode 100644 docs/css/umn/en-us_topic_0000001528499137.html create mode 100644 docs/css/umn/en-us_topic_0000001528499141.html create mode 100644 docs/css/umn/en-us_topic_0000001528499145.html create mode 100644 docs/css/umn/en-us_topic_0000001528499153.html create mode 100644 docs/css/umn/en-us_topic_0000001528499157.html create mode 100644 docs/css/umn/en-us_topic_0000001528499165.html create mode 100644 docs/css/umn/en-us_topic_0000001528499169.html create mode 100644 docs/css/umn/en-us_topic_0000001528499181.html create mode 100644 docs/css/umn/en-us_topic_0000001528499197.html create mode 100644 docs/css/umn/en-us_topic_0000001528499201.html create mode 100644 docs/css/umn/en-us_topic_0000001528659081.html create mode 100644 docs/css/umn/en-us_topic_0000001528659085.html create mode 100644 docs/css/umn/en-us_topic_0000001528659089.html create mode 100644 docs/css/umn/en-us_topic_0000001528659093.html create mode 100644 docs/css/umn/en-us_topic_0000001528659101.html create mode 100644 docs/css/umn/en-us_topic_0000001528659105.html create mode 100644 docs/css/umn/en-us_topic_0000001528659117.html create mode 100644 docs/css/umn/en-us_topic_0000001528659121.html create mode 100644 docs/css/umn/en-us_topic_0000001528659125.html create mode 100644 docs/css/umn/en-us_topic_0000001528659133.html create mode 100644 docs/css/umn/en-us_topic_0000001528659137.html create mode 100644 docs/css/umn/en-us_topic_0000001528659141.html create mode 100644 docs/css/umn/en-us_topic_0000001528659149.html create mode 100644 docs/css/umn/en-us_topic_0000001528659153.html create mode 100644 docs/css/umn/en-us_topic_0000001528659157.html create mode 100644 docs/css/umn/en-us_topic_0000001533829376.html create mode 100644 docs/css/umn/en-us_topic_0000001533988876.html create mode 100644 docs/css/umn/en-us_topic_0000001534148568.html create mode 100644 docs/css/umn/en-us_topic_0000001534308508.html create mode 100644 docs/css/umn/en-us_topic_0000001555591537.html create mode 100644 docs/css/umn/en-us_topic_0000001562137917.html create mode 100644 docs/css/umn/en-us_topic_0000001564706853.html create mode 100644 docs/css/umn/en-us_topic_0000001564906577.html create mode 100644 docs/css/umn/en-us_topic_0000001583146906.html create mode 100644 docs/css/umn/en-us_topic_0000001583300810.html create mode 100644 docs/css/umn/en-us_topic_0000001583460750.html create mode 100644 docs/css/umn/en-us_topic_0000001583669884.html create mode 100644 docs/css/umn/en-us_topic_0000001583669892.html create mode 100644 docs/css/umn/en-us_topic_0000001583989096.html create mode 100644 docs/css/umn/en-us_topic_0000001584149004.html create mode 100644 docs/css/umn/en-us_topic_0000001584708761.html create mode 100644 docs/css/umn/en-us_topic_0000001584828717.html create mode 100644 docs/css/umn/en-us_topic_0000001584988497.html create mode 100644 docs/css/umn/en-us_topic_0000001585148465.html create mode 100644 docs/css/umn/en-us_topic_0000001587956758.html create mode 100644 docs/css/umn/en-us_topic_0000001590323656.html create mode 100644 docs/css/umn/en-us_topic_0000001590323664.html create mode 100644 docs/css/umn/en-us_topic_0000001590332948.html create mode 100644 docs/css/umn/en-us_topic_0000001590603388.html create mode 100644 docs/css/umn/en-us_topic_0000001590612676.html create mode 100644 docs/css/umn/en-us_topic_0000001590963076.html create mode 100644 docs/css/umn/en-us_topic_0000001590963080.html create mode 100644 docs/css/umn/en-us_topic_0000001590972372.html create mode 100644 docs/css/umn/en-us_topic_0000001591285452.html create mode 100644 docs/css/umn/en-us_topic_0000001591285456.html create mode 100644 docs/css/umn/en-us_topic_0000001591294758.html create mode 100644 docs/css/umn/en-us_topic_0000001591298678.html create mode 100644 docs/css/umn/en-us_topic_0000001591298682.html create mode 100644 docs/css/umn/en-us_topic_0000001591456866.html create mode 100644 docs/css/umn/en-us_topic_0000001591616594.html create mode 100644 docs/css/umn/en-us_topic_0000001591776270.html create mode 100644 docs/css/umn/en-us_topic_0000001591776274.html create mode 100644 docs/css/umn/en-us_topic_0000001599872681.html create mode 100644 docs/css/umn/en-us_topic_0000001633220693.html create mode 100644 docs/css/umn/en-us_topic_0000001633221741.html create mode 100644 docs/css/umn/en-us_topic_0000001633303977.html create mode 100644 docs/css/umn/en-us_topic_0000001633949601.html create mode 100644 docs/css/umn/en-us_topic_0000001637436445.html create mode 100644 docs/css/umn/en-us_topic_0000001640645481.html create mode 100644 docs/css/umn/en-us_topic_0000001640645485.html create mode 100644 docs/css/umn/en-us_topic_0000001640654793.html create mode 100644 docs/css/umn/en-us_topic_0000001640658697.html create mode 100644 docs/css/umn/en-us_topic_0000001640658701.html create mode 100644 docs/css/umn/en-us_topic_0000001640764229.html create mode 100644 docs/css/umn/en-us_topic_0000001640773493.html create mode 100644 docs/css/umn/en-us_topic_0000001640773505.html create mode 100644 docs/css/umn/en-us_topic_0000001640777441.html create mode 100644 docs/css/umn/en-us_topic_0000001640879293.html create mode 100644 docs/css/umn/en-us_topic_0000001640883633.html create mode 100644 docs/css/umn/en-us_topic_0000001640892937.html create mode 100644 docs/css/umn/en-us_topic_0000001640998693.html create mode 100644 docs/css/umn/en-us_topic_0000001641003025.html create mode 100644 docs/css/umn/en-us_topic_0000001641003029.html create mode 100644 docs/css/umn/en-us_topic_0000001641012329.html create mode 100644 docs/css/umn/en-us_topic_0000001641016221.html create mode 100644 docs/css/umn/en-us_topic_0000001647464345.html create mode 100644 docs/css/umn/en-us_topic_0000001667545170.html create mode 100644 docs/css/umn/en-us_topic_0000001667545182.html create mode 100644 docs/css/umn/en-us_topic_0000001667704882.html create mode 100644 docs/css/umn/en-us_topic_0000001667704890.html create mode 100644 docs/css/umn/en-us_topic_0000001715624649.html create mode 100644 docs/css/umn/en-us_topic_0000001715624661.html create mode 100644 docs/css/umn/en-us_topic_0000001715624665.html create mode 100644 docs/css/umn/en-us_topic_0000001715624677.html create mode 100644 docs/css/umn/en-us_topic_0000001715704493.html create mode 100644 docs/css/umn/en-us_topic_0000001720964408.html create mode 100644 docs/css/umn/en-us_topic_0000001814230837.html create mode 100644 docs/css/umn/en-us_topic_0000001815107861.html create mode 100644 docs/css/umn/en-us_topic_0000001832788405.html create mode 100644 docs/css/umn/en-us_topic_0000001866261281.html create mode 100644 docs/css/umn/en-us_topic_0000001876048066.html create mode 100644 docs/css/umn/en-us_topic_0000001921967557.html diff --git a/docs/css/umn/ALL_META.TXT.json b/docs/css/umn/ALL_META.TXT.json index e6db8bd0..8cb64b92 100644 --- a/docs/css/umn/ALL_META.TXT.json +++ b/docs/css/umn/ALL_META.TXT.json @@ -3,34 +3,34 @@ "dockw":"101010001,User Guide" }, { - "uri":"css_01_0001.html", - "node_id":"css_01_0001.xml", + "uri":"en-us_topic_0000001921967557.html", + "node_id":"en-us_topic_0000001921967557.xml", "product_code":"css", "code":"1", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", - "kw":"Overview", + "kw":"Product Overview", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], - "title":"Overview", + "title":"Product Overview", "githuburl":"" }, { - "uri":"css_04_0001.html", - "node_id":"css_04_0001.xml", + "uri":"en-us_topic_0000001667545170.html", + "node_id":"en-us_topic_0000001667545170.xml", "product_code":"css", "code":"2", "des":"Cloud Search Service (CSS) is a fully hosted distributed search service based on Elasticsearch. You can use it for structured and unstructured data search, and use AI vec", "doc_type":"usermanual", - "kw":"What Is Cloud Search Service?,Overview,User Guide", + "kw":"What Is Cloud Search Service?,Product Overview,User Guide", "search_title":"", "metedata":[ { @@ -44,13 +44,13 @@ "githuburl":"" }, { - "uri":"css_04_0010.html", - "node_id":"css_04_0010.xml", + "uri":"en-us_topic_0000001667704890.html", + "node_id":"en-us_topic_0000001667704890.xml", "product_code":"css", "code":"3", "des":"CSS has the following features and advantages.You can get insights from terabyte-scale data in milliseconds. In addition, you can use the visualized platform for data dis", "doc_type":"usermanual", - "kw":"Advantages,Overview,User Guide", + "kw":"Advantages,Product Overview,User Guide", "search_title":"", "metedata":[ { @@ -64,13 +64,13 @@ "githuburl":"" }, { - "uri":"css_04_0007.html", - "node_id":"css_04_0007.xml", + "uri":"en-us_topic_0000001667704882.html", + "node_id":"en-us_topic_0000001667704882.xml", "product_code":"css", "code":"4", "des":"CSS supports Kibana and Cerebro.Kibana is an open-source data analytics and visualization platform that works with Elasticsearch. You can use Kibana to search for and vie", "doc_type":"usermanual", - "kw":"Product Components,Overview,User Guide", + "kw":"Product Components,Product Overview,User Guide", "search_title":"", "metedata":[ { @@ -84,47 +84,53 @@ "githuburl":"" }, { - "uri":"css_04_0002.html", - "node_id":"css_04_0002.xml", - "product_code":"", + "uri":"en-us_topic_0000001715704493.html", + "node_id":"en-us_topic_0000001715704493.xml", + "product_code":"css", "code":"5", "des":"CSS can be used to build search boxes for websites and apps to improve user experience. You can also build a log analysis platform with it, facilitating data-driven O&M a", - "doc_type":"", - "kw":"Scenarios,Overview,User Guide", + "doc_type":"usermanual", + "kw":"Scenarios,Product Overview,User Guide", "search_title":"", "metedata":[ { - + "prodname":"css", + "documenttype":"usermanual", + "IsBot":"Yes", + "IsMulti":"Yes" } ], "title":"Scenarios", "githuburl":"" }, { - "uri":"css_04_0014.html", - "node_id":"css_04_0014.xml", - "product_code":"", + "uri":"en-us_topic_0000001715624665.html", + "node_id":"en-us_topic_0000001715624665.xml", + "product_code":"css", "code":"6", "des":"If you need to assign different permissions to employees in your organization to access your CSS resources, IAM is a good choice for fine-grained permissions management. ", - "doc_type":"", - "kw":"Permissions Management,Overview,User Guide", + "doc_type":"usermanual", + "kw":"Permissions Management,Product Overview,User Guide", "search_title":"", "metedata":[ { - + "prodname":"css", + "documenttype":"usermanual", + "IsBot":"Yes", + "IsMulti":"Yes" } ], "title":"Permissions Management", "githuburl":"" }, { - "uri":"css_04_0005.html", - "node_id":"css_04_0005.xml", + "uri":"en-us_topic_0000001715624677.html", + "node_id":"en-us_topic_0000001715624677.xml", "product_code":"css", "code":"7", "des":"The following table describes restrictions on clusters and nodes in CSS.You are advised to use the following browsers to access the CSS management console:Google Chrome 3", "doc_type":"usermanual", - "kw":"Constraints,Overview,User Guide", + "kw":"Constraints,Product Overview,User Guide", "search_title":"", "metedata":[ { @@ -138,13 +144,13 @@ "githuburl":"" }, { - "uri":"css_04_0019.html", - "node_id":"css_04_0019.xml", + "uri":"en-us_topic_0000001667545182.html", + "node_id":"en-us_topic_0000001667545182.xml", "product_code":"css", "code":"8", "des":"CSS uses the following resources:InstanceCPUMemory (GB)Disk quantityDisk size (GB)", "doc_type":"usermanual", - "kw":"Quotas,Overview,User Guide", + "kw":"Quotas,Product Overview,User Guide", "search_title":"", "metedata":[ { @@ -158,13 +164,13 @@ "githuburl":"" }, { - "uri":"css_04_0004.html", - "node_id":"css_04_0004.xml", + "uri":"en-us_topic_0000001715624661.html", + "node_id":"en-us_topic_0000001715624661.xml", "product_code":"css", "code":"9", "des":"Figure 1 shows the relationships between CSS and other services.", "doc_type":"usermanual", - "kw":"Related Services,Overview,User Guide", + "kw":"Related Services,Product Overview,User Guide", "search_title":"", "metedata":[ { @@ -178,13 +184,13 @@ "githuburl":"" }, { - "uri":"css_04_0012.html", - "node_id":"css_04_0012.xml", + "uri":"en-us_topic_0000001715624649.html", + "node_id":"en-us_topic_0000001715624649.xml", "product_code":"css", "code":"10", "des":"CSS provides functions on a per cluster basis. A cluster represents an independent search service that consists of multiple nodes.An index stores Elasticsearch data. It i", "doc_type":"usermanual", - "kw":"Basic Concepts,Overview,User Guide", + "kw":"Basic Concepts,Product Overview,User Guide", "search_title":"", "metedata":[ { @@ -198,8 +204,8 @@ "githuburl":"" }, { - "uri":"css_01_0006.html", - "node_id":"css_01_0006.xml", + "uri":"en-us_topic_0000001477739396.html", + "node_id":"en-us_topic_0000001477739396.xml", "product_code":"css", "code":"11", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", @@ -209,18 +215,18 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Getting Started", "githuburl":"" }, { - "uri":"css_01_0007.html", - "node_id":"css_01_0007.xml", + "uri":"en-us_topic_0000001528379317.html", + "node_id":"en-us_topic_0000001528379317.xml", "product_code":"css", "code":"12", "des":"This section describes how to use Elasticsearch for product search. You can use the Elasticsearch search engine of CSS to search for data based on the scenario example. T", @@ -230,18 +236,18 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Getting Started with Elasticsearch", "githuburl":"" }, { - "uri":"css_01_0070.html", - "node_id":"css_01_0070.xml", + "uri":"en-us_topic_0000001477419768.html", + "node_id":"en-us_topic_0000001477419768.xml", "product_code":"css", "code":"13", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", @@ -251,18 +257,18 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Permissions Management", "githuburl":"" }, { - "uri":"css_01_0072.html", - "node_id":"css_01_0072.xml", + "uri":"en-us_topic_0000001477419752.html", + "node_id":"en-us_topic_0000001477419752.xml", "product_code":"css", "code":"14", "des":"This section describes how to use a group to grant permissions to a user. Figure 1 shows the process for granting permissions.CSS has two types of user permissions: CSS a", @@ -272,18 +278,18 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Creating a User and Granting Permissions", "githuburl":"" }, { - "uri":"css_01_0086.html", - "node_id":"css_01_0086.xml", + "uri":"en-us_topic_0000001477899148.html", + "node_id":"en-us_topic_0000001477899148.xml", "product_code":"css", "code":"15", "des":"Custom policies can be created to supplement the system-defined policies of CSS. For the actions supported for custom policies, see section \"Permissions Policies and Supp", @@ -293,83 +299,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"CSS Custom Policies", "githuburl":"" }, { - "uri":"css_01_0053.html", - "node_id":"css_01_0053.xml", + "uri":"en-us_topic_0000001504911882.html", + "node_id":"en-us_topic_0000001504911882.xml", "product_code":"css", "code":"16", - "des":"On the Dashboard page of the CSS management console, you can view information about the status and storage capacity of existing clusters.", - "doc_type":"usermanual", - "kw":"Viewing the Cluster Runtime Status and Storage Capacity Status,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Viewing the Cluster Runtime Status and Storage Capacity Status", - "githuburl":"" - }, - { - "uri":"css_01_0056.html", - "node_id":"css_01_0056.xml", - "product_code":"css", - "code":"17", - "des":"The cluster list displays all CSS clusters. If there are a large number of clusters, these clusters will be displayed on multiple pages. You can view clusters of all stat", - "doc_type":"usermanual", - "kw":"Cluster List Overview,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Cluster List Overview", - "githuburl":"" - }, - { - "uri":"css_01_0188.html", - "node_id":"css_01_0188.xml", - "product_code":"css", - "code":"18", - "des":"To prevent data loss and minimize the cluster downtime in case of service interruption, CSS supports cross-AZ cluster deployment. When creating a cluster, you can select ", - "doc_type":"usermanual", - "kw":"Deploying a Cross-AZ Cluster,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Deploying a Cross-AZ Cluster", - "githuburl":"" - }, - { - "uri":"css_01_0207.html", - "node_id":"css_01_0207.xml", - "product_code":"css", - "code":"19", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Elasticsearch", @@ -377,251 +320,188 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Elasticsearch", "githuburl":"" }, { - "uri":"css_01_0009.html", - "node_id":"css_01_0009.xml", + "uri":"en-us_topic_0000001477899180.html", + "node_id":"en-us_topic_0000001477899180.xml", + "product_code":"css", + "code":"17", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Creating a Cluster", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Creating a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001477739344.html", + "node_id":"en-us_topic_0000001477739344.xml", + "product_code":"css", + "code":"18", + "des":"This section describes how to create an Elasticsearch cluster in security mode.Public IP address access and Kibana public access can be used only after security mode is e", + "doc_type":"usermanual", + "kw":"Creating a Cluster in Security Mode,Creating a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Creating a Cluster in Security Mode", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001477899172.html", + "node_id":"en-us_topic_0000001477899172.xml", + "product_code":"css", + "code":"19", + "des":"This section describes how to create an Elasticsearch cluster in non-security mode.Log in to the CSS management console.On the Dashboard page, click Create Cluster in the", + "doc_type":"usermanual", + "kw":"Creating a Cluster in Non-Security Mode,Creating a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Creating a Cluster in Non-Security Mode", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528659093.html", + "node_id":"en-us_topic_0000001528659093.xml", "product_code":"css", "code":"20", - "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "doc_type":"usermanual", - "kw":"Managing Elasticsearch Clusters", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Managing Elasticsearch Clusters", - "githuburl":"" - }, - { - "uri":"css_01_0008.html", - "node_id":"css_01_0008.xml", - "product_code":"css", - "code":"21", - "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "doc_type":"usermanual", - "kw":"Creating an Elasticsearch Cluster", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Creating an Elasticsearch Cluster", - "githuburl":"" - }, - { - "uri":"css_01_0189.html", - "node_id":"css_01_0189.xml", - "product_code":"css", - "code":"22", "des":"When creating an Elasticsearch cluster, you can enable the security mode for it. Identity authentication is required when users access a security cluster. You can also au", "doc_type":"usermanual", - "kw":"Clusters in Security Mode,Creating an Elasticsearch Cluster,User Guide", + "kw":"Clusters in Security Mode,Creating a Cluster,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Clusters in Security Mode", "githuburl":"" }, { - "uri":"css_01_0011.html", - "node_id":"css_01_0011.xml", + "uri":"en-us_topic_0000001477419724.html", + "node_id":"en-us_topic_0000001477419724.xml", + "product_code":"css", + "code":"21", + "des":"To prevent data loss and minimize the cluster downtime in case of service interruption, CSS supports cross-AZ cluster deployment. When creating a cluster, you can select ", + "doc_type":"usermanual", + "kw":"Deploying a Cross-AZ Cluster,Creating a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Deploying a Cross-AZ Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528379277.html", + "node_id":"en-us_topic_0000001528379277.xml", + "product_code":"css", + "code":"22", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Importing Data", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Importing Data", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528499137.html", + "node_id":"en-us_topic_0000001528499137.xml", "product_code":"css", "code":"23", - "des":"This section describes how to create an Elasticsearch cluster in security mode.Public IP address access and Kibana public access can be used only after security mode is e", + "des":"You can use Logstash to collect data and migrate collected data to Elasticsearch in CSS. This method helps you effectively obtain and manage data through Elasticsearch. D", "doc_type":"usermanual", - "kw":"Creating an Elasticsearch Cluster in Security Mode,Creating an Elasticsearch Cluster,User Guide", + "kw":"Using Logstash to Import Data to Elasticsearch,Importing Data,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], - "title":"Creating an Elasticsearch Cluster in Security Mode", + "title":"Using Logstash to Import Data to Elasticsearch", "githuburl":"" }, { - "uri":"css_01_0094.html", - "node_id":"css_01_0094.xml", + "uri":"en-us_topic_0000001477899200.html", + "node_id":"en-us_topic_0000001477899200.xml", "product_code":"css", "code":"24", - "des":"This section describes how to create an Elasticsearch cluster in non-security mode.Log in to the CSS management console.On the Dashboard page, click Create Cluster in the", + "des":"You can import data in various formats, such as JSON, to Elasticsearch in CSS by using Kibana or APIs.Before importing data, ensure that you can use Kibana to access the ", "doc_type":"usermanual", - "kw":"Creating an Elasticsearch Cluster in Non-Security Mode,Creating an Elasticsearch Cluster,User Guide", + "kw":"Using Kibana or APIs to Import Data to Elasticsearch,Importing Data,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], - "title":"Creating an Elasticsearch Cluster in Non-Security Mode", + "title":"Using Kibana or APIs to Import Data to Elasticsearch", "githuburl":"" }, { - "uri":"css_01_0185.html", - "node_id":"css_01_0185.xml", + "uri":"en-us_topic_0000001555591537.html", + "node_id":"en-us_topic_0000001555591537.xml", "product_code":"css", "code":"25", - "des":"On the Cluster Information page, you can view the information about a cluster, including the private network address, public IP address, version, and node.Log in to the C", - "doc_type":"usermanual", - "kw":"Viewing Basic Information About an Elasticsearch Cluster,Managing Elasticsearch Clusters,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Viewing Basic Information About an Elasticsearch Cluster", - "githuburl":"" - }, - { - "uri":"css_01_0075.html", - "node_id":"css_01_0075.xml", - "product_code":"css", - "code":"26", - "des":"Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.You can add tags to a cluster when creating the cluster or a", - "doc_type":"usermanual", - "kw":"Managing Tags,Managing Elasticsearch Clusters,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Managing Tags", - "githuburl":"" - }, - { - "uri":"css_01_0058.html", - "node_id":"css_01_0058.xml", - "product_code":"css", - "code":"27", - "des":"You can create enterprise projects based on your organizational structure. Then you can manage resources across different regions by enterprise project, add users and use", - "doc_type":"usermanual", - "kw":"Binding an Enterprise Project,Managing Elasticsearch Clusters,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Binding an Enterprise Project", - "githuburl":"" - }, - { - "uri":"css_01_0014.html", - "node_id":"css_01_0014.xml", - "product_code":"css", - "code":"28", - "des":"If a cluster becomes faulty, you can restart it to check if it can run normally.The target cluster is not frozen and has no task in progress.If a cluster is available, en", - "doc_type":"usermanual", - "kw":"Restarting a Cluster,Managing Elasticsearch Clusters,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Restarting a Cluster", - "githuburl":"" - }, - { - "uri":"css_01_0015.html", - "node_id":"css_01_0015.xml", - "product_code":"css", - "code":"29", - "des":"You can delete clusters that you no longer need.If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.The sna", - "doc_type":"usermanual", - "kw":"Deleting a Cluster,Managing Elasticsearch Clusters,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Deleting a Cluster", - "githuburl":"" - }, - { - "uri":"css_01_0060.html", - "node_id":"css_01_0060.xml", - "product_code":"css", - "code":"30", - "des":"In the Failed Tasks dialog box, you can view the failed tasks related to a cluster, such as failing to create, restart, scale out, back up, or restore a cluster. In addit", - "doc_type":"usermanual", - "kw":"Managing Failed Tasks,Managing Elasticsearch Clusters,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Managing Failed Tasks", - "githuburl":"" - }, - { - "uri":"css_01_0210.html", - "node_id":"css_01_0210.xml", - "product_code":"css", - "code":"31", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Accessing an Elasticsearch Cluster", @@ -629,20 +509,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Accessing an Elasticsearch Cluster", "githuburl":"" }, { - "uri":"css_01_0190.html", - "node_id":"css_01_0190.xml", + "uri":"en-us_topic_0000001528379305.html", + "node_id":"en-us_topic_0000001528379305.xml", "product_code":"css", - "code":"32", + "code":"26", "des":"Elasticsearch clusters have built-in Kibana and Cerebro components. You can quickly access an Elasticsearch cluster through Kibana and Cerebro.Log in to the CSS managemen", "doc_type":"usermanual", "kw":"Accessing an Elasticsearch Cluster,Accessing an Elasticsearch Cluster,User Guide", @@ -650,20 +530,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Accessing an Elasticsearch Cluster", "githuburl":"" }, { - "uri":"css_01_0076.html", - "node_id":"css_01_0076.xml", + "uri":"en-us_topic_0000001528299629.html", + "node_id":"en-us_topic_0000001528299629.xml", "product_code":"css", - "code":"33", + "code":"27", "des":"You can access a security cluster (Elasticsearch clusters in version 6.5.4 or later support the security mode) that has the HTTPS access enabled through the public IP add", "doc_type":"usermanual", "kw":"Accessing a Cluster from a Public Network,Accessing an Elasticsearch Cluster,User Guide", @@ -671,20 +551,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Accessing a Cluster from a Public Network", "githuburl":"" }, { - "uri":"css_01_0082.html", - "node_id":"css_01_0082.xml", + "uri":"en-us_topic_0000001477579412.html", + "node_id":"en-us_topic_0000001477579412.xml", "product_code":"css", - "code":"34", + "code":"28", "des":"If the VPC endpoint service is enabled, you can use a private domain name or node IP address generated by the endpoint to access the cluster. When the VPC endpoint servic", "doc_type":"usermanual", "kw":"Accessing a Cluster Using a VPC Endpoint,Accessing an Elasticsearch Cluster,User Guide", @@ -692,20 +572,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Accessing a Cluster Using a VPC Endpoint", "githuburl":"" }, { - "uri":"css_01_0184.html", - "node_id":"css_01_0184.xml", + "uri":"en-us_topic_0000001528379297.html", + "node_id":"en-us_topic_0000001528379297.xml", "product_code":"css", - "code":"35", + "code":"29", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"(Optional) Interconnecting with a Dedicated Load Balancer", @@ -713,20 +593,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"(Optional) Interconnecting with a Dedicated Load Balancer", "githuburl":"" }, { - "uri":"css_01_0181.html", - "node_id":"css_01_0181.xml", + "uri":"en-us_topic_0000001477739400.html", + "node_id":"en-us_topic_0000001477739400.xml", "product_code":"css", - "code":"36", + "code":"30", "des":"CSS integrates shared load balancers and allows you to bind public network access and enable the VPC Endpoint service. Dedicated load balancers provide more functions and", "doc_type":"usermanual", "kw":"Scenario,(Optional) Interconnecting with a Dedicated Load Balancer,User Guide", @@ -734,20 +614,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Scenario", "githuburl":"" }, { - "uri":"css_01_0182.html", - "node_id":"css_01_0182.xml", + "uri":"en-us_topic_0000001477739348.html", + "node_id":"en-us_topic_0000001477739348.xml", "product_code":"css", - "code":"37", + "code":"31", "des":"This section describes how to connect a CSS cluster to a dedicated load balancer.If the target ELB listener uses the HTTP protocol, skip this step.Prepare and upload a se", "doc_type":"usermanual", "kw":"Connecting to a Dedicated Load Balancer,(Optional) Interconnecting with a Dedicated Load Balancer,Us", @@ -755,20 +635,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Connecting to a Dedicated Load Balancer", "githuburl":"" }, { - "uri":"css_01_0183.html", - "node_id":"css_01_0183.xml", + "uri":"en-us_topic_0000001477419788.html", + "node_id":"en-us_topic_0000001477419788.xml", "product_code":"css", - "code":"38", + "code":"32", "des":"This section provides the sample code for two-way authentication during the access to a cluster from a Java client.", "doc_type":"usermanual", "kw":"Sample Code for Two-Way Authentication During the Access to a Cluster,(Optional) Interconnecting wit", @@ -776,20 +656,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Sample Code for Two-Way Authentication During the Access to a Cluster", "githuburl":"" }, { - "uri":"css_01_0269.html", - "node_id":"css_01_0269.xml", + "uri":"en-us_topic_0000001633221741.html", + "node_id":"en-us_topic_0000001633221741.xml", "product_code":"css", - "code":"39", + "code":"33", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Index Backup and Restoration", @@ -797,20 +677,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Index Backup and Restoration", "githuburl":"" }, { - "uri":"css_01_0033.html", - "node_id":"css_01_0033.xml", + "uri":"en-us_topic_0000001633303977.html", + "node_id":"en-us_topic_0000001633303977.xml", "product_code":"css", - "code":"40", + "code":"34", "des":"You can back up index data in clusters. If data loss occurs or you want to retrieve data of a specified duration, you can restore the index data. Index backup is implemen", "doc_type":"usermanual", "kw":"Backup and Restoration Overview,Index Backup and Restoration,User Guide", @@ -818,41 +698,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Backup and Restoration Overview", "githuburl":"" }, { - "uri":"css_01_0267.html", - "node_id":"css_01_0267.xml", + "uri":"en-us_topic_0000001583460750.html", + "node_id":"en-us_topic_0000001583460750.xml", "product_code":"css", - "code":"41", - "des":"Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and", + "code":"35", + "des":"Snapshots are automatically created at a specified time according to the rules you create. You can enable or disable the automatic snapshot creation function and set the ", "doc_type":"usermanual", "kw":"Managing Automatic Snapshot Creation,Index Backup and Restoration,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Managing Automatic Snapshot Creation", "githuburl":"" }, { - "uri":"css_01_0268.html", - "node_id":"css_01_0268.xml", + "uri":"en-us_topic_0000001633220693.html", + "node_id":"en-us_topic_0000001633220693.xml", "product_code":"css", - "code":"42", + "code":"36", "des":"You can manually create a snapshot at any time to back up all data or data of specified indexes.To use the function of creating or restoring snapshots, the account or IAM", "doc_type":"usermanual", "kw":"Manually Creating a Snapshot,Index Backup and Restoration,User Guide", @@ -860,20 +740,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Manually Creating a Snapshot", "githuburl":"" }, { - "uri":"css_01_0266.html", - "node_id":"css_01_0266.xml", + "uri":"en-us_topic_0000001583300810.html", + "node_id":"en-us_topic_0000001583300810.xml", "product_code":"css", - "code":"43", + "code":"37", "des":"You can use existing snapshots to restore the backup index data to a specified cluster.To use the function of creating or restoring snapshots, the account or IAM user log", "doc_type":"usermanual", "kw":"Restoring Data,Index Backup and Restoration,User Guide", @@ -881,20 +761,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Restoring Data", "githuburl":"" }, { - "uri":"css_01_0271.html", - "node_id":"css_01_0271.xml", + "uri":"en-us_topic_0000001583146906.html", + "node_id":"en-us_topic_0000001583146906.xml", "product_code":"css", - "code":"44", + "code":"38", "des":"If you no longer need a snapshot, delete it to release storage resources. If the automatic snapshot creation function is enabled, snapshots that are automatically created", "doc_type":"usermanual", "kw":"Deleting a Snapshot,Index Backup and Restoration,User Guide", @@ -902,293 +782,587 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Deleting a Snapshot", "githuburl":"" }, { - "uri":"css_01_0149.html", - "node_id":"css_01_0149.xml", + "uri":"en-us_topic_0000001477739404.html", + "node_id":"en-us_topic_0000001477739404.xml", "product_code":"css", - "code":"45", + "code":"39", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", - "kw":"Changing the Elasticsearch Cluster Form", + "kw":"Cluster Specification Modification", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], - "title":"Changing the Elasticsearch Cluster Form", + "title":"Cluster Specification Modification", "githuburl":"" }, { - "uri":"css_01_0150.html", - "node_id":"css_01_0150.xml", + "uri":"en-us_topic_0000001528379253.html", + "node_id":"en-us_topic_0000001528379253.xml", "product_code":"css", - "code":"46", + "code":"40", "des":"You can scale in or out a cluster and change cluster specifications. In this way, you can improve cluster efficiency and reduce O&M costs.Scaling Out a ClusterIf a data n", "doc_type":"usermanual", - "kw":"Overview,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Overview,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Overview", "githuburl":"" }, { - "uri":"css_01_0151.html", - "node_id":"css_01_0151.xml", + "uri":"en-us_topic_0000001477899164.html", + "node_id":"en-us_topic_0000001477899164.xml", "product_code":"css", - "code":"47", + "code":"41", "des":"If the workloads on the data plane of a cluster change, you can scale out the cluster by increasing the number or capacity of its nodes. Services are not interrupted duri", "doc_type":"usermanual", - "kw":"Scaling Out a Cluster,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Scaling Out a Cluster,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Scaling Out a Cluster", "githuburl":"" }, { - "uri":"css_01_0152.html", - "node_id":"css_01_0152.xml", + "uri":"en-us_topic_0000001477739368.html", + "node_id":"en-us_topic_0000001477739368.xml", "product_code":"css", - "code":"48", + "code":"42", "des":"If the workloads on the data plane of a cluster change, you can change its node specifications as needed.The target cluster is available and has no tasks in progress.The ", "doc_type":"usermanual", - "kw":"Changing Specifications,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Changing Specifications,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Changing Specifications", "githuburl":"" }, { - "uri":"css_01_0153.html", - "node_id":"css_01_0153.xml", + "uri":"en-us_topic_0000001528299597.html", + "node_id":"en-us_topic_0000001528299597.xml", "product_code":"css", - "code":"49", - "des":"If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. Services are not interrupted during cluster scale-", + "code":"43", + "des":"If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. You are advised to scale in clusters during off-pe", "doc_type":"usermanual", - "kw":"Scaling in a Cluster,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Scaling in a Cluster,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Scaling in a Cluster", "githuburl":"" }, { - "uri":"css_01_0154.html", - "node_id":"css_01_0154.xml", + "uri":"en-us_topic_0000001477899184.html", + "node_id":"en-us_topic_0000001477899184.xml", "product_code":"css", - "code":"50", + "code":"44", "des":"If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs. Services will not be in", "doc_type":"usermanual", - "kw":"Removing Specified Nodes,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Removing Specified Nodes,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Removing Specified Nodes", "githuburl":"" }, { - "uri":"css_01_0156.html", - "node_id":"css_01_0156.xml", + "uri":"en-us_topic_0000001477579404.html", + "node_id":"en-us_topic_0000001477579404.xml", "product_code":"css", - "code":"51", - "des":"If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.The target cluster is available and has no tasks in progress.Only", + "code":"45", + "des":"If a node in the cluster is faulty, you can create a new node with the same specifications to replace it. During the replacement of a specified node, data of that node wi", "doc_type":"usermanual", - "kw":"Replacing a Specified Node,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Replacing a Specified Node,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Replacing a Specified Node", "githuburl":"" }, { - "uri":"css_01_0157.html", - "node_id":"css_01_0157.xml", + "uri":"en-us_topic_0000001477899188.html", + "node_id":"en-us_topic_0000001477899188.xml", "product_code":"css", - "code":"52", + "code":"46", "des":"If workloads on the data plane of a cluster increase, you can add master or client nodes as needed. Services are not interrupted while they are added.The target cluster i", "doc_type":"usermanual", - "kw":"Adding Master/Client Nodes,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Adding Master/Client Nodes,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Adding Master/Client Nodes", "githuburl":"" }, { - "uri":"css_01_0158.html", - "node_id":"css_01_0158.xml", + "uri":"en-us_topic_0000001528379285.html", + "node_id":"en-us_topic_0000001528379285.xml", "product_code":"css", - "code":"53", + "code":"47", "des":"After a cluster is created, its security mode can be changed using the following methods:Switching from the Non-Security Mode to Security ModeSwitching from the Security ", "doc_type":"usermanual", - "kw":"Changing the Security Mode,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Changing the Security Mode,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Changing the Security Mode", "githuburl":"" }, { - "uri":"css_01_0201.html", - "node_id":"css_01_0201.xml", + "uri":"en-us_topic_0000001528299585.html", + "node_id":"en-us_topic_0000001528299585.xml", "product_code":"css", - "code":"54", + "code":"48", "des":"CSS supports cross-AZ deployment. You can add an AZ to obtain more resources or improve cluster availability, and can migrate your current AZ to one with higher specifica", "doc_type":"usermanual", - "kw":"Changing AZs,Changing the Elasticsearch Cluster Form,User Guide", + "kw":"Changing AZs,Cluster Specification Modification,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Changing AZs", "githuburl":"" }, { - "uri":"css_01_0211.html", - "node_id":"css_01_0211.xml", + "uri":"en-us_topic_0000001528659153.html", + "node_id":"en-us_topic_0000001528659153.xml", "product_code":"css", - "code":"55", - "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "code":"49", + "des":"Same-version upgrade, cross-engine upgrade, and cross-version upgrade are supported. Same-version upgrade is to upgrade the kernel patch of a cluster to fix problems or o", "doc_type":"usermanual", - "kw":"Configuring an Elasticsearch Cluster", + "kw":"Upgrading the Cluster Version,Elasticsearch,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], - "title":"Configuring an Elasticsearch Cluster", + "title":"Upgrading the Cluster Version", "githuburl":"" }, { - "uri":"css_01_0080.html", - "node_id":"css_01_0080.xml", + "uri":"en-us_topic_0000001477579340.html", + "node_id":"en-us_topic_0000001477579340.xml", "product_code":"css", - "code":"56", - "des":"You can modify the elasticsearch.yml file.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, click the name of the target ", + "code":"50", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", - "kw":"Configuring YML Parameters,Configuring an Elasticsearch Cluster,User Guide", + "kw":"Cluster Management", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Cluster Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528299613.html", + "node_id":"en-us_topic_0000001528299613.xml", + "product_code":"css", + "code":"51", + "des":"The cluster list displays all CSS clusters. If there are a large number of clusters, these clusters will be displayed on multiple pages. You can view clusters of all stat", + "doc_type":"usermanual", + "kw":"Cluster List Overview,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Cluster List Overview", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528499201.html", + "node_id":"en-us_topic_0000001528499201.xml", + "product_code":"css", + "code":"52", + "des":"On the Cluster Information page, you can view the information about a cluster, including the private network address, public IP address, version, and node.Log in to the C", + "doc_type":"usermanual", + "kw":"Viewing Basic Cluster Information,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Viewing Basic Cluster Information", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528659137.html", + "node_id":"en-us_topic_0000001528659137.xml", + "product_code":"css", + "code":"53", + "des":"Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.You can add tags to a cluster when creating the cluster or a", + "doc_type":"usermanual", + "kw":"Managing Tags,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Managing Tags", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001477739336.html", + "node_id":"en-us_topic_0000001477739336.xml", + "product_code":"css", + "code":"54", + "des":"CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate ", + "doc_type":"usermanual", + "kw":"Managing Logs,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Managing Logs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528299601.html", + "node_id":"en-us_topic_0000001528299601.xml", + "product_code":"css", + "code":"55", + "des":"You can modify the elasticsearch.yml file.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, click the name of the target ", + "doc_type":"usermanual", + "kw":"Configuring YML Parameters,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Configuring YML Parameters", "githuburl":"" }, { - "uri":"css_01_0079.html", - "node_id":"css_01_0079.xml", + "uri":"en-us_topic_0000001477739388.html", + "node_id":"en-us_topic_0000001477739388.xml", "product_code":"css", - "code":"57", - "des":"CSS provides you with cold data nodes. You can store data that requires query response in seconds on high-performance nodes and store data that requires query response in", + "code":"56", + "des":"CSS clusters have default plugins. You can view the default plugin information on the console or Kibana.Log in to the CSS management console.In the navigation pane, choos", "doc_type":"usermanual", - "kw":"Hot and Cold Data Node Switchover,Configuring an Elasticsearch Cluster,User Guide", + "kw":"Viewing the Default Plugin List,Cluster Management,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], - "title":"Hot and Cold Data Node Switchover", + "title":"Viewing the Default Plugin List", "githuburl":"" }, { - "uri":"css_01_0091.html", - "node_id":"css_01_0091.xml", + "uri":"en-us_topic_0000001528299621.html", + "node_id":"en-us_topic_0000001528299621.xml", + "product_code":"css", + "code":"57", + "des":"You can create enterprise projects based on your organizational structure. Then you can manage resources across different regions by enterprise project, add users and use", + "doc_type":"usermanual", + "kw":"Binding an Enterprise Project,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Binding an Enterprise Project", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528499141.html", + "node_id":"en-us_topic_0000001528499141.xml", "product_code":"css", "code":"58", + "des":"If a cluster becomes faulty, you can restart it to check if it can run normally.The target cluster is not frozen and has no task in progress.If a cluster is available, en", + "doc_type":"usermanual", + "kw":"Restarting a Cluster,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Restarting a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001477579396.html", + "node_id":"en-us_topic_0000001477579396.xml", + "product_code":"css", + "code":"59", + "des":"You can delete clusters that you no longer need.If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.The sna", + "doc_type":"usermanual", + "kw":"Deleting a Cluster,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Deleting a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528299581.html", + "node_id":"en-us_topic_0000001528299581.xml", + "product_code":"css", + "code":"60", + "des":"In the Failed Tasks dialog box, you can view the failed tasks related to a cluster, such as failing to create, restart, scale out, back up, or restore a cluster. In addit", + "doc_type":"usermanual", + "kw":"Managing Failed Tasks,Cluster Management,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Managing Failed Tasks", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001477899212.html", + "node_id":"en-us_topic_0000001477899212.xml", + "product_code":"css", + "code":"61", + "des":"For Elasticsearch 6.5.4 and later versions, Open Distro for Elasticsearch SQL lets you write queries in SQL rather than in the Elasticsearch query domain-specific languag", + "doc_type":"usermanual", + "kw":"Using the Open Distro SQL Plug-in to Compile Queries,Elasticsearch,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Using the Open Distro SQL Plug-in to Compile Queries", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001866261281.html", + "node_id":"en-us_topic_0000001866261281.xml", + "product_code":"css", + "code":"62", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Using the Open Distro Alarm Plug-in to Configure SMN Alarms", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Using the Open Distro Alarm Plug-in to Configure SMN Alarms", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001564706853.html", + "node_id":"en-us_topic_0000001564706853.xml", + "product_code":"css", + "code":"63", + "des":"To use the OpenDistro alarm plugin (opendistro_alerting), authorize your Elasticsearch cluster to use SMN to send notifications. For details about how to use the OpenDist", + "doc_type":"usermanual", + "kw":"(Optional) Authorizing CSS to Use SMN,Using the Open Distro Alarm Plug-in to Configure SMN Alarms,Us", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"(Optional) Authorizing CSS to Use SMN", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001564906577.html", + "node_id":"en-us_topic_0000001564906577.xml", + "product_code":"css", + "code":"64", + "des":"By default, the open-source OpenDistro alarm plugin (opendistro_alerting) is integrated into CSS to send notifications when data meets specific conditions. This plugin co", + "doc_type":"usermanual", + "kw":"Configuring SMN Alarms,Using the Open Distro Alarm Plug-in to Configure SMN Alarms,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Configuring SMN Alarms", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528659081.html", + "node_id":"en-us_topic_0000001528659081.xml", + "product_code":"css", + "code":"65", + "des":"CSS provides you with cold data nodes. You can store data that requires query response in seconds on high-performance nodes and store data that requires query response in", + "doc_type":"usermanual", + "kw":"Switching Hot and Cold Data,Elasticsearch,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Switching Hot and Cold Data", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001477579380.html", + "node_id":"en-us_topic_0000001477579380.xml", + "product_code":"css", + "code":"66", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Managing Indexes", @@ -1196,20 +1370,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Managing Indexes", "githuburl":"" }, { - "uri":"css_01_0093.html", - "node_id":"css_01_0093.xml", + "uri":"en-us_topic_0000001477739392.html", + "node_id":"en-us_topic_0000001477739392.xml", "product_code":"css", - "code":"59", + "code":"67", "des":"Clusters of version 7.6.2 or later support index status management. ISM is a plugin that allows you to automate periodic and administrative operations based on changes on", "doc_type":"usermanual", "kw":"Creating and Managing Indexes,Managing Indexes,User Guide", @@ -1217,20 +1391,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Creating and Managing Indexes", "githuburl":"" }, { - "uri":"css_01_0092.html", - "node_id":"css_01_0092.xml", + "uri":"en-us_topic_0000001528659085.html", + "node_id":"en-us_topic_0000001528659085.xml", "product_code":"css", - "code":"60", + "code":"68", "des":"You can change any managed index policy. ISM has constraints to ensure that policy changes do not break indexes.If an index is stuck in its current status, never proceedi", "doc_type":"usermanual", "kw":"Changing Policies,Managing Indexes,User Guide", @@ -1238,104 +1412,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Changing Policies", "githuburl":"" }, { - "uri":"css_01_0077.html", - "node_id":"css_01_0077.xml", + "uri":"en-us_topic_0000001528299625.html", + "node_id":"en-us_topic_0000001528299625.xml", "product_code":"css", - "code":"61", - "des":"CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate ", - "doc_type":"usermanual", - "kw":"Managing Logs,Elasticsearch,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Managing Logs", - "githuburl":"" - }, - { - "uri":"css_01_0212.html", - "node_id":"css_01_0212.xml", - "product_code":"css", - "code":"62", - "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "doc_type":"usermanual", - "kw":"Managing Plugins", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Managing Plugins", - "githuburl":"" - }, - { - "uri":"css_01_0078.html", - "node_id":"css_01_0078.xml", - "product_code":"css", - "code":"63", - "des":"CSS clusters have default plugins. You can view the default plugin information on the console or Kibana.Log in to the CSS management console.In the navigation pane, choos", - "doc_type":"usermanual", - "kw":"Viewing the Default Plugin List,Managing Plugins,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Viewing the Default Plugin List", - "githuburl":"" - }, - { - "uri":"css_01_0061.html", - "node_id":"css_01_0061.xml", - "product_code":"css", - "code":"64", - "des":"For Elasticsearch 6.5.4 and later versions, Open Distro for Elasticsearch SQL lets you write queries in SQL rather than in the Elasticsearch query domain-specific languag", - "doc_type":"usermanual", - "kw":"Using the Open Distro SQL Plugin,Managing Plugins,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Using the Open Distro SQL Plugin", - "githuburl":"" - }, - { - "uri":"css_01_0107.html", - "node_id":"css_01_0107.xml", - "product_code":"css", - "code":"65", + "code":"69", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Kibana Platform", @@ -1343,62 +1433,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Kibana Platform", "githuburl":"" }, { - "uri":"css_01_0125.html", - "node_id":"css_01_0125.xml", + "uri":"en-us_topic_0000001477419728.html", + "node_id":"en-us_topic_0000001477419728.xml", "product_code":"css", - "code":"66", - "des":"You can customize the username, role name, and tenant name in Kibana.", - "doc_type":"usermanual", - "kw":"Kibana Usage Restrictions,Kibana Platform,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Kibana Usage Restrictions", - "githuburl":"" - }, - { - "uri":"css_01_0108.html", - "node_id":"css_01_0108.xml", - "product_code":"css", - "code":"67", - "des":"After creating a CSS cluster, you can log in to Kibana through the console or public network.Logging in to the consoleLog in to the CSS management console.On the Clusters", + "code":"70", + "des":"After creating a CSS cluster, you can log in to Kibana through the console or public network.You can customize the username, role name, and tenant name in Kibana.Logging ", "doc_type":"usermanual", "kw":"Logging In to Kibana,Kibana Platform,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Logging In to Kibana", "githuburl":"" }, { - "uri":"css_01_0088.html", - "node_id":"css_01_0088.xml", + "uri":"en-us_topic_0000001477419764.html", + "node_id":"en-us_topic_0000001477419764.xml", "product_code":"css", - "code":"68", + "code":"71", "des":"For CSS clusters that have security mode enabled, you can enable Kibana public access. After the configuration is complete, an IP address will be provided to access Kiban", "doc_type":"usermanual", "kw":"Accessing a Cluster from a Kibana Public Network,Kibana Platform,User Guide", @@ -1406,20 +1475,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Accessing a Cluster from a Kibana Public Network", "githuburl":"" }, { - "uri":"css_01_0109.html", - "node_id":"css_01_0109.xml", + "uri":"en-us_topic_0000001528379273.html", + "node_id":"en-us_topic_0000001528379273.xml", "product_code":"css", - "code":"69", + "code":"72", "des":"CSS uses the opendistro_security plug-in to provide security cluster capabilities. The opendistro_security plug-in is built based on the RBAC model. RBAC involves three c", "doc_type":"usermanual", "kw":"Creating a User and Granting Permissions by Using Kibana,Kibana Platform,User Guide", @@ -1427,20 +1496,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Creating a User and Granting Permissions by Using Kibana", "githuburl":"" }, { - "uri":"css_02_0097.html", - "node_id":"css_02_0097.xml", + "uri":"en-us_topic_0000001477419776.html", + "node_id":"en-us_topic_0000001477419776.xml", "product_code":"css", - "code":"70", + "code":"73", "des":"To interconnect user-built Kibana with CSS Elasticsearch clusters, the following conditions must be met:The local environment must support access from external networks.K", "doc_type":"usermanual", "kw":"Connecting User-Built Kibana to an Elasticsearch Cluster,Kibana Platform,User Guide", @@ -1448,20 +1517,944 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Connecting User-Built Kibana to an Elasticsearch Cluster", "githuburl":"" }, { - "uri":"css_01_0111.html", - "node_id":"css_01_0111.xml", + "uri":"en-us_topic_0000001633949601.html", + "node_id":"en-us_topic_0000001633949601.xml", "product_code":"css", - "code":"71", + "code":"74", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"OpenSearch", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"OpenSearch", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001584149004.html", + "node_id":"en-us_topic_0000001584149004.xml", + "product_code":"css", + "code":"75", + "des":"This section describes how to create an OpenSearch cluster.Public IP address access and Kibana public access can be used only after security mode is enabled.When creating", + "doc_type":"usermanual", + "kw":"Creating a Cluster,OpenSearch,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "IsMulti":"No", + "opensource":"true", + "documenttype":"usermanual", + "IsBot":"Yes" + } + ], + "title":"Creating a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001583669892.html", + "node_id":"en-us_topic_0000001583669892.xml", + "product_code":"css", + "code":"76", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Accessing a Cluster", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Accessing a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001641003025.html", + "node_id":"en-us_topic_0000001641003025.xml", + "product_code":"css", + "code":"77", + "des":"OpenSearch clusters have built-in Kibana and Cerebro components. You can quickly access an OpenSearch cluster through Kibana and Cerebro.Log in to the CSS management cons", + "doc_type":"usermanual", + "kw":"Quickly Accessing an OpenSearch Cluster,Accessing a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Quickly Accessing an OpenSearch Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001590963076.html", + "node_id":"en-us_topic_0000001590963076.xml", + "product_code":"css", + "code":"78", + "des":"You can access a security cluster that has the HTTPS access enabled through the public IP address provided by the system.By default, CSS uses a shared load balancer for p", + "doc_type":"usermanual", + "kw":"Accessing a Cluster from a Public Network,Accessing a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Accessing a Cluster from a Public Network", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001590323656.html", + "node_id":"en-us_topic_0000001590323656.xml", + "product_code":"css", + "code":"79", + "des":"If the VPC endpoint service is enabled, you can use a private domain name or node IP address generated by the endpoint to access the cluster. When the VPC endpoint servic", + "doc_type":"usermanual", + "kw":"Accessing a Cluster Using a VPC Endpoint,Accessing a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Accessing a Cluster Using a VPC Endpoint", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591285452.html", + "node_id":"en-us_topic_0000001591285452.xml", + "product_code":"css", + "code":"80", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"(Optional) Interconnecting with a Dedicated Load Balancer", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"(Optional) Interconnecting with a Dedicated Load Balancer", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640645481.html", + "node_id":"en-us_topic_0000001640645481.xml", + "product_code":"css", + "code":"81", + "des":"CSS integrates shared load balancers and allows you to bind public network access and enable the VPC Endpoint service. Dedicated load balancers provide more functions and", + "doc_type":"usermanual", + "kw":"Scenario Description,(Optional) Interconnecting with a Dedicated Load Balancer,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Scenario Description", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640764229.html", + "node_id":"en-us_topic_0000001640764229.xml", + "product_code":"css", + "code":"82", + "des":"This section describes how to connect a CSS cluster to a dedicated load balancer.If the target ELB listener uses the HTTP protocol, skip this step.Prepare and upload a se", + "doc_type":"usermanual", + "kw":"Connecting to a Dedicated Load Balancer,(Optional) Interconnecting with a Dedicated Load Balancer,Us", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Connecting to a Dedicated Load Balancer", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001590603388.html", + "node_id":"en-us_topic_0000001590603388.xml", + "product_code":"css", + "code":"83", + "des":"This section provides the sample code for two-way authentication during the access to a cluster from a Java client.", + "doc_type":"usermanual", + "kw":"Sample Code for Two-Way Authentication During the Access to a Cluster,(Optional) Interconnecting wit", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Sample Code for Two-Way Authentication During the Access to a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640883633.html", + "node_id":"en-us_topic_0000001640883633.xml", + "product_code":"css", + "code":"84", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Index Backup and Restoration", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Index Backup and Restoration", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001641003029.html", + "node_id":"en-us_topic_0000001641003029.xml", + "product_code":"css", + "code":"85", + "des":"You can back up index data in clusters. If data loss occurs or you want to retrieve data of a specified duration, you can restore the index data. Index backup is implemen", + "doc_type":"usermanual", + "kw":"Backup and Restoration Overview,Index Backup and Restoration,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Backup and Restoration Overview", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001590963080.html", + "node_id":"en-us_topic_0000001590963080.xml", + "product_code":"css", + "code":"86", + "des":"Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and", + "doc_type":"usermanual", + "kw":"Managing Automatic Snapshot Creation,Index Backup and Restoration,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Managing Automatic Snapshot Creation", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001590323664.html", + "node_id":"en-us_topic_0000001590323664.xml", + "product_code":"css", + "code":"87", + "des":"You can manually create a snapshot at any time to back up all data or data of specified indexes.To use the function of creating or restoring snapshots, the account or IAM", + "doc_type":"usermanual", + "kw":"Manually Creating a Snapshot,Index Backup and Restoration,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Manually Creating a Snapshot", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591285456.html", + "node_id":"en-us_topic_0000001591285456.xml", + "product_code":"css", + "code":"88", + "des":"You can use existing snapshots to restore the backup index data to a specified cluster.To use the function of creating or restoring snapshots, the account or IAM user log", + "doc_type":"usermanual", + "kw":"Restoring Data,Index Backup and Restoration,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Restoring Data", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640645485.html", + "node_id":"en-us_topic_0000001640645485.xml", + "product_code":"css", + "code":"89", + "des":"If you no longer need a snapshot, delete it to release storage resources. If the automatic snapshot creation function is enabled, snapshots that are automatically created", + "doc_type":"usermanual", + "kw":"Deleting a Snapshot,Index Backup and Restoration,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Deleting a Snapshot", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001637436445.html", + "node_id":"en-us_topic_0000001637436445.xml", + "product_code":"css", + "code":"90", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Scaling In/Out a Cluster", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Scaling In/Out a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640773493.html", + "node_id":"en-us_topic_0000001640773493.xml", + "product_code":"css", + "code":"91", + "des":"You can scale in or out a cluster and change cluster specifications. In this way, you can improve cluster efficiency and reduce O&M costs.Scaling Out a ClusterIf a data n", + "doc_type":"usermanual", + "kw":"Overview,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Overview", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001590332948.html", + "node_id":"en-us_topic_0000001590332948.xml", + "product_code":"css", + "code":"92", + "des":"If the workloads on the data plane of a cluster change, you can scale out the cluster by increasing the number or capacity of its nodes. Services are not interrupted duri", + "doc_type":"usermanual", + "kw":"Scaling Out a Cluster,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Scaling Out a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001641012329.html", + "node_id":"en-us_topic_0000001641012329.xml", + "product_code":"css", + "code":"93", + "des":"If the workloads on the data plane of a cluster change, you can change its node specifications as needed.The target cluster is available and has no tasks in progress.The ", + "doc_type":"usermanual", + "kw":"Changing Specifications,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Changing Specifications", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001590972372.html", + "node_id":"en-us_topic_0000001590972372.xml", + "product_code":"css", + "code":"94", + "des":"If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. You are advised to scale in clusters during off-pe", + "doc_type":"usermanual", + "kw":"Scaling in a Cluster,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Scaling in a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001590612676.html", + "node_id":"en-us_topic_0000001590612676.xml", + "product_code":"css", + "code":"95", + "des":"If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs. Services will not be in", + "doc_type":"usermanual", + "kw":"Removing Specified Nodes,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Removing Specified Nodes", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640892937.html", + "node_id":"en-us_topic_0000001640892937.xml", + "product_code":"css", + "code":"96", + "des":"If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.The target cluster is available and has no tasks in progress.Only", + "doc_type":"usermanual", + "kw":"Replacing a Specified Node,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Replacing a Specified Node", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640654793.html", + "node_id":"en-us_topic_0000001640654793.xml", + "product_code":"css", + "code":"97", + "des":"If workloads on the data plane of a cluster increase, you can add master or client nodes as needed. Services are not interrupted while they are added.The cluster is in th", + "doc_type":"usermanual", + "kw":"Adding Master/Client Nodes,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Adding Master/Client Nodes", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591294758.html", + "node_id":"en-us_topic_0000001591294758.xml", + "product_code":"css", + "code":"98", + "des":"After a cluster is created, its security mode can be changed in the following methods:Switching from the Non-Security Mode to Security ModeSwitching from the Security to ", + "doc_type":"usermanual", + "kw":"Changing the Security Mode,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Changing the Security Mode", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640773505.html", + "node_id":"en-us_topic_0000001640773505.xml", + "product_code":"css", + "code":"99", + "des":"CSS supports cross-AZ deployment. You can add an AZ to obtain more resources or improve cluster availability, and can migrate your current AZ to one with higher specifica", + "doc_type":"usermanual", + "kw":"Changing AZs,Scaling In/Out a Cluster,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Changing AZs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001583989096.html", + "node_id":"en-us_topic_0000001583989096.xml", + "product_code":"css", + "code":"100", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Managing Clusters", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Managing Clusters", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001583669884.html", + "node_id":"en-us_topic_0000001583669884.xml", + "product_code":"css", + "code":"101", + "des":"On the basic information page of an Opensearch cluster, you can view the private network address, public network address, version, and node of the cluster.Log in to the C", + "doc_type":"usermanual", + "kw":"Viewing Basic Information About an Opensearch Cluster,Managing Clusters,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Viewing Basic Information About an Opensearch Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001647464345.html", + "node_id":"en-us_topic_0000001647464345.xml", + "product_code":"css", + "code":"102", + "des":"Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.You can add tags to a cluster when creating the cluster or a", + "doc_type":"usermanual", + "kw":"Managing Tags,Managing Clusters,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Managing Tags", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591456866.html", + "node_id":"en-us_topic_0000001591456866.xml", + "product_code":"css", + "code":"103", + "des":"CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate ", + "doc_type":"usermanual", + "kw":"Managing Logs,Managing Clusters,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Managing Logs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640777441.html", + "node_id":"en-us_topic_0000001640777441.xml", + "product_code":"css", + "code":"104", + "des":"You can modify the elasticsearch.yml file.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, click the name of the target ", + "doc_type":"usermanual", + "kw":"Configuring YML Parameters,Managing Clusters,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Configuring YML Parameters", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591616594.html", + "node_id":"en-us_topic_0000001591616594.xml", + "product_code":"css", + "code":"105", + "des":"CSS clusters have default plug-ins. You can view the default plugin information on the console or Kibana.Log in to the CSS management console.In the navigation pane, choo", + "doc_type":"usermanual", + "kw":"Viewing the Default Plugin List,Managing Clusters,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Viewing the Default Plugin List", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640879293.html", + "node_id":"en-us_topic_0000001640879293.xml", + "product_code":"css", + "code":"106", + "des":"If a cluster becomes faulty, you can restart it to check if it can run normally.The target cluster is not frozen and has no task in progress.If a cluster is available, en", + "doc_type":"usermanual", + "kw":"Restarting a Cluster,Managing Clusters,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Restarting a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640998693.html", + "node_id":"en-us_topic_0000001640998693.xml", + "product_code":"css", + "code":"107", + "des":"You can delete clusters that you no longer need.If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.The sna", + "doc_type":"usermanual", + "kw":"Deleting a Cluster,Managing Clusters,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Deleting a Cluster", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001815107861.html", + "node_id":"en-us_topic_0000001815107861.xml", + "product_code":"css", + "code":"108", + "des":"By default, CSS has installed the open-source alert plugin opensearch-alerting for OpenSearch clusters to send notifications when data meets specific conditions. This plu", + "doc_type":"usermanual", + "kw":"Configuring SMN Alarms,OpenSearch,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Configuring SMN Alarms", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591776270.html", + "node_id":"en-us_topic_0000001591776270.xml", + "product_code":"css", + "code":"109", + "des":"CSS provides you with cold data nodes. You can store data that requires query response in seconds on hot data nodes with high performance and store historical data that r", + "doc_type":"usermanual", + "kw":"Switching Hot and Cold Data,OpenSearch,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Switching Hot and Cold Data", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640658697.html", + "node_id":"en-us_topic_0000001640658697.xml", + "product_code":"css", + "code":"110", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Managing Indexes", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Managing Indexes", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591298678.html", + "node_id":"en-us_topic_0000001591298678.xml", + "product_code":"css", + "code":"111", + "des":"You can manage the indexes of OpenSearch clusters. ISM is a plugin that allows you to automate periodic and administrative operations based on changes on the index age, i", + "doc_type":"usermanual", + "kw":"Creating and Managing Index Policies,Managing Indexes,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Creating and Managing Index Policies", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001641016221.html", + "node_id":"en-us_topic_0000001641016221.xml", + "product_code":"css", + "code":"112", + "des":"You can change any managed index policy. ISM has constraints to ensure that policy changes do not break indexes.If an index is stuck in its current status and you want to", + "doc_type":"usermanual", + "kw":"Changing an Index Policy,Managing Indexes,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Changing an Index Policy", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001587956758.html", + "node_id":"en-us_topic_0000001587956758.xml", + "product_code":"css", + "code":"113", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"OpenSearch Dashboards", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"OpenSearch Dashboards", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591776274.html", + "node_id":"en-us_topic_0000001591776274.xml", + "product_code":"css", + "code":"114", + "des":"An OpenSearch cluster has been created.Logging in to the consoleLog in to the CSS management console.In the navigation pane, choose Clusters > OpenSearch.On the Clusters ", + "doc_type":"usermanual", + "kw":"Logging In to the OpenSearch Dashboards,OpenSearch Dashboards,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Logging In to the OpenSearch Dashboards", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001640658701.html", + "node_id":"en-us_topic_0000001640658701.xml", + "product_code":"css", + "code":"115", + "des":"For CSS clusters that have security mode enabled, you can enable Kibana public access. After the configuration is complete, an IP address will be provided to access Kiban", + "doc_type":"usermanual", + "kw":"Accessing a Cluster from a Kibana Public Network,OpenSearch Dashboards,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Accessing a Cluster from a Kibana Public Network", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001591298682.html", + "node_id":"en-us_topic_0000001591298682.xml", + "product_code":"css", + "code":"116", + "des":"The security mode has been enabled for the OpenSearch cluster.You can customize the username, role name, and tenant name in the OpenSearch Dashboards.Log in to the CSS ma", + "doc_type":"usermanual", + "kw":"Creating and Authorizing a User on the OpenSearch Dashboards,OpenSearch Dashboards,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Creating and Authorizing a User on the OpenSearch Dashboards", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001477579368.html", + "node_id":"en-us_topic_0000001477579368.xml", + "product_code":"css", + "code":"117", + "des":"On the Dashboard page of the CSS management console, you can view information about the status and storage capacity of existing clusters.", + "doc_type":"usermanual", + "kw":"Viewing the Cluster Runtime Status and Storage Capacity Status,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Viewing the Cluster Runtime Status and Storage Capacity Status", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528659089.html", + "node_id":"en-us_topic_0000001528659089.xml", + "product_code":"css", + "code":"118", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Enhanced Cluster Features", @@ -1469,20 +2462,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Enhanced Cluster Features", "githuburl":"" }, { - "uri":"css_01_0117.html", - "node_id":"css_01_0117.xml", + "uri":"en-us_topic_0000001477899160.html", + "node_id":"en-us_topic_0000001477899160.xml", "product_code":"css", - "code":"72", + "code":"119", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Vector Retrieval", @@ -1490,20 +2483,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Vector Retrieval", "githuburl":"" }, { - "uri":"css_01_0118.html", - "node_id":"css_01_0118.xml", + "uri":"en-us_topic_0000001528299617.html", + "node_id":"en-us_topic_0000001528299617.xml", "product_code":"css", - "code":"73", + "code":"120", "des":"Image recognition and retrieval, video search, and personalized recommendation impose high requirements on the latency and accuracy of high-dimensional space vector retri", "doc_type":"usermanual", "kw":"Description,Vector Retrieval,User Guide", @@ -1511,20 +2504,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Description", "githuburl":"" }, { - "uri":"css_01_0122.html", - "node_id":"css_01_0122.xml", + "uri":"en-us_topic_0000001477419716.html", + "node_id":"en-us_topic_0000001477419716.xml", "product_code":"css", - "code":"74", + "code":"121", "des":"Off-heap memory is used for index construction and query in vector retrieval. Therefore, the required cluster capacity is related to the index type and off-heap memory si", "doc_type":"usermanual", "kw":"Cluster Planning for Vector Retrieval,Vector Retrieval,User Guide", @@ -1532,41 +2525,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Cluster Planning for Vector Retrieval", "githuburl":"" }, { - "uri":"css_01_0121.html", - "node_id":"css_01_0121.xml", + "uri":"en-us_topic_0000001528299557.html", + "node_id":"en-us_topic_0000001528299557.xml", "product_code":"css", - "code":"75", - "des":"A cluster of version 7.6.2 or 7.10.2 has been created by referring to Cluster Planning for Vector Retrieval.Cluster advanced settings have been configured as required by ", + "code":"122", + "des":"You have created a cluster by referring to Cluster Planning for Vector Retrieval. The cluster must be an Elasticsearch cluster of version 7.6.2 or 7.10.2, or an OpenSearc", "doc_type":"usermanual", "kw":"Creating a Vector Index,Vector Retrieval,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Creating a Vector Index", "githuburl":"" }, { - "uri":"css_01_0123.html", - "node_id":"css_01_0123.xml", + "uri":"en-us_topic_0000001477899192.html", + "node_id":"en-us_topic_0000001477899192.xml", "product_code":"css", - "code":"76", + "code":"123", "des":"Standard vector query syntax is provided for vector fields with vector indexes. The following command will return n (specified by size/topk) data records that are most cl", "doc_type":"usermanual", "kw":"Querying Vectors,Vector Retrieval,User Guide", @@ -1574,20 +2567,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Querying Vectors", "githuburl":"" }, { - "uri":"css_01_0126.html", - "node_id":"css_01_0126.xml", + "uri":"en-us_topic_0000001528659117.html", + "node_id":"en-us_topic_0000001528659117.xml", "product_code":"css", - "code":"77", + "code":"124", "des":"To reduce the cost of backup, disable the backup function before data import and enable it afterwards.Set refresh_interval to 120s or a larger value. Larger segments can ", "doc_type":"usermanual", "kw":"Optimizing the Performance of Vector Retrieval,Vector Retrieval,User Guide", @@ -1595,20 +2588,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Optimizing the Performance of Vector Retrieval", "githuburl":"" }, { - "uri":"css_01_0124.html", - "node_id":"css_01_0124.xml", + "uri":"en-us_topic_0000001528299609.html", + "node_id":"en-us_topic_0000001528299609.xml", "product_code":"css", - "code":"78", + "code":"125", "des":"When you perform operations in Creating a Vector Index, if IVF_GRAPH and IVF_GRAPH_PQ index algorithms are selected, you need to pre-build and register the center point v", "doc_type":"usermanual", "kw":"(Optional) Pre-Building and Registering a Center Point Vector,Vector Retrieval,User Guide", @@ -1616,20 +2609,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"(Optional) Pre-Building and Registering a Center Point Vector", "githuburl":"" }, { - "uri":"css_01_0130.html", - "node_id":"css_01_0130.xml", + "uri":"en-us_topic_0000001477899208.html", + "node_id":"en-us_topic_0000001477899208.xml", "product_code":"css", - "code":"79", + "code":"126", "des":"The vector retrieval engine is developed in C++ and uses off-heap memory. You can use the following APIs to manage the index cache.View cache statistics.GET /_vector/stat", "doc_type":"usermanual", "kw":"Managing the Vector Index Cache,Vector Retrieval,User Guide", @@ -1637,20 +2630,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Managing the Vector Index Cache", "githuburl":"" }, { - "uri":"css_01_0129.html", - "node_id":"css_01_0129.xml", + "uri":"en-us_topic_0000001528499121.html", + "node_id":"en-us_topic_0000001528499121.xml", "product_code":"css", - "code":"80", + "code":"127", "des":"Elasticsearch provides standard REST APIs and clients developed using Java, Python, and Go.Based on the open-source dataset SIFT1M (http://corpus-texmex.irisa.fr/) and Py", "doc_type":"usermanual", "kw":"Sample Code for Vector Search on a Client,Vector Retrieval,User Guide", @@ -1658,20 +2651,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Sample Code for Vector Search on a Client", "githuburl":"" }, { - "uri":"css_01_0112.html", - "node_id":"css_01_0112.xml", + "uri":"en-us_topic_0000001814230837.html", + "node_id":"en-us_topic_0000001814230837.xml", "product_code":"css", - "code":"81", + "code":"128", + "des":"PV_GRAPH deeply optimizes the HNSW algorithm and supports the vector and scalar joint filtering. When the vector and scalar joint filtering is used, the result filling ra", + "doc_type":"usermanual", + "kw":"Using PV_GRAPH to Search for Vector Indexes,Vector Retrieval,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Using PV_GRAPH to Search for Vector Indexes", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001528499153.html", + "node_id":"en-us_topic_0000001528499153.xml", + "product_code":"css", + "code":"129", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Storage-Compute Decoupling", @@ -1679,20 +2693,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Storage-Compute Decoupling", "githuburl":"" }, { - "uri":"css_01_0113.html", - "node_id":"css_01_0113.xml", + "uri":"en-us_topic_0000001477739384.html", + "node_id":"en-us_topic_0000001477739384.xml", "product_code":"css", - "code":"82", + "code":"130", "des":"You can store hot data on SSD to achieve the optimal query performance, and store historical data in OBS to reduce data storage costs.A large volume of data is written to", "doc_type":"usermanual", "kw":"Context,Storage-Compute Decoupling,User Guide", @@ -1700,20 +2714,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Context", "githuburl":"" }, { - "uri":"css_01_0114.html", - "node_id":"css_01_0114.xml", + "uri":"en-us_topic_0000001528299569.html", + "node_id":"en-us_topic_0000001528299569.xml", "product_code":"css", - "code":"83", + "code":"131", "des":"Before freezing an index, ensure no data is being written to it. The index will be set to read only before being frozen, and data write will fail.After an index is frozen", "doc_type":"usermanual", "kw":"Freezing an Index,Storage-Compute Decoupling,User Guide", @@ -1721,20 +2735,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Freezing an Index", "githuburl":"" }, { - "uri":"css_01_0116.html", - "node_id":"css_01_0116.xml", + "uri":"en-us_topic_0000001528379309.html", + "node_id":"en-us_topic_0000001528379309.xml", "product_code":"css", - "code":"84", + "code":"132", "des":"After data is dumped to OBS, some data is cached to reduce access to OBS and improve Elasticsearch query performance. Data that is requested for the first time is obtaine", "doc_type":"usermanual", "kw":"Configuring Cache,Storage-Compute Decoupling,User Guide", @@ -1742,20 +2756,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Configuring Cache", "githuburl":"" }, { - "uri":"css_01_0187.html", - "node_id":"css_01_0187.xml", + "uri":"en-us_topic_0000001477739360.html", + "node_id":"en-us_topic_0000001477739360.xml", "product_code":"css", - "code":"85", + "code":"133", "des":"When you query data on the Discover page of Kibana for the first time, all data needs to be obtained from OBS because there is no cache. If a large number of documents ar", "doc_type":"usermanual", "kw":"Enhanced Cold Data Query Performance,Storage-Compute Decoupling,User Guide", @@ -1763,20 +2777,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Enhanced Cold Data Query Performance", "githuburl":"" }, { - "uri":"css_01_0202.html", - "node_id":"css_01_0202.xml", + "uri":"en-us_topic_0000001528379301.html", + "node_id":"en-us_topic_0000001528379301.xml", "product_code":"css", - "code":"86", + "code":"134", "des":"To clearly display the operations of the storage and compute decoupling plugin in OBS, the real-time OBS rate metric is added to CSS and recorded in the system index.This", "doc_type":"usermanual", "kw":"Monitoring OBS Operations,Storage-Compute Decoupling,User Guide", @@ -1784,20 +2798,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Monitoring OBS Operations", "githuburl":"" }, { - "uri":"css_01_0227.html", - "node_id":"css_01_0227.xml", + "uri":"en-us_topic_0000001533988876.html", + "node_id":"en-us_topic_0000001533988876.xml", "product_code":"css", - "code":"87", + "code":"135", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Enhanced Import Performance", @@ -1805,20 +2819,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Enhanced Import Performance", "githuburl":"" }, { - "uri":"css_01_0228.html", - "node_id":"css_01_0228.xml", + "uri":"en-us_topic_0000001533829376.html", + "node_id":"en-us_topic_0000001533829376.xml", "product_code":"css", - "code":"88", + "code":"136", "des":"CSS provides enhanced data import function. It optimizes bulk route, and speeds up processing through indexes and word segmentation, improving import performance and redu", "doc_type":"usermanual", "kw":"Context,Enhanced Import Performance,User Guide", @@ -1826,20 +2840,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Context", "githuburl":"" }, { - "uri":"css_01_0229.html", - "node_id":"css_01_0229.xml", + "uri":"en-us_topic_0000001585148465.html", + "node_id":"en-us_topic_0000001585148465.xml", "product_code":"css", - "code":"89", + "code":"137", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Instructions", @@ -1847,20 +2861,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Instructions", "githuburl":"" }, { - "uri":"css_01_0230.html", - "node_id":"css_01_0230.xml", + "uri":"en-us_topic_0000001534148568.html", + "node_id":"en-us_topic_0000001534148568.xml", "product_code":"css", - "code":"90", + "code":"138", "des":"According to the default routing rule of Elasticsearch, data in a bulk request is routed to different shards. When massive data is written and a large number of index sha", "doc_type":"usermanual", "kw":"Bulk Route Optimization,Instructions,User Guide", @@ -1868,20 +2882,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Bulk Route Optimization", "githuburl":"" }, { - "uri":"css_01_0231.html", - "node_id":"css_01_0231.xml", + "uri":"en-us_topic_0000001534308508.html", + "node_id":"en-us_topic_0000001534308508.xml", "product_code":"css", - "code":"91", + "code":"139", "des":"You can specify the index.aggr_perf_batch_size configuration item to enable or disable batch import optimization. After the batch import function is enabled, documents in", "doc_type":"usermanual", "kw":"Bulk Aggregation Optimization,Instructions,User Guide", @@ -1889,20 +2903,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Bulk Aggregation Optimization", "githuburl":"" }, { - "uri":"css_01_0232.html", - "node_id":"css_01_0232.xml", + "uri":"en-us_topic_0000001584828717.html", + "node_id":"en-us_topic_0000001584828717.xml", "product_code":"css", - "code":"92", + "code":"140", "des":"You can configure index.native_speed_up to enable or disable text index acceleration. This function optimizes the index process and memory usage to accelerate index build", "doc_type":"usermanual", "kw":"Text Index Acceleration,Instructions,User Guide", @@ -1910,20 +2924,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Text Index Acceleration", "githuburl":"" }, { - "uri":"css_01_0233_0.html", - "node_id":"css_01_0233_0.xml", + "uri":"en-us_topic_0000001584988497.html", + "node_id":"en-us_topic_0000001584988497.xml", "product_code":"css", - "code":"93", + "code":"141", "des":"After the import performance is enhanced, the number of index merge tasks increases accordingly. You can adjust the following configuration to reduce the impact of merge ", "doc_type":"usermanual", "kw":"Optimization of Other Parameters,Instructions,User Guide", @@ -1931,62 +2945,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Optimization of Other Parameters", "githuburl":"" }, { - "uri":"css_01_0234.html", - "node_id":"css_01_0234.xml", + "uri":"en-us_topic_0000001584708761.html", + "node_id":"en-us_topic_0000001584708761.xml", "product_code":"css", - "code":"94", - "des":"Test environmentCluster: 3 M6 ECSs (8 vCPUs | 64 GB memory)Data: open-source web server access logs and internal service dataset (dns_logs)Configuration: 120 shards, no r", + "code":"142", + "des":"Test environmentCluster: 3 Cloud M6 ECSs (8 vCPUs | 64 GB memory)Data: open-source web server access logs and internal service dataset (dns_logs)Configuration: 120 shards", "doc_type":"usermanual", "kw":"Performance Data,Enhanced Import Performance,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Performance Data", "githuburl":"" }, { - "uri":"css_01_0200.html", - "node_id":"css_01_0200.xml", + "uri":"en-us_topic_0000001477899176.html", + "node_id":"en-us_topic_0000001477899176.xml", "product_code":"css", - "code":"95", - "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "doc_type":"usermanual", - "kw":"Flow Control", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Flow Control", - "githuburl":"" - }, - { - "uri":"css_01_0191.html", - "node_id":"css_01_0191.xml", - "product_code":"css", - "code":"96", + "code":"143", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Flow Control 2.0", @@ -1994,20 +2987,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Flow Control 2.0", "githuburl":"" }, { - "uri":"css_01_0192.html", - "node_id":"css_01_0192.xml", + "uri":"en-us_topic_0000001528379257.html", + "node_id":"en-us_topic_0000001528379257.xml", "product_code":"css", - "code":"97", + "code":"144", "des":"CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a ", "doc_type":"usermanual", "kw":"Context,Flow Control 2.0,User Guide", @@ -2015,41 +3008,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Context", "githuburl":"" }, { - "uri":"css_01_0193.html", - "node_id":"css_01_0193.xml", + "uri":"en-us_topic_0000001477579372.html", + "node_id":"en-us_topic_0000001477579372.xml", "product_code":"css", - "code":"98", - "des":"You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster. The command parameters are as follows.Log in to the CSS management console.C", + "code":"145", + "des":"You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster.Log in to the CSS management console.Choose Clusters in the navigation pane. ", "doc_type":"usermanual", "kw":"HTTP/HTTPS Flow Control,Flow Control 2.0,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"HTTP/HTTPS Flow Control", "githuburl":"" }, { - "uri":"css_01_0194.html", - "node_id":"css_01_0194.xml", + "uri":"en-us_topic_0000001477419736.html", + "node_id":"en-us_topic_0000001477419736.xml", "product_code":"css", - "code":"99", + "code":"146", "des":"Elasticsearch provides a circuit breaker, which will terminate requests or return the error code 429 if the memory usage exceeds its threshold. However, the circuit break", "doc_type":"usermanual", "kw":"Memory Flow Control,Flow Control 2.0,User Guide", @@ -2057,20 +3050,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Memory Flow Control", "githuburl":"" }, { - "uri":"css_01_0195.html", - "node_id":"css_01_0195.xml", + "uri":"en-us_topic_0000001477739364.html", + "node_id":"en-us_topic_0000001477739364.xml", "product_code":"css", - "code":"100", + "code":"147", "des":"Request sampling can record the access of client IP addresses and the type of requests from the client. Based on the statistics, you can identify the access traffic of cl", "doc_type":"usermanual", "kw":"Request Sampling,Flow Control 2.0,User Guide", @@ -2078,20 +3071,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Request Sampling", "githuburl":"" }, { - "uri":"css_01_0196.html", - "node_id":"css_01_0196.xml", + "uri":"en-us_topic_0000001477579364.html", + "node_id":"en-us_topic_0000001477579364.xml", "product_code":"css", - "code":"101", + "code":"148", "des":"You can block all connections in one click, except the connections that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.Log i", "doc_type":"usermanual", "kw":"One-click Traffic Blocking,Flow Control 2.0,User Guide", @@ -2099,20 +3092,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"One-click Traffic Blocking", "githuburl":"" }, { - "uri":"css_01_0198.html", - "node_id":"css_01_0198.xml", + "uri":"en-us_topic_0000001477419720.html", + "node_id":"en-us_topic_0000001477419720.xml", "product_code":"css", - "code":"102", + "code":"149", "des":"Flow control can be implemented via an independent API.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the targe", "doc_type":"usermanual", "kw":"Access Statistics and Traffic Control Information Query,Flow Control 2.0,User Guide", @@ -2120,20 +3113,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Access Statistics and Traffic Control Information Query", "githuburl":"" }, { - "uri":"css_01_0199.html", - "node_id":"css_01_0199.xml", + "uri":"en-us_topic_0000001528659149.html", + "node_id":"en-us_topic_0000001528659149.xml", "product_code":"css", - "code":"103", + "code":"150", "des":"You can check access logs in either of the following ways:Enable and check access logs via an independent API. Configure the API parameters to record the access log time ", "doc_type":"usermanual", "kw":"Temporary Access Statistics Logs,Flow Control 2.0,User Guide", @@ -2141,20 +3134,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Temporary Access Statistics Logs", "githuburl":"" }, { - "uri":"css_01_0139.html", - "node_id":"css_01_0139.xml", + "uri":"en-us_topic_0000001832788405.html", + "node_id":"en-us_topic_0000001832788405.xml", "product_code":"css", - "code":"104", + "code":"151", + "des":"The traffic control function can record cluster access logs and write the logs to background log files. You can back up the logs to OBS for viewing. You can run the follo", + "doc_type":"usermanual", + "kw":"Recording Access Logs in Files,Flow Control 2.0,User Guide", + "search_title":"", + "metedata":[ + { + "prodname":"css", + "documenttype":"usermanual", + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" + } + ], + "title":"Recording Access Logs in Files", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001477899152.html", + "node_id":"en-us_topic_0000001477899152.xml", + "product_code":"css", + "code":"152", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Flow Control 1.0", @@ -2162,20 +3176,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Flow Control 1.0", "githuburl":"" }, { - "uri":"css_01_0140.html", - "node_id":"css_01_0140.xml", + "uri":"en-us_topic_0000001477739408.html", + "node_id":"en-us_topic_0000001477739408.xml", "product_code":"css", - "code":"105", + "code":"153", "des":"CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a ", "doc_type":"usermanual", "kw":"Context,Flow Control 1.0,User Guide", @@ -2183,20 +3197,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Context", "githuburl":"" }, { - "uri":"css_01_0141.html", - "node_id":"css_01_0141.xml", + "uri":"en-us_topic_0000001477579352.html", + "node_id":"en-us_topic_0000001477579352.xml", "product_code":"css", - "code":"106", + "code":"154", "des":"You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster. The command parameters are as follows.Log in to the CSS management console.C", "doc_type":"usermanual", "kw":"HTTP/HTTPS Flow Control,Flow Control 1.0,User Guide", @@ -2204,20 +3218,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"HTTP/HTTPS Flow Control", "githuburl":"" }, { - "uri":"css_01_0142.html", - "node_id":"css_01_0142.xml", + "uri":"en-us_topic_0000001528499157.html", + "node_id":"en-us_topic_0000001528499157.xml", "product_code":"css", - "code":"107", + "code":"155", "des":"Elasticsearch provides a circuit breaker, which will terminate requests if the memory usage exceeds its threshold. However, Elasticsearch does not check the heap memory u", "doc_type":"usermanual", "kw":"Memory Flow Control,Flow Control 1.0,User Guide", @@ -2225,20 +3239,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Memory Flow Control", "githuburl":"" }, { - "uri":"css_01_0143.html", - "node_id":"css_01_0143.xml", + "uri":"en-us_topic_0000001528499165.html", + "node_id":"en-us_topic_0000001528499165.xml", "product_code":"css", - "code":"108", + "code":"156", "des":"The following table describes the global path whitelist parameters for flow control.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Cl", "doc_type":"usermanual", "kw":"Global Path Whitelist for Flow Control,Flow Control 1.0,User Guide", @@ -2246,20 +3260,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Global Path Whitelist for Flow Control", "githuburl":"" }, { - "uri":"css_01_0144.html", - "node_id":"css_01_0144.xml", + "uri":"en-us_topic_0000001477579356.html", + "node_id":"en-us_topic_0000001477579356.xml", "product_code":"css", - "code":"109", + "code":"157", "des":"Request sampling can record the access IP addresses, the number of accessed nodes, request paths, request URLs, and request bodies, which can be used to obtain the IP add", "doc_type":"usermanual", "kw":"Request Sampling,Flow Control 1.0,User Guide", @@ -2267,20 +3281,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Request Sampling", "githuburl":"" }, { - "uri":"css_01_0145.html", - "node_id":"css_01_0145.xml", + "uri":"en-us_topic_0000001528299577.html", + "node_id":"en-us_topic_0000001528299577.xml", "product_code":"css", - "code":"110", + "code":"158", "des":"Flow control can be implemented via an independent API.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the targe", "doc_type":"usermanual", "kw":"Flow Control,Flow Control 1.0,User Guide", @@ -2288,20 +3302,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Flow Control", "githuburl":"" }, { - "uri":"css_01_0146.html", - "node_id":"css_01_0146.xml", + "uri":"en-us_topic_0000001528659101.html", + "node_id":"en-us_topic_0000001528659101.xml", "product_code":"css", - "code":"111", + "code":"159", "des":"You can check access logs in either of the following ways:Enable and check access logs via an independent API. Configure the API parameters to record the access log time ", "doc_type":"usermanual", "kw":"Access Logs,Flow Control 1.0,User Guide", @@ -2309,20 +3323,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Access Logs", "githuburl":"" }, { - "uri":"css_01_0147.html", - "node_id":"css_01_0147.xml", + "uri":"en-us_topic_0000001477419744.html", + "node_id":"en-us_topic_0000001477419744.xml", "product_code":"css", - "code":"112", + "code":"160", "des":"CPU flow control can be implemented based on the CPU usage of a node.You can configure the CPU usage threshold of a node to prevent the node from breaking down due to hea", "doc_type":"usermanual", "kw":"CPU Flow Control,Flow Control 1.0,User Guide", @@ -2330,20 +3344,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"CPU Flow Control", "githuburl":"" }, { - "uri":"css_01_0148.html", - "node_id":"css_01_0148.xml", + "uri":"en-us_topic_0000001477739380.html", + "node_id":"en-us_topic_0000001477739380.xml", "product_code":"css", - "code":"113", + "code":"161", "des":"You can block all traffic in one click, except the traffic that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.Log in to the", "doc_type":"usermanual", "kw":"One-click Traffic Blocking,Flow Control 1.0,User Guide", @@ -2351,20 +3365,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"One-click Traffic Blocking", "githuburl":"" }, { - "uri":"css_01_0131.html", - "node_id":"css_01_0131.xml", + "uri":"en-us_topic_0000001477899220.html", + "node_id":"en-us_topic_0000001477899220.xml", "product_code":"css", - "code":"114", + "code":"162", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Large Query Isolation", @@ -2372,20 +3386,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Large Query Isolation", "githuburl":"" }, { - "uri":"css_01_0132.html", - "node_id":"css_01_0132.xml", + "uri":"en-us_topic_0000001477739376.html", + "node_id":"en-us_topic_0000001477739376.xml", "product_code":"css", - "code":"115", + "code":"163", "des":"The large query isolation feature allows you to separately manage large queries. You can isolate query requests that consume a large amount of memory or take a long perio", "doc_type":"usermanual", "kw":"Context,Large Query Isolation,User Guide", @@ -2393,20 +3407,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Context", "githuburl":"" }, { - "uri":"css_01_0133.html", - "node_id":"css_01_0133.xml", + "uri":"en-us_topic_0000001477579388.html", + "node_id":"en-us_topic_0000001477579388.xml", "product_code":"css", - "code":"116", + "code":"164", "des":"The large query isolation and global timeout features are disabled by default. If you enable them, the configuration will take effect immediately. Perform the following s", "doc_type":"usermanual", "kw":"Procedure,Large Query Isolation,User Guide", @@ -2414,20 +3428,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Procedure", "githuburl":"" }, { - "uri":"css_01_0134.html", - "node_id":"css_01_0134.xml", + "uri":"en-us_topic_0000001528499133.html", + "node_id":"en-us_topic_0000001528499133.xml", "product_code":"css", - "code":"117", + "code":"165", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Index Monitoring", @@ -2435,20 +3449,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Index Monitoring", "githuburl":"" }, { - "uri":"css_01_0135.html", - "node_id":"css_01_0135.xml", + "uri":"en-us_topic_0000001528499125.html", + "node_id":"en-us_topic_0000001528499125.xml", "product_code":"css", - "code":"118", + "code":"166", "des":"CSS monitors various metrics of the running status and change trend of cluster indexes to measure service usage and handle potential risks in a timely manner, ensuring th", "doc_type":"usermanual", "kw":"Context,Index Monitoring,User Guide", @@ -2456,20 +3470,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Context", "githuburl":"" }, { - "uri":"css_01_0136.html", - "node_id":"css_01_0136.xml", + "uri":"en-us_topic_0000001477579408.html", + "node_id":"en-us_topic_0000001477579408.xml", "product_code":"css", - "code":"119", + "code":"167", "des":"Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation colu", "doc_type":"usermanual", "kw":"Enabling Index Monitoring,Index Monitoring,User Guide", @@ -2477,20 +3491,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Enabling Index Monitoring", "githuburl":"" }, { - "uri":"css_01_0137.html", - "node_id":"css_01_0137.xml", + "uri":"en-us_topic_0000001528659105.html", + "node_id":"en-us_topic_0000001528659105.xml", "product_code":"css", - "code":"120", + "code":"168", "des":"You can call an API to query the index read and write traffic within a period of time.A cluster has been created and index monitoring has been enabled.Log in to the CSS m", "doc_type":"usermanual", "kw":"Checking the Index Read and Write Traffic,Index Monitoring,User Guide", @@ -2498,20 +3512,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Checking the Index Read and Write Traffic", "githuburl":"" }, { - "uri":"css_01_0138.html", - "node_id":"css_01_0138.xml", + "uri":"en-us_topic_0000001528499197.html", + "node_id":"en-us_topic_0000001528499197.xml", "product_code":"css", - "code":"121", + "code":"169", "des":"You can check preconfigured index monitoring visualizations on the Dashboard and Visualizations pages of Kibana. You can also customize tables and charts.A cluster has be", "doc_type":"usermanual", "kw":"Checking Index Monitoring Information,Index Monitoring,User Guide", @@ -2519,20 +3533,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Checking Index Monitoring Information", "githuburl":"" }, { - "uri":"css_01_0197.html", - "node_id":"css_01_0197.xml", + "uri":"en-us_topic_0000001528499129.html", + "node_id":"en-us_topic_0000001528499129.xml", "product_code":"css", - "code":"122", + "code":"170", "des":"The configuration file content of kibana-monitor is as follows. You are advised to save the file as monitoring-kibana.ndjson.", "doc_type":"usermanual", "kw":"kibana-monitor,Index Monitoring,User Guide", @@ -2540,20 +3554,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"kibana-monitor", "githuburl":"" }, { - "uri":"css_01_0177.html", - "node_id":"css_01_0177.xml", + "uri":"en-us_topic_0000001477419712.html", + "node_id":"en-us_topic_0000001477419712.xml", "product_code":"css", - "code":"123", + "code":"171", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Enhanced Cluster Monitoring", @@ -2561,20 +3575,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Enhanced Cluster Monitoring", "githuburl":"" }, { - "uri":"css_01_0178.html", - "node_id":"css_01_0178.xml", + "uri":"en-us_topic_0000001477419748.html", + "node_id":"en-us_topic_0000001477419748.xml", "product_code":"css", - "code":"124", + "code":"172", "des":"The Elasticsearch community only discusses how to monitor the average latency of search requests, which cannot reflect the actual search performance of a cluster. To enha", "doc_type":"usermanual", "kw":"P99 Latency Monitoring,Enhanced Cluster Monitoring,User Guide", @@ -2582,20 +3596,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"P99 Latency Monitoring", "githuburl":"" }, { - "uri":"css_01_0179.html", - "node_id":"css_01_0179.xml", + "uri":"en-us_topic_0000001477419772.html", + "node_id":"en-us_topic_0000001477419772.xml", "product_code":"css", - "code":"125", + "code":"173", "des":"When an external system accesses Elasticsearch through the HTTP protocol, a response and the corresponding status code are returned. The open-source Elasticsearch server ", "doc_type":"usermanual", "kw":"HTTP Status Code Monitoring,Enhanced Cluster Monitoring,User Guide", @@ -2603,20 +3617,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"HTTP Status Code Monitoring", "githuburl":"" }, { - "uri":"css_01_0172.html", - "node_id":"css_01_0172.xml", + "uri":"en-us_topic_0000001528659121.html", + "node_id":"en-us_topic_0000001528659121.xml", "product_code":"css", - "code":"126", + "code":"174", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Enhanced Aggregation", @@ -2624,20 +3638,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Enhanced Aggregation", "githuburl":"" }, { - "uri":"css_01_0173.html", - "node_id":"css_01_0173.xml", + "uri":"en-us_topic_0000001477419760.html", + "node_id":"en-us_topic_0000001477419760.xml", "product_code":"css", - "code":"127", + "code":"175", "des":"The enhanced aggregation is an optimization feature for service awareness. With this feature, you can optimize the aggregation analysis capability of observable services.", "doc_type":"usermanual", "kw":"Features,Enhanced Aggregation,User Guide", @@ -2645,20 +3659,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Features", "githuburl":"" }, { - "uri":"css_01_0174.html", - "node_id":"css_01_0174.xml", + "uri":"en-us_topic_0000001528659125.html", + "node_id":"en-us_topic_0000001528659125.xml", "product_code":"css", - "code":"128", + "code":"176", "des":"Low-cardinality fields have high data clustering performance when being sorted, which facilitates vectorized optimization. Assume that the following query statement exist", "doc_type":"usermanual", "kw":"Grouping and Aggregation of Low-cardinality Fields,Enhanced Aggregation,User Guide", @@ -2666,20 +3680,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Grouping and Aggregation of Low-cardinality Fields", "githuburl":"" }, { - "uri":"css_01_0175.html", - "node_id":"css_01_0175.xml", + "uri":"en-us_topic_0000001528499145.html", + "node_id":"en-us_topic_0000001528499145.xml", "product_code":"css", - "code":"129", + "code":"177", "des":"High-cardinality fields are usually used for histogram grouping and aggregation instead of single-point grouping and aggregation. For example, collecting the statistics o", "doc_type":"usermanual", "kw":"High-cardinality Field Histogram Aggregation,Enhanced Aggregation,User Guide", @@ -2687,20 +3701,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"High-cardinality Field Histogram Aggregation", "githuburl":"" }, { - "uri":"css_01_0176.html", - "node_id":"css_01_0176.xml", + "uri":"en-us_topic_0000001528659141.html", + "node_id":"en-us_topic_0000001528659141.xml", "product_code":"css", - "code":"130", + "code":"178", "des":"In the scenario where low-cardinality and high-cardinality fields are mixed, assume that the following query statement exists:Group the low-cardinality fields and create ", "doc_type":"usermanual", "kw":"Low-cardinality and High-cardinality Field Mixing,Enhanced Aggregation,User Guide", @@ -2708,20 +3722,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Low-cardinality and High-cardinality Field Mixing", "githuburl":"" }, { - "uri":"css_01_0161.html", - "node_id":"css_01_0161.xml", + "uri":"en-us_topic_0000001528379249.html", + "node_id":"en-us_topic_0000001528379249.xml", "product_code":"css", - "code":"131", + "code":"179", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Read/Write Splitting", @@ -2729,20 +3743,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Read/Write Splitting", "githuburl":"" }, { - "uri":"css_01_0162.html", - "node_id":"css_01_0162.xml", + "uri":"en-us_topic_0000001528379321.html", + "node_id":"en-us_topic_0000001528379321.xml", "product_code":"css", - "code":"132", + "code":"180", "des":"CSS supports read/write splitting. Data written to the primary cluster (Leader) can be automatically synchronized to the secondary cluster (Follower). In this way, data i", "doc_type":"usermanual", "kw":"Features,Read/Write Splitting,User Guide", @@ -2750,20 +3764,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Features", "githuburl":"" }, { - "uri":"css_01_0164.html", - "node_id":"css_01_0164.xml", + "uri":"en-us_topic_0000001477579376.html", + "node_id":"en-us_topic_0000001477579376.xml", "product_code":"css", - "code":"133", + "code":"181", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Instructions", @@ -2771,20 +3785,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Instructions", "githuburl":"" }, { - "uri":"css_01_0165.html", - "node_id":"css_01_0165.xml", + "uri":"en-us_topic_0000001528379313.html", + "node_id":"en-us_topic_0000001528379313.xml", "product_code":"css", - "code":"134", + "code":"182", "des":"Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation col", "doc_type":"usermanual", "kw":"Basic Settings,Instructions,User Guide", @@ -2792,20 +3806,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Basic Settings", "githuburl":"" }, { - "uri":"css_01_0166.html", - "node_id":"css_01_0166.xml", + "uri":"en-us_topic_0000001528659157.html", + "node_id":"en-us_topic_0000001528659157.xml", "product_code":"css", - "code":"135", + "code":"183", "des":"Synchronize a single index.The request URL and request body parameters are as follows:After the synchronization function is enabled, indexes in the secondary cluster beco", "doc_type":"usermanual", "kw":"Synchronizing Specified Indexes,Instructions,User Guide", @@ -2813,20 +3827,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Synchronizing Specified Indexes", "githuburl":"" }, { - "uri":"css_01_0167.html", - "node_id":"css_01_0167.xml", + "uri":"en-us_topic_0000001528379265.html", + "node_id":"en-us_topic_0000001528379265.xml", "product_code":"css", - "code":"136", + "code":"184", "des":"The request URL and request body parameters are as follows:The following are two examples:1. Synchronize a single index from the primary cluster to the secondary cluster.", "doc_type":"usermanual", "kw":"Matching Index Synchronization,Instructions,User Guide", @@ -2834,20 +3848,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Matching Index Synchronization", "githuburl":"" }, { - "uri":"css_01_0168.html", - "node_id":"css_01_0168.xml", + "uri":"en-us_topic_0000001477899224.html", + "node_id":"en-us_topic_0000001477899224.xml", "product_code":"css", - "code":"137", + "code":"185", "des":"You can specify multiple indexes or use wildcard to match the target indexes and terminate their synchronization tasks. Subsequent modifications to the indexes in the pri", "doc_type":"usermanual", "kw":"Stopping Index Synchronization,Instructions,User Guide", @@ -2855,20 +3869,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Stopping Index Synchronization", "githuburl":"" }, { - "uri":"css_01_0169.html", - "node_id":"css_01_0169.xml", + "uri":"en-us_topic_0000001528499169.html", + "node_id":"en-us_topic_0000001528499169.xml", "product_code":"css", - "code":"138", + "code":"186", "des":"Querying the created patterns.This API is used to query the pattern list and query a specified pattern by name.An example request is as follows:GET auto_sync/pattern\nGET ", "doc_type":"usermanual", "kw":"Other Management APIs,Instructions,User Guide", @@ -2876,20 +3890,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Other Management APIs", "githuburl":"" }, { - "uri":"css_01_0170.html", - "node_id":"css_01_0170.xml", + "uri":"en-us_topic_0000001477739356.html", + "node_id":"en-us_topic_0000001477739356.xml", "product_code":"css", - "code":"139", + "code":"187", "des":"This section describes how to switch from the primary cluster to the secondary cluster when the primary cluster is faulty.1. If the synchronization of specified indexes h", "doc_type":"usermanual", "kw":"Best Practices,Read/Write Splitting,User Guide", @@ -2897,83 +3911,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Best Practices", "githuburl":"" }, { - "uri":"css_01_0045.html", - "node_id":"css_01_0045.xml", + "uri":"en-us_topic_0000001477419740.html", + "node_id":"en-us_topic_0000001477419740.xml", "product_code":"css", - "code":"140", - "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "doc_type":"usermanual", - "kw":"Importing Data to Elasticsearch", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Importing Data to Elasticsearch", - "githuburl":"" - }, - { - "uri":"css_01_0048.html", - "node_id":"css_01_0048.xml", - "product_code":"css", - "code":"141", - "des":"You can use Logstash to collect data and migrate collected data to Elasticsearch in CSS. This method helps you effectively obtain and manage data through Elasticsearch. D", - "doc_type":"usermanual", - "kw":"Using Logstash to Import Data to Elasticsearch,Importing Data to Elasticsearch,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Using Logstash to Import Data to Elasticsearch", - "githuburl":"" - }, - { - "uri":"css_01_0024.html", - "node_id":"css_01_0024.xml", - "product_code":"css", - "code":"142", - "des":"You can import data in various formats, such as JSON, to Elasticsearch in CSS by using Kibana or APIs.Before importing data, ensure that you can use Kibana to access the ", - "doc_type":"usermanual", - "kw":"Using Kibana or APIs to Import Data to Elasticsearch,Importing Data to Elasticsearch,User Guide", - "search_title":"", - "metedata":[ - { - "prodname":"css", - "IsMulti":"No", - "opensource":"true", - "documenttype":"usermanual", - "IsBot":"Yes" - } - ], - "title":"Using Kibana or APIs to Import Data to Elasticsearch", - "githuburl":"" - }, - { - "uri":"css_01_0041.html", - "node_id":"css_01_0041.xml", - "product_code":"css", - "code":"143", + "code":"188", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Monitoring", @@ -2981,41 +3932,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Monitoring", "githuburl":"" }, { - "uri":"css_01_0042.html", - "node_id":"css_01_0042.xml", + "uri":"en-us_topic_0000001528659133.html", + "node_id":"en-us_topic_0000001528659133.xml", "product_code":"css", - "code":"144", + "code":"189", "des":"You can use Cloud Eye to monitor cluster metrics of CSS in real time and quickly handle exceptions. For details about Cloud Eye, see the Cloud Eye User Guide.Table 1 list", "doc_type":"usermanual", - "kw":"Monitoring Metrics of Elasticsearch Clusters,Monitoring,User Guide", + "kw":"Monitoring Metrics of Clusters,Monitoring,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], - "title":"Monitoring Metrics of Elasticsearch Clusters", + "title":"Monitoring Metrics of Clusters", "githuburl":"" }, { - "uri":"css_01_0246.html", - "node_id":"css_01_0246.xml", + "uri":"en-us_topic_0000001599872681.html", + "node_id":"en-us_topic_0000001599872681.xml", "product_code":"css", - "code":"145", + "code":"190", "des":"This topic describes CSS metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can search for the monitoring metrics and alarms gener", "doc_type":"usermanual", "kw":"Monitoring Metrics,Monitoring,User Guide", @@ -3033,10 +3984,10 @@ "githuburl":"" }, { - "uri":"css_01_0155.html", - "node_id":"css_01_0155.xml", + "uri":"en-us_topic_0000001477579336.html", + "node_id":"en-us_topic_0000001477579336.xml", "product_code":"css", - "code":"146", + "code":"191", "des":"You can use Cloud Eye to monitor the created clusters. After configuring the cluster monitoring, you can log in to the Cloud Eye management console to view cluster metric", "doc_type":"usermanual", "kw":"Configuring Cluster Monitoring,Monitoring,User Guide", @@ -3044,20 +3995,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Configuring Cluster Monitoring", "githuburl":"" }, { - "uri":"css_01_0049.html", - "node_id":"css_01_0049.xml", + "uri":"en-us_topic_0000001528499181.html", + "node_id":"en-us_topic_0000001528499181.xml", "product_code":"css", - "code":"147", + "code":"192", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Auditing", @@ -3065,20 +4016,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Auditing", "githuburl":"" }, { - "uri":"css_01_0050.html", - "node_id":"css_01_0050.xml", + "uri":"en-us_topic_0000001528299573.html", + "node_id":"en-us_topic_0000001528299573.xml", "product_code":"css", - "code":"148", + "code":"193", "des":"Cloud Trace Service (CTS) is available on the public cloud platform. With CTS, you can record operations associated with CSS for later query, audit, and backtrack operati", "doc_type":"usermanual", "kw":"Key Operations Recorded by CTS,Auditing,User Guide", @@ -3086,41 +4037,41 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Key Operations Recorded by CTS", "githuburl":"" }, { - "uri":"css_01_0051.html", - "node_id":"css_01_0051.xml", + "uri":"en-us_topic_0000001720964408.html", + "node_id":"en-us_topic_0000001720964408.xml", "product_code":"css", - "code":"149", - "des":"After you enable CTS, it starts recording operations related to CSS. The CTS management console stores the last seven days of operation records. This section describes ho", + "code":"194", + "des":"After you enable CTS and the management tracker is created, CTS starts recording operations on cloud resources. CTS stores operation records generated in the last seven d", "doc_type":"usermanual", - "kw":"Viewing Audit Logs,Auditing,User Guide", + "kw":"Querying Real-Time Traces,Auditing,User Guide", "search_title":"", "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], - "title":"Viewing Audit Logs", + "title":"Querying Real-Time Traces", "githuburl":"" }, { - "uri":"css_02_0001.html", - "node_id":"css_02_0001.xml", + "uri":"en-us_topic_0000001876048066.html", + "node_id":"en-us_topic_0000001876048066.xml", "product_code":"css", - "code":"150", + "code":"195", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"FAQs", @@ -3128,20 +4079,20 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"FAQs", "githuburl":"" }, { - "uri":"css_02_0051.html", - "node_id":"css_02_0051.xml", + "uri":"en-us_topic_0000001477137534.html", + "node_id":"en-us_topic_0000001477137534.xml", "product_code":"css", - "code":"151", + "code":"196", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"General Consulting", @@ -3157,10 +4108,10 @@ "githuburl":"" }, { - "uri":"css_02_0034.html", - "node_id":"css_02_0034.xml", + "uri":"en-us_topic_0000001528097305.html", + "node_id":"en-us_topic_0000001528097305.xml", "product_code":"css", - "code":"152", + "code":"197", "des":"A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.A region is a physical data center. Each ", "doc_type":"usermanual", "kw":"What Are Regions and AZs?,General Consulting,User Guide", @@ -3176,10 +4127,10 @@ "githuburl":"" }, { - "uri":"css_02_0006.html", - "node_id":"css_02_0006.xml", + "uri":"en-us_topic_0000001476977546.html", + "node_id":"en-us_topic_0000001476977546.xml", "product_code":"css", - "code":"153", + "code":"198", "des":"CSS uses network isolation, in addition to various host and data security measures.Network isolationThe entire network is divided into two planes: service plane and manag", "doc_type":"usermanual", "kw":"How Does CSS Ensure Data and Service Security?,General Consulting,User Guide", @@ -3195,10 +4146,10 @@ "githuburl":"" }, { - "uri":"css_02_0007.html", - "node_id":"css_02_0007.xml", + "uri":"en-us_topic_0000001528097297.html", + "node_id":"en-us_topic_0000001528097297.xml", "product_code":"css", - "code":"154", + "code":"199", "des":"Disk usage and cluster health status are two key metrics that you can focus on. You can log in to Cloud Eye and configure alarm rules for these metrics. If alarms are rep", "doc_type":"usermanual", "kw":"Which CSS Metrics Should I Focus On?,General Consulting,User Guide", @@ -3214,10 +4165,10 @@ "githuburl":"" }, { - "uri":"css_02_0008.html", - "node_id":"css_02_0008.xml", + "uri":"en-us_topic_0000001528097293.html", + "node_id":"en-us_topic_0000001528097293.xml", "product_code":"css", - "code":"155", + "code":"200", "des":"CSS uses EVS and local disks to store your indices. During cluster creation, you can specify the EVS disk type and specifications (the EVS disk size).Supported EVS disk t", "doc_type":"usermanual", "kw":"What Storage Options Does CSS Provide?,General Consulting,User Guide", @@ -3233,10 +4184,10 @@ "githuburl":"" }, { - "uri":"css_02_0009.html", - "node_id":"css_02_0009.xml", + "uri":"en-us_topic_0000001527937337.html", + "node_id":"en-us_topic_0000001527937337.xml", "product_code":"css", - "code":"156", + "code":"201", "des":"You can configure up to 200 nodes for a cluster (each node corresponds to an ECS). The maximum storage capacity of an ECS is the total capacity of EVS disks attached to t", "doc_type":"usermanual", "kw":"What Is the Maximum Storage Capacity of CSS?,General Consulting,User Guide", @@ -3252,10 +4203,10 @@ "githuburl":"" }, { - "uri":"css_02_0017.html", - "node_id":"css_02_0017.xml", + "uri":"en-us_topic_0000001477137546.html", + "node_id":"en-us_topic_0000001477137546.xml", "product_code":"css", - "code":"157", + "code":"202", "des":"You can use any of the following three methods to manage CSS or to use search engine APIs. You can initiate requests based on constructed request messages.curlcurl is a c", "doc_type":"usermanual", "kw":"How Can I Manage CSS?,General Consulting,User Guide", @@ -3271,10 +4222,10 @@ "githuburl":"" }, { - "uri":"css_02_0010.html", - "node_id":"css_02_0010.xml", + "uri":"en-us_topic_0000001477297350.html", + "node_id":"en-us_topic_0000001477297350.xml", "product_code":"css", - "code":"158", + "code":"203", "des":"You can store the following logs and files:Log files: Elasticsearch logsData files: Elasticsearch index filesOther files: cluster configuration filesOS: 5% storage space ", "doc_type":"usermanual", "kw":"What Can the Disk Space of a CSS Cluster Be Used For?,General Consulting,User Guide", @@ -3290,10 +4241,10 @@ "githuburl":"" }, { - "uri":"css_02_0093.html", - "node_id":"css_02_0093.xml", + "uri":"en-us_topic_0000001527697797.html", + "node_id":"en-us_topic_0000001527697797.xml", "product_code":"css", - "code":"159", + "code":"204", "des":"Log in to the console.On the Clusters page, click Access Kibana in the Operation column of a cluster.Log in to Kibana and choose Dev Tools.On the Console page, run the GE", "doc_type":"usermanual", "kw":"How Do I Check the Numbers of Shards and Replicas in a Cluster on the CSS Console?,General Consultin", @@ -3309,10 +4260,10 @@ "githuburl":"" }, { - "uri":"css_02_0041.html", - "node_id":"css_02_0041.xml", + "uri":"en-us_topic_0000001477297354.html", + "node_id":"en-us_topic_0000001477297354.xml", "product_code":"css", - "code":"160", + "code":"205", "des":"CSS supports two data compression algorithms: LZ4 (by default) and best_compression.LZ4 algorithmLZ4 is the default compression algorithm of Elasticsearch. This algorithm", "doc_type":"usermanual", "kw":"What Data Compression Algorithms Does CSS Use?,General Consulting,User Guide", @@ -3328,10 +4279,10 @@ "githuburl":"" }, { - "uri":"css_02_0055.html", - "node_id":"css_02_0055.xml", + "uri":"en-us_topic_0000001477137530.html", + "node_id":"en-us_topic_0000001477137530.xml", "product_code":"css", - "code":"161", + "code":"206", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Functions", @@ -3347,10 +4298,10 @@ "githuburl":"" }, { - "uri":"css_02_0058.html", - "node_id":"css_02_0058.xml", + "uri":"en-us_topic_0000001527937341.html", + "node_id":"en-us_topic_0000001527937341.xml", "product_code":"css", - "code":"162", + "code":"207", "des":"Elasticsearch does not support direct data migration between different VPCs. You can use either of the following methods to migrate data.Use the backup and restoration fu", "doc_type":"usermanual", "kw":"Can Elasticsearch Data Be Migrated Between VPCs?,Functions,User Guide", @@ -3366,10 +4317,10 @@ "githuburl":"" }, { - "uri":"css_02_0094.html", - "node_id":"css_02_0094.xml", + "uri":"en-us_topic_0000001528097309.html", + "node_id":"en-us_topic_0000001528097309.xml", "product_code":"css", - "code":"163", + "code":"208", "des":"CSS clusters cannot be directly migrated. You can back up a cluster to an OBS bucket and restore it to a new region.If the OBS bucket is in the same region as your CSS cl", "doc_type":"usermanual", "kw":"How Do I Migrate a CSS Cluster Across Regions?,Functions,User Guide", @@ -3385,10 +4336,10 @@ "githuburl":"" }, { - "uri":"css_02_0096.html", - "node_id":"css_02_0096.xml", + "uri":"en-us_topic_0000001476977558.html", + "node_id":"en-us_topic_0000001476977558.xml", "product_code":"css", - "code":"164", + "code":"209", "des":"The slow query log settings of CSS are the same as those of Elasticsearch. You can configure slow query logs via the _settings API. For example, you can run the following", "doc_type":"usermanual", "kw":"How Do I Configure the Threshold for CSS Slow Query Logs?,Functions,User Guide", @@ -3404,10 +4355,10 @@ "githuburl":"" }, { - "uri":"css_02_0119.html", - "node_id":"css_02_0119.xml", + "uri":"en-us_topic_0000001477297334.html", + "node_id":"en-us_topic_0000001477297334.xml", "product_code":"css", - "code":"165", + "code":"210", "des":"The CSS lifecycle is implemented using the Index State Management (ISM) of Open Distro. For details about how to configure policies related to the ISM template, see the O", "doc_type":"usermanual", "kw":"How Do I Update the CSS Lifecycle Policy?,Functions,User Guide", @@ -3423,10 +4374,10 @@ "githuburl":"" }, { - "uri":"css_02_0118.html", - "node_id":"css_02_0118.xml", + "uri":"en-us_topic_0000001477297358.html", + "node_id":"en-us_topic_0000001477297358.xml", "product_code":"css", - "code":"166", + "code":"211", "des":"Log in to the Kibana page of the cluster. In the navigation pane, choose Dev Tools.Modify and run the PUT /*/_settings{\"number_of_replicas\":0} command.Do not directly run", "doc_type":"usermanual", "kw":"How Do I Set the Numbers of Index Copies to 0 in Batches?,Functions,User Guide", @@ -3442,10 +4393,10 @@ "githuburl":"" }, { - "uri":"css_02_0042.html", - "node_id":"css_02_0042.xml", + "uri":"en-us_topic_0000001527777449.html", + "node_id":"en-us_topic_0000001527777449.xml", "product_code":"css", - "code":"167", + "code":"212", "des":"The possible causes are as follows:Shards were unevenly distributed in previous index allocations, and the predominate parameter in the latest indexed shard allocation wa", "doc_type":"usermanual", "kw":"Why All New Index Shards Are Allocated to the Same Node?,Functions,User Guide", @@ -3461,10 +4412,10 @@ "githuburl":"" }, { - "uri":"css_02_0043.html", - "node_id":"css_02_0043.xml", + "uri":"en-us_topic_0000001527697777.html", + "node_id":"en-us_topic_0000001527697777.xml", "product_code":"css", - "code":"168", + "code":"213", "des":"The snapshot function has been enabled for the cluster and snapshot information has been configured.Log in to the CSS management console, and click Clusters in the naviga", "doc_type":"usermanual", "kw":"How Do I Query Snapshot Information?,Functions,User Guide", @@ -3480,10 +4431,10 @@ "githuburl":"" }, { - "uri":"css_02_0052.html", - "node_id":"css_02_0052.xml", + "uri":"en-us_topic_0000001477137542.html", + "node_id":"en-us_topic_0000001477137542.xml", "product_code":"css", - "code":"169", + "code":"214", "des":"A cluster cannot be directly upgraded. You can purchase a cluster of a later version and migrate your data to it.Creating a Cluster: Create a cluster of a later version i", "doc_type":"usermanual", "kw":"Can I Upgrade a Cluster from an Earlier Version to a Later Version?,Functions,User Guide", @@ -3499,10 +4450,10 @@ "githuburl":"" }, { - "uri":"css_02_0120.html", - "node_id":"css_02_0120.xml", + "uri":"en-us_topic_0000001476817914.html", + "node_id":"en-us_topic_0000001476817914.xml", "product_code":"css", - "code":"170", + "code":"215", "des":"Yes. You can use a snapshot stored in OBS to restore a cluster. A deleted cluster that has no snapshots in OBS cannot be restored. Exercise caution when deleting a cluste", "doc_type":"usermanual", "kw":"Can I Restore a Deleted Cluster?,Functions,User Guide", @@ -3518,10 +4469,10 @@ "githuburl":"" }, { - "uri":"css_02_0101.html", - "node_id":"css_02_0101.xml", + "uri":"en-us_topic_0000001527777437.html", + "node_id":"en-us_topic_0000001527777437.xml", "product_code":"css", - "code":"171", + "code":"216", "des":"You can modify TLS algorithms in CSS 7.6.2 and later versions.Log in to the CSS management console.In the navigation pane, choose Clusters. The cluster list is displayed.", "doc_type":"usermanual", "kw":"Can I Modify the TLS Algorithm of an Elasticsearch Cluster?,Functions,User Guide", @@ -3537,10 +4488,10 @@ "githuburl":"" }, { - "uri":"css_02_0102.html", - "node_id":"css_02_0102.xml", + "uri":"en-us_topic_0000001476817910.html", + "node_id":"en-us_topic_0000001476817910.xml", "product_code":"css", - "code":"172", + "code":"217", "des":"If the query results on shards exceed the upper limit of records that can be returned (default value: 10000), you need to increase the limit by changing the value of sear", "doc_type":"usermanual", "kw":"How Do I Set the search.max_buckets Parameter for an ES Cluster?,Functions,User Guide", @@ -3556,10 +4507,10 @@ "githuburl":"" }, { - "uri":"css_02_0127.html", - "node_id":"css_02_0127.xml", + "uri":"en-us_topic_0000001477137526.html", + "node_id":"en-us_topic_0000001477137526.xml", "product_code":"css", - "code":"173", + "code":"218", "des":"If the value of node.roles of a client node is i, then is this client node an injest node?Are there coordinating only nodes in clusters? Are the client requests distribut", "doc_type":"usermanual", "kw":"Does the Value i of node.roles Indicate an Injest Node?,Functions,User Guide", @@ -3575,10 +4526,10 @@ "githuburl":"" }, { - "uri":"css_02_0132.html", - "node_id":"css_02_0132.xml", + "uri":"en-us_topic_0000001528097313.html", + "node_id":"en-us_topic_0000001528097313.xml", "product_code":"css", - "code":"174", + "code":"219", "des":"In Elasticsearch 7.x and later versions, types cannot be created for indexes.If you need to use types, add include_type_name=true to the command. For example:After the co", "doc_type":"usermanual", "kw":"How Do I Create a Type Under an Index in an Elasticsearch 7.x Cluster?,Functions,User Guide", @@ -3594,10 +4545,10 @@ "githuburl":"" }, { - "uri":"css_02_0063.html", - "node_id":"css_02_0063.xml", + "uri":"en-us_topic_0000001527777433.html", + "node_id":"en-us_topic_0000001527777433.xml", "product_code":"css", - "code":"175", + "code":"220", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Clusters in Security Mode", @@ -3613,10 +4564,10 @@ "githuburl":"" }, { - "uri":"css_02_0064.html", - "node_id":"css_02_0064.xml", + "uri":"en-us_topic_0000001477137538.html", + "node_id":"en-us_topic_0000001477137538.xml", "product_code":"css", - "code":"176", + "code":"221", "des":"Non-security mode: no restrictions.Cluster in security mode: The Filebeat OSS version must match the cluster version. For details on how to download the Filebeat OSS vers", "doc_type":"usermanual", "kw":"What Is the Relationship Between the Filebeat Version and Cluster Version?,Clusters in Security Mode", @@ -3632,10 +4583,10 @@ "githuburl":"" }, { - "uri":"css_02_0106.html", - "node_id":"css_02_0106.xml", + "uri":"en-us_topic_0000001476817894.html", + "node_id":"en-us_topic_0000001476817894.xml", "product_code":"css", - "code":"177", + "code":"222", "des":"The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access.Log in to the CSS management console.In the ", "doc_type":"usermanual", "kw":"How Do I Obtain the Security Certificate of CSS?,Clusters in Security Mode,User Guide", @@ -3651,10 +4602,10 @@ "githuburl":"" }, { - "uri":"css_02_0128.html", - "node_id":"css_02_0128.xml", + "uri":"en-us_topic_0000001476817906.html", + "node_id":"en-us_topic_0000001476817906.xml", "product_code":"css", - "code":"178", + "code":"223", "des":"The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access. Most software supports certificates in the ", "doc_type":"usermanual", "kw":"How Do I Convert the Format of a CER Security Certificate?,Clusters in Security Mode,User Guide", @@ -3670,10 +4621,10 @@ "githuburl":"" }, { - "uri":"css_02_0066.html", - "node_id":"css_02_0066.xml", + "uri":"en-us_topic_0000001527697785.html", + "node_id":"en-us_topic_0000001527697785.xml", "product_code":"css", - "code":"179", + "code":"224", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Resource Usage and Change", @@ -3689,10 +4640,10 @@ "githuburl":"" }, { - "uri":"css_02_0067.html", - "node_id":"css_02_0067.xml", + "uri":"en-us_topic_0000001528097289.html", + "node_id":"en-us_topic_0000001528097289.xml", "product_code":"css", - "code":"180", + "code":"225", "des":"Run the following command to delete a single index data record.curl -XDELETE http://IP:9200/Index_nameIP: the IP address of any node in the clustercurl -XDELETE http://", "doc_type":"usermanual", "kw":"How Do I Clear Expired Data to Release Storage Space?,Resource Usage and Change,User Guide", @@ -3708,10 +4659,10 @@ "githuburl":"" }, { - "uri":"css_02_0068.html", - "node_id":"css_02_0068.xml", + "uri":"en-us_topic_0000001527937333.html", + "node_id":"en-us_topic_0000001527937333.xml", "product_code":"css", - "code":"181", + "code":"226", "des":"Run GET _cat/indices?v in Kibana to check the number of cluster replicas. If the value of rep is 1, the cluster has two replicas.If the value of rep is not 1, run the fol", "doc_type":"usermanual", "kw":"How Do I Configure a Two-Replica CSS Cluster?,Resource Usage and Change,User Guide", @@ -3727,10 +4678,10 @@ "githuburl":"" }, { - "uri":"css_02_0069.html", - "node_id":"css_02_0069.xml", + "uri":"en-us_topic_0000001527777445.html", + "node_id":"en-us_topic_0000001527777445.xml", "product_code":"css", - "code":"182", + "code":"227", "des":"Manually: Run the DELETE /my_index command in Kibana.Automatically: Create scheduled tasks to call the index deletion request and periodically execute the tasks. CSS supp", "doc_type":"usermanual", "kw":"How Do I Delete Index Data?,Resource Usage and Change,User Guide", @@ -3746,10 +4697,10 @@ "githuburl":"" }, { - "uri":"css_02_0089.html", - "node_id":"css_02_0089.xml", + "uri":"en-us_topic_0000001476977562.html", + "node_id":"en-us_topic_0000001476977562.xml", "product_code":"css", - "code":"183", + "code":"228", "des":"Once an index is created, the number of primary shards cannot be changed.You can run the following command in Kibana to change the number of replicas:index specifies the ", "doc_type":"usermanual", "kw":"Can I Change the Number of Shards to Four with Two Replicas When There Is One Shard Set in the JSON ", @@ -3765,10 +4716,10 @@ "githuburl":"" }, { - "uri":"css_02_0124.html", - "node_id":"css_02_0124.xml", + "uri":"en-us_topic_0000001476977554.html", + "node_id":"en-us_topic_0000001476977554.xml", "product_code":"css", - "code":"184", + "code":"229", "des":"A large number of shards in a cluster slows down shard creation.If automatic index creation is enabled, slow index creation may cause a large number of write requests to ", "doc_type":"usermanual", "kw":"What Are the Impacts If an Elasticsearch Cluster Has Too Many Shards?,Resource Usage and Change,User", @@ -3784,10 +4735,10 @@ "githuburl":"" }, { - "uri":"css_02_0125.html", - "node_id":"css_02_0125.xml", + "uri":"en-us_topic_0000001527697781.html", + "node_id":"en-us_topic_0000001527697781.xml", "product_code":"css", - "code":"185", + "code":"230", "des":"Method 1Open Kibana and run the following commands on the Dev Tools page:PUT _all/_settings?preserve_existing=true\n{\n\"index.max_result_window\" : \"10000000\"\n}Open Kibana a", "doc_type":"usermanual", "kw":"How Do I Set the Default Maximum Number of Records Displayed on a Page for an Elasticsearch Cluster,", @@ -3803,10 +4754,10 @@ "githuburl":"" }, { - "uri":"css_02_0126.html", - "node_id":"css_02_0126.xml", + "uri":"en-us_topic_0000001527777425.html", + "node_id":"en-us_topic_0000001527777425.xml", "product_code":"css", - "code":"186", + "code":"231", "des":"Running the delete_by_query command can only add a deletion mark to the target data instead of really deleting it. When you search for data, all data is searched and the ", "doc_type":"usermanual", "kw":"Why Does the Disk Usage Increase After the delete_by_query Command Was Executed to Delete Data?,Reso", @@ -3822,10 +4773,10 @@ "githuburl":"" }, { - "uri":"css_02_0130.html", - "node_id":"css_02_0130.xml", + "uri":"en-us_topic_0000001528097317.html", + "node_id":"en-us_topic_0000001528097317.xml", "product_code":"css", - "code":"187", + "code":"232", "des":"Clear the fielddataDuring aggregation and sorting, data are converted to the fielddata structure, which occupies a large amount of memory.Run the following commands on Ki", "doc_type":"usermanual", "kw":"How Do I Clear the Cache of a CSS Cluster?,Resource Usage and Change,User Guide", @@ -3841,10 +4792,10 @@ "githuburl":"" }, { - "uri":"css_02_0131.html", - "node_id":"css_02_0131.xml", + "uri":"en-us_topic_0000001527777429.html", + "node_id":"en-us_topic_0000001527777429.xml", "product_code":"css", - "code":"188", + "code":"233", "des":"The cluster monitoring result shows that the average memory usage of a cluster is 98%. Does it affect cluster performance?In an ES cluster, 50% of the memory is occupied ", "doc_type":"usermanual", "kw":"The Average Memory Usage of an Elasticsearch Cluster Reaches 98%,Resource Usage and Change,User Guid", @@ -3860,10 +4811,10 @@ "githuburl":"" }, { - "uri":"css_02_0070.html", - "node_id":"css_02_0070.xml", + "uri":"en-us_topic_0000001527697789.html", + "node_id":"en-us_topic_0000001527697789.xml", "product_code":"css", - "code":"189", + "code":"234", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Components", @@ -3879,10 +4830,10 @@ "githuburl":"" }, { - "uri":"css_02_0088.html", - "node_id":"css_02_0088.xml", + "uri":"en-us_topic_0000001476977550.html", + "node_id":"en-us_topic_0000001476977550.xml", "product_code":"css", - "code":"190", + "code":"235", "des":"CSS does not currently support installation of Search Guard.CSS provides clusters in security mode, which have the same functions as Search Guard.", "doc_type":"usermanual", "kw":"Can I Install Search Guard on CSS?,Components,User Guide", @@ -3898,10 +4849,10 @@ "githuburl":"" }, { - "uri":"css_02_0073.html", - "node_id":"css_02_0073.xml", + "uri":"en-us_topic_0000001527937345.html", + "node_id":"en-us_topic_0000001527937345.xml", "product_code":"css", - "code":"191", + "code":"236", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Kibana", @@ -3917,10 +4868,10 @@ "githuburl":"" }, { - "uri":"css_02_0098.html", - "node_id":"css_02_0098.xml", + "uri":"en-us_topic_0000001527937329.html", + "node_id":"en-us_topic_0000001527937329.xml", "product_code":"css", - "code":"192", + "code":"237", "des":"Exporting data from Kibana requires the SQL Workbench plugin. Currently, you can only export data from Kibana 7.6.2 or later.In SQL Workbench of Kibana, you can enter Ela", "doc_type":"usermanual", "kw":"Can I Export Data from Kibana?,Kibana,User Guide", @@ -3936,10 +4887,10 @@ "githuburl":"" }, { - "uri":"css_02_0099.html", - "node_id":"css_02_0099.xml", + "uri":"en-us_topic_0000001527777441.html", + "node_id":"en-us_topic_0000001527777441.xml", "product_code":"css", - "code":"193", + "code":"238", "des":"Run the following command to query index data through an API on Kibana:The returned data is shown in the following figure.took: How many milliseconds the query cost.time_", "doc_type":"usermanual", "kw":"How Do I Query Index Data on Kibana in an ES Cluster?,Kibana,User Guide", @@ -3955,10 +4906,10 @@ "githuburl":"" }, { - "uri":"css_02_0077.html", - "node_id":"css_02_0077.xml", + "uri":"en-us_topic_0000001476817902.html", + "node_id":"en-us_topic_0000001476817902.xml", "product_code":"css", - "code":"194", + "code":"239", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Clusters", @@ -3974,10 +4925,10 @@ "githuburl":"" }, { - "uri":"css_02_0025.html", - "node_id":"css_02_0025.xml", + "uri":"en-us_topic_0000001476977542.html", + "node_id":"en-us_topic_0000001476977542.xml", "product_code":"css", - "code":"195", + "code":"240", "des":"Perform the following steps to troubleshoot this problem:Check whether the ECS instance and cluster are in the same VPC.If they are, go to 2.If they are not, create an EC", "doc_type":"usermanual", "kw":"Why Does My ECS Fail to Connect to a Cluster?,Clusters,User Guide", @@ -3993,10 +4944,10 @@ "githuburl":"" }, { - "uri":"css_02_0078.html", - "node_id":"css_02_0078.xml", + "uri":"en-us_topic_0000001477297362.html", + "node_id":"en-us_topic_0000001477297362.xml", "product_code":"css", - "code":"196", + "code":"241", "des":"No.", "doc_type":"usermanual", "kw":"Can a New Cluster Use the IP Address of the Old Cluster?,Clusters,User Guide", @@ -4012,10 +4963,10 @@ "githuburl":"" }, { - "uri":"css_02_0079.html", - "node_id":"css_02_0079.xml", + "uri":"en-us_topic_0000001477297338.html", + "node_id":"en-us_topic_0000001477297338.xml", "product_code":"css", - "code":"197", + "code":"242", "des":"No. To access a cluster from the Internet, see Public IP Address Access.", "doc_type":"usermanual", "kw":"Can I Associate My EIP If I Want to Access the Cluster from the Internet?,Clusters,User Guide", @@ -4031,10 +4982,10 @@ "githuburl":"" }, { - "uri":"css_02_0081.html", - "node_id":"css_02_0081.xml", + "uri":"en-us_topic_0000001477297346.html", + "node_id":"en-us_topic_0000001477297346.xml", "product_code":"css", - "code":"198", + "code":"243", "des":"No. Currently, CSS does not integrate the x-pack component.", "doc_type":"usermanual", "kw":"Can I Use x-pack-sql-jdbc to Access CSS Clusters and Query Data?,Clusters,User Guide", @@ -4050,10 +5001,10 @@ "githuburl":"" }, { - "uri":"css_02_0082.html", - "node_id":"css_02_0082.xml", + "uri":"en-us_topic_0000001476817918.html", + "node_id":"en-us_topic_0000001476817918.xml", "product_code":"css", - "code":"199", + "code":"244", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Ports", @@ -4069,10 +5020,10 @@ "githuburl":"" }, { - "uri":"css_02_0083.html", - "node_id":"css_02_0083.xml", + "uri":"en-us_topic_0000001527697793.html", + "node_id":"en-us_topic_0000001527697793.xml", "product_code":"css", - "code":"200", + "code":"245", "des":"Yes. Port 9200 is used by external systems to access CSS clusters, and port 9300 is used for communication between nodes.The methods for accessing port 9300 are as follow", "doc_type":"usermanual", "kw":"Do Ports 9200 and 9300 Both Open?,Ports,User Guide", @@ -4088,10 +5039,10 @@ "githuburl":"" }, { - "uri":"css_02_0201.html", - "node_id":"css_02_0201.xml", + "uri":"en-us_topic_0000001562137917.html", + "node_id":"en-us_topic_0000001562137917.xml", "product_code":"css", - "code":"201", + "code":"246", "des":"Currently to access Kibana dashboard of CSS Service, a user has to login to OTC consoleand navigate to Kibana login page.To make the access convenient a user can utilize ", "doc_type":"usermanual", "kw":"How to access Kibana from outside cloud using ELB?,Ports,User Guide", @@ -4107,10 +5058,10 @@ "githuburl":"" }, { - "uri":"css_01_0055.html", - "node_id":"css_01_0055.xml", + "uri":"en-us_topic_0000001477899216.html", + "node_id":"en-us_topic_0000001477899216.xml", "product_code":"css", - "code":"202", + "code":"247", "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "doc_type":"usermanual", "kw":"Change History,User Guide", @@ -4118,10 +5069,10 @@ "metedata":[ { "prodname":"css", - "IsMulti":"No", - "opensource":"true", "documenttype":"usermanual", - "IsBot":"Yes" + "IsMulti":"yes", + "opensource":"true", + "IsBot":"yes" } ], "title":"Change History", diff --git a/docs/css/umn/CLASS.TXT.json b/docs/css/umn/CLASS.TXT.json index 7a7bb5cd..42296a8a 100644 --- a/docs/css/umn/CLASS.TXT.json +++ b/docs/css/umn/CLASS.TXT.json @@ -2,8 +2,8 @@ { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"Overview", - "uri":"css_01_0001.html", + "title":"Product Overview", + "uri":"en-us_topic_0000001921967557.html", "doc_type":"usermanual", "p_code":"", "code":"1" @@ -12,7 +12,7 @@ "desc":"Cloud Search Service (CSS) is a fully hosted distributed search service based on Elasticsearch. You can use it for structured and unstructured data search, and use AI vec", "product_code":"css", "title":"What Is Cloud Search Service?", - "uri":"css_04_0001.html", + "uri":"en-us_topic_0000001667545170.html", "doc_type":"usermanual", "p_code":"1", "code":"2" @@ -21,7 +21,7 @@ "desc":"CSS has the following features and advantages.You can get insights from terabyte-scale data in milliseconds. In addition, you can use the visualized platform for data dis", "product_code":"css", "title":"Advantages", - "uri":"css_04_0010.html", + "uri":"en-us_topic_0000001667704890.html", "doc_type":"usermanual", "p_code":"1", "code":"3" @@ -30,7 +30,7 @@ "desc":"CSS supports Kibana and Cerebro.Kibana is an open-source data analytics and visualization platform that works with Elasticsearch. You can use Kibana to search for and vie", "product_code":"css", "title":"Product Components", - "uri":"css_04_0007.html", + "uri":"en-us_topic_0000001667704882.html", "doc_type":"usermanual", "p_code":"1", "code":"4" @@ -39,7 +39,7 @@ "desc":"CSS can be used to build search boxes for websites and apps to improve user experience. You can also build a log analysis platform with it, facilitating data-driven O&M a", "product_code":"css", "title":"Scenarios", - "uri":"css_04_0002.html", + "uri":"en-us_topic_0000001715704493.html", "doc_type":"usermanual", "p_code":"1", "code":"5" @@ -48,7 +48,7 @@ "desc":"If you need to assign different permissions to employees in your organization to access your CSS resources, IAM is a good choice for fine-grained permissions management. ", "product_code":"css", "title":"Permissions Management", - "uri":"css_04_0014.html", + "uri":"en-us_topic_0000001715624665.html", "doc_type":"usermanual", "p_code":"1", "code":"6" @@ -57,7 +57,7 @@ "desc":"The following table describes restrictions on clusters and nodes in CSS.You are advised to use the following browsers to access the CSS management console:Google Chrome 3", "product_code":"css", "title":"Constraints", - "uri":"css_04_0005.html", + "uri":"en-us_topic_0000001715624677.html", "doc_type":"usermanual", "p_code":"1", "code":"7" @@ -66,7 +66,7 @@ "desc":"CSS uses the following resources:InstanceCPUMemory (GB)Disk quantityDisk size (GB)", "product_code":"css", "title":"Quotas", - "uri":"css_04_0019.html", + "uri":"en-us_topic_0000001667545182.html", "doc_type":"usermanual", "p_code":"1", "code":"8" @@ -75,7 +75,7 @@ "desc":"Figure 1 shows the relationships between CSS and other services.", "product_code":"css", "title":"Related Services", - "uri":"css_04_0004.html", + "uri":"en-us_topic_0000001715624661.html", "doc_type":"usermanual", "p_code":"1", "code":"9" @@ -84,7 +84,7 @@ "desc":"CSS provides functions on a per cluster basis. A cluster represents an independent search service that consists of multiple nodes.An index stores Elasticsearch data. It i", "product_code":"css", "title":"Basic Concepts", - "uri":"css_04_0012.html", + "uri":"en-us_topic_0000001715624649.html", "doc_type":"usermanual", "p_code":"1", "code":"10" @@ -93,7 +93,7 @@ "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", "title":"Getting Started", - "uri":"css_01_0006.html", + "uri":"en-us_topic_0000001477739396.html", "doc_type":"usermanual", "p_code":"", "code":"11" @@ -102,7 +102,7 @@ "desc":"This section describes how to use Elasticsearch for product search. You can use the Elasticsearch search engine of CSS to search for data based on the scenario example. T", "product_code":"css", "title":"Getting Started with Elasticsearch", - "uri":"css_01_0007.html", + "uri":"en-us_topic_0000001528379317.html", "doc_type":"usermanual", "p_code":"11", "code":"12" @@ -111,7 +111,7 @@ "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", "title":"Permissions Management", - "uri":"css_01_0070.html", + "uri":"en-us_topic_0000001477419768.html", "doc_type":"usermanual", "p_code":"", "code":"13" @@ -120,7 +120,7 @@ "desc":"This section describes how to use a group to grant permissions to a user. Figure 1 shows the process for granting permissions.CSS has two types of user permissions: CSS a", "product_code":"css", "title":"Creating a User and Granting Permissions", - "uri":"css_01_0072.html", + "uri":"en-us_topic_0000001477419752.html", "doc_type":"usermanual", "p_code":"13", "code":"14" @@ -129,1692 +129,2097 @@ "desc":"Custom policies can be created to supplement the system-defined policies of CSS. For the actions supported for custom policies, see section \"Permissions Policies and Supp", "product_code":"css", "title":"CSS Custom Policies", - "uri":"css_01_0086.html", + "uri":"en-us_topic_0000001477899148.html", "doc_type":"usermanual", "p_code":"13", "code":"15" }, { - "desc":"On the Dashboard page of the CSS management console, you can view information about the status and storage capacity of existing clusters.", + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"Viewing the Cluster Runtime Status and Storage Capacity Status", - "uri":"css_01_0053.html", + "title":"Elasticsearch", + "uri":"en-us_topic_0000001504911882.html", "doc_type":"usermanual", "p_code":"", "code":"16" }, { - "desc":"The cluster list displays all CSS clusters. If there are a large number of clusters, these clusters will be displayed on multiple pages. You can view clusters of all stat", + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"Cluster List Overview", - "uri":"css_01_0056.html", + "title":"Creating a Cluster", + "uri":"en-us_topic_0000001477899180.html", "doc_type":"usermanual", - "p_code":"", + "p_code":"16", "code":"17" }, { - "desc":"To prevent data loss and minimize the cluster downtime in case of service interruption, CSS supports cross-AZ cluster deployment. When creating a cluster, you can select ", + "desc":"This section describes how to create an Elasticsearch cluster in security mode.Public IP address access and Kibana public access can be used only after security mode is e", "product_code":"css", - "title":"Deploying a Cross-AZ Cluster", - "uri":"css_01_0188.html", + "title":"Creating a Cluster in Security Mode", + "uri":"en-us_topic_0000001477739344.html", "doc_type":"usermanual", - "p_code":"", + "p_code":"17", "code":"18" }, { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "desc":"This section describes how to create an Elasticsearch cluster in non-security mode.Log in to the CSS management console.On the Dashboard page, click Create Cluster in the", "product_code":"css", - "title":"Elasticsearch", - "uri":"css_01_0207.html", + "title":"Creating a Cluster in Non-Security Mode", + "uri":"en-us_topic_0000001477899172.html", "doc_type":"usermanual", - "p_code":"", + "p_code":"17", "code":"19" }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Managing Elasticsearch Clusters", - "uri":"css_01_0009.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"20" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Creating an Elasticsearch Cluster", - "uri":"css_01_0008.html", - "doc_type":"usermanual", - "p_code":"20", - "code":"21" - }, { "desc":"When creating an Elasticsearch cluster, you can enable the security mode for it. Identity authentication is required when users access a security cluster. You can also au", "product_code":"css", "title":"Clusters in Security Mode", - "uri":"css_01_0189.html", + "uri":"en-us_topic_0000001528659093.html", "doc_type":"usermanual", - "p_code":"21", + "p_code":"17", + "code":"20" + }, + { + "desc":"To prevent data loss and minimize the cluster downtime in case of service interruption, CSS supports cross-AZ cluster deployment. When creating a cluster, you can select ", + "product_code":"css", + "title":"Deploying a Cross-AZ Cluster", + "uri":"en-us_topic_0000001477419724.html", + "doc_type":"usermanual", + "p_code":"17", + "code":"21" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Importing Data", + "uri":"en-us_topic_0000001528379277.html", + "doc_type":"usermanual", + "p_code":"16", "code":"22" }, - { - "desc":"This section describes how to create an Elasticsearch cluster in security mode.Public IP address access and Kibana public access can be used only after security mode is e", - "product_code":"css", - "title":"Creating an Elasticsearch Cluster in Security Mode", - "uri":"css_01_0011.html", - "doc_type":"usermanual", - "p_code":"21", - "code":"23" - }, - { - "desc":"This section describes how to create an Elasticsearch cluster in non-security mode.Log in to the CSS management console.On the Dashboard page, click Create Cluster in the", - "product_code":"css", - "title":"Creating an Elasticsearch Cluster in Non-Security Mode", - "uri":"css_01_0094.html", - "doc_type":"usermanual", - "p_code":"21", - "code":"24" - }, - { - "desc":"On the Cluster Information page, you can view the information about a cluster, including the private network address, public IP address, version, and node.Log in to the C", - "product_code":"css", - "title":"Viewing Basic Information About an Elasticsearch Cluster", - "uri":"css_01_0185.html", - "doc_type":"usermanual", - "p_code":"20", - "code":"25" - }, - { - "desc":"Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.You can add tags to a cluster when creating the cluster or a", - "product_code":"css", - "title":"Managing Tags", - "uri":"css_01_0075.html", - "doc_type":"usermanual", - "p_code":"20", - "code":"26" - }, - { - "desc":"You can create enterprise projects based on your organizational structure. Then you can manage resources across different regions by enterprise project, add users and use", - "product_code":"css", - "title":"Binding an Enterprise Project", - "uri":"css_01_0058.html", - "doc_type":"usermanual", - "p_code":"20", - "code":"27" - }, - { - "desc":"If a cluster becomes faulty, you can restart it to check if it can run normally.The target cluster is not frozen and has no task in progress.If a cluster is available, en", - "product_code":"css", - "title":"Restarting a Cluster", - "uri":"css_01_0014.html", - "doc_type":"usermanual", - "p_code":"20", - "code":"28" - }, - { - "desc":"You can delete clusters that you no longer need.If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.The sna", - "product_code":"css", - "title":"Deleting a Cluster", - "uri":"css_01_0015.html", - "doc_type":"usermanual", - "p_code":"20", - "code":"29" - }, - { - "desc":"In the Failed Tasks dialog box, you can view the failed tasks related to a cluster, such as failing to create, restart, scale out, back up, or restore a cluster. In addit", - "product_code":"css", - "title":"Managing Failed Tasks", - "uri":"css_01_0060.html", - "doc_type":"usermanual", - "p_code":"20", - "code":"30" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Accessing an Elasticsearch Cluster", - "uri":"css_01_0210.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"31" - }, - { - "desc":"Elasticsearch clusters have built-in Kibana and Cerebro components. You can quickly access an Elasticsearch cluster through Kibana and Cerebro.Log in to the CSS managemen", - "product_code":"css", - "title":"Accessing an Elasticsearch Cluster", - "uri":"css_01_0190.html", - "doc_type":"usermanual", - "p_code":"31", - "code":"32" - }, - { - "desc":"You can access a security cluster (Elasticsearch clusters in version 6.5.4 or later support the security mode) that has the HTTPS access enabled through the public IP add", - "product_code":"css", - "title":"Accessing a Cluster from a Public Network", - "uri":"css_01_0076.html", - "doc_type":"usermanual", - "p_code":"31", - "code":"33" - }, - { - "desc":"If the VPC endpoint service is enabled, you can use a private domain name or node IP address generated by the endpoint to access the cluster. When the VPC endpoint servic", - "product_code":"css", - "title":"Accessing a Cluster Using a VPC Endpoint", - "uri":"css_01_0082.html", - "doc_type":"usermanual", - "p_code":"31", - "code":"34" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"(Optional) Interconnecting with a Dedicated Load Balancer", - "uri":"css_01_0184.html", - "doc_type":"usermanual", - "p_code":"31", - "code":"35" - }, - { - "desc":"CSS integrates shared load balancers and allows you to bind public network access and enable the VPC Endpoint service. Dedicated load balancers provide more functions and", - "product_code":"css", - "title":"Scenario", - "uri":"css_01_0181.html", - "doc_type":"usermanual", - "p_code":"35", - "code":"36" - }, - { - "desc":"This section describes how to connect a CSS cluster to a dedicated load balancer.If the target ELB listener uses the HTTP protocol, skip this step.Prepare and upload a se", - "product_code":"css", - "title":"Connecting to a Dedicated Load Balancer", - "uri":"css_01_0182.html", - "doc_type":"usermanual", - "p_code":"35", - "code":"37" - }, - { - "desc":"This section provides the sample code for two-way authentication during the access to a cluster from a Java client.", - "product_code":"css", - "title":"Sample Code for Two-Way Authentication During the Access to a Cluster", - "uri":"css_01_0183.html", - "doc_type":"usermanual", - "p_code":"35", - "code":"38" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Index Backup and Restoration", - "uri":"css_01_0269.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"39" - }, - { - "desc":"You can back up index data in clusters. If data loss occurs or you want to retrieve data of a specified duration, you can restore the index data. Index backup is implemen", - "product_code":"css", - "title":"Backup and Restoration Overview", - "uri":"css_01_0033.html", - "doc_type":"usermanual", - "p_code":"39", - "code":"40" - }, - { - "desc":"Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and", - "product_code":"css", - "title":"Managing Automatic Snapshot Creation", - "uri":"css_01_0267.html", - "doc_type":"usermanual", - "p_code":"39", - "code":"41" - }, - { - "desc":"You can manually create a snapshot at any time to back up all data or data of specified indexes.To use the function of creating or restoring snapshots, the account or IAM", - "product_code":"css", - "title":"Manually Creating a Snapshot", - "uri":"css_01_0268.html", - "doc_type":"usermanual", - "p_code":"39", - "code":"42" - }, - { - "desc":"You can use existing snapshots to restore the backup index data to a specified cluster.To use the function of creating or restoring snapshots, the account or IAM user log", - "product_code":"css", - "title":"Restoring Data", - "uri":"css_01_0266.html", - "doc_type":"usermanual", - "p_code":"39", - "code":"43" - }, - { - "desc":"If you no longer need a snapshot, delete it to release storage resources. If the automatic snapshot creation function is enabled, snapshots that are automatically created", - "product_code":"css", - "title":"Deleting a Snapshot", - "uri":"css_01_0271.html", - "doc_type":"usermanual", - "p_code":"39", - "code":"44" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Changing the Elasticsearch Cluster Form", - "uri":"css_01_0149.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"45" - }, - { - "desc":"You can scale in or out a cluster and change cluster specifications. In this way, you can improve cluster efficiency and reduce O&M costs.Scaling Out a ClusterIf a data n", - "product_code":"css", - "title":"Overview", - "uri":"css_01_0150.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"46" - }, - { - "desc":"If the workloads on the data plane of a cluster change, you can scale out the cluster by increasing the number or capacity of its nodes. Services are not interrupted duri", - "product_code":"css", - "title":"Scaling Out a Cluster", - "uri":"css_01_0151.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"47" - }, - { - "desc":"If the workloads on the data plane of a cluster change, you can change its node specifications as needed.The target cluster is available and has no tasks in progress.The ", - "product_code":"css", - "title":"Changing Specifications", - "uri":"css_01_0152.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"48" - }, - { - "desc":"If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. Services are not interrupted during cluster scale-", - "product_code":"css", - "title":"Scaling in a Cluster", - "uri":"css_01_0153.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"49" - }, - { - "desc":"If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs. Services will not be in", - "product_code":"css", - "title":"Removing Specified Nodes", - "uri":"css_01_0154.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"50" - }, - { - "desc":"If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.The target cluster is available and has no tasks in progress.Only", - "product_code":"css", - "title":"Replacing a Specified Node", - "uri":"css_01_0156.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"51" - }, - { - "desc":"If workloads on the data plane of a cluster increase, you can add master or client nodes as needed. Services are not interrupted while they are added.The target cluster i", - "product_code":"css", - "title":"Adding Master/Client Nodes", - "uri":"css_01_0157.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"52" - }, - { - "desc":"After a cluster is created, its security mode can be changed using the following methods:Switching from the Non-Security Mode to Security ModeSwitching from the Security ", - "product_code":"css", - "title":"Changing the Security Mode", - "uri":"css_01_0158.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"53" - }, - { - "desc":"CSS supports cross-AZ deployment. You can add an AZ to obtain more resources or improve cluster availability, and can migrate your current AZ to one with higher specifica", - "product_code":"css", - "title":"Changing AZs", - "uri":"css_01_0201.html", - "doc_type":"usermanual", - "p_code":"45", - "code":"54" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Configuring an Elasticsearch Cluster", - "uri":"css_01_0211.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"55" - }, - { - "desc":"You can modify the elasticsearch.yml file.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, click the name of the target ", - "product_code":"css", - "title":"Configuring YML Parameters", - "uri":"css_01_0080.html", - "doc_type":"usermanual", - "p_code":"55", - "code":"56" - }, - { - "desc":"CSS provides you with cold data nodes. You can store data that requires query response in seconds on high-performance nodes and store data that requires query response in", - "product_code":"css", - "title":"Hot and Cold Data Node Switchover", - "uri":"css_01_0079.html", - "doc_type":"usermanual", - "p_code":"55", - "code":"57" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Managing Indexes", - "uri":"css_01_0091.html", - "doc_type":"usermanual", - "p_code":"55", - "code":"58" - }, - { - "desc":"Clusters of version 7.6.2 or later support index status management. ISM is a plugin that allows you to automate periodic and administrative operations based on changes on", - "product_code":"css", - "title":"Creating and Managing Indexes", - "uri":"css_01_0093.html", - "doc_type":"usermanual", - "p_code":"58", - "code":"59" - }, - { - "desc":"You can change any managed index policy. ISM has constraints to ensure that policy changes do not break indexes.If an index is stuck in its current status, never proceedi", - "product_code":"css", - "title":"Changing Policies", - "uri":"css_01_0092.html", - "doc_type":"usermanual", - "p_code":"58", - "code":"60" - }, - { - "desc":"CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate ", - "product_code":"css", - "title":"Managing Logs", - "uri":"css_01_0077.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"61" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Managing Plugins", - "uri":"css_01_0212.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"62" - }, - { - "desc":"CSS clusters have default plugins. You can view the default plugin information on the console or Kibana.Log in to the CSS management console.In the navigation pane, choos", - "product_code":"css", - "title":"Viewing the Default Plugin List", - "uri":"css_01_0078.html", - "doc_type":"usermanual", - "p_code":"62", - "code":"63" - }, - { - "desc":"For Elasticsearch 6.5.4 and later versions, Open Distro for Elasticsearch SQL lets you write queries in SQL rather than in the Elasticsearch query domain-specific languag", - "product_code":"css", - "title":"Using the Open Distro SQL Plugin", - "uri":"css_01_0061.html", - "doc_type":"usermanual", - "p_code":"62", - "code":"64" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Kibana Platform", - "uri":"css_01_0107.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"65" - }, - { - "desc":"You can customize the username, role name, and tenant name in Kibana.", - "product_code":"css", - "title":"Kibana Usage Restrictions", - "uri":"css_01_0125.html", - "doc_type":"usermanual", - "p_code":"65", - "code":"66" - }, - { - "desc":"After creating a CSS cluster, you can log in to Kibana through the console or public network.Logging in to the consoleLog in to the CSS management console.On the Clusters", - "product_code":"css", - "title":"Logging In to Kibana", - "uri":"css_01_0108.html", - "doc_type":"usermanual", - "p_code":"65", - "code":"67" - }, - { - "desc":"For CSS clusters that have security mode enabled, you can enable Kibana public access. After the configuration is complete, an IP address will be provided to access Kiban", - "product_code":"css", - "title":"Accessing a Cluster from a Kibana Public Network", - "uri":"css_01_0088.html", - "doc_type":"usermanual", - "p_code":"65", - "code":"68" - }, - { - "desc":"CSS uses the opendistro_security plug-in to provide security cluster capabilities. The opendistro_security plug-in is built based on the RBAC model. RBAC involves three c", - "product_code":"css", - "title":"Creating a User and Granting Permissions by Using Kibana", - "uri":"css_01_0109.html", - "doc_type":"usermanual", - "p_code":"65", - "code":"69" - }, - { - "desc":"To interconnect user-built Kibana with CSS Elasticsearch clusters, the following conditions must be met:The local environment must support access from external networks.K", - "product_code":"css", - "title":"Connecting User-Built Kibana to an Elasticsearch Cluster", - "uri":"css_02_0097.html", - "doc_type":"usermanual", - "p_code":"65", - "code":"70" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Enhanced Cluster Features", - "uri":"css_01_0111.html", - "doc_type":"usermanual", - "p_code":"19", - "code":"71" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Vector Retrieval", - "uri":"css_01_0117.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"72" - }, - { - "desc":"Image recognition and retrieval, video search, and personalized recommendation impose high requirements on the latency and accuracy of high-dimensional space vector retri", - "product_code":"css", - "title":"Description", - "uri":"css_01_0118.html", - "doc_type":"usermanual", - "p_code":"72", - "code":"73" - }, - { - "desc":"Off-heap memory is used for index construction and query in vector retrieval. Therefore, the required cluster capacity is related to the index type and off-heap memory si", - "product_code":"css", - "title":"Cluster Planning for Vector Retrieval", - "uri":"css_01_0122.html", - "doc_type":"usermanual", - "p_code":"72", - "code":"74" - }, - { - "desc":"A cluster of version 7.6.2 or 7.10.2 has been created by referring to Cluster Planning for Vector Retrieval.Cluster advanced settings have been configured as required by ", - "product_code":"css", - "title":"Creating a Vector Index", - "uri":"css_01_0121.html", - "doc_type":"usermanual", - "p_code":"72", - "code":"75" - }, - { - "desc":"Standard vector query syntax is provided for vector fields with vector indexes. The following command will return n (specified by size/topk) data records that are most cl", - "product_code":"css", - "title":"Querying Vectors", - "uri":"css_01_0123.html", - "doc_type":"usermanual", - "p_code":"72", - "code":"76" - }, - { - "desc":"To reduce the cost of backup, disable the backup function before data import and enable it afterwards.Set refresh_interval to 120s or a larger value. Larger segments can ", - "product_code":"css", - "title":"Optimizing the Performance of Vector Retrieval", - "uri":"css_01_0126.html", - "doc_type":"usermanual", - "p_code":"72", - "code":"77" - }, - { - "desc":"When you perform operations in Creating a Vector Index, if IVF_GRAPH and IVF_GRAPH_PQ index algorithms are selected, you need to pre-build and register the center point v", - "product_code":"css", - "title":"(Optional) Pre-Building and Registering a Center Point Vector", - "uri":"css_01_0124.html", - "doc_type":"usermanual", - "p_code":"72", - "code":"78" - }, - { - "desc":"The vector retrieval engine is developed in C++ and uses off-heap memory. You can use the following APIs to manage the index cache.View cache statistics.GET /_vector/stat", - "product_code":"css", - "title":"Managing the Vector Index Cache", - "uri":"css_01_0130.html", - "doc_type":"usermanual", - "p_code":"72", - "code":"79" - }, - { - "desc":"Elasticsearch provides standard REST APIs and clients developed using Java, Python, and Go.Based on the open-source dataset SIFT1M (http://corpus-texmex.irisa.fr/) and Py", - "product_code":"css", - "title":"Sample Code for Vector Search on a Client", - "uri":"css_01_0129.html", - "doc_type":"usermanual", - "p_code":"72", - "code":"80" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Storage-Compute Decoupling", - "uri":"css_01_0112.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"81" - }, - { - "desc":"You can store hot data on SSD to achieve the optimal query performance, and store historical data in OBS to reduce data storage costs.A large volume of data is written to", - "product_code":"css", - "title":"Context", - "uri":"css_01_0113.html", - "doc_type":"usermanual", - "p_code":"81", - "code":"82" - }, - { - "desc":"Before freezing an index, ensure no data is being written to it. The index will be set to read only before being frozen, and data write will fail.After an index is frozen", - "product_code":"css", - "title":"Freezing an Index", - "uri":"css_01_0114.html", - "doc_type":"usermanual", - "p_code":"81", - "code":"83" - }, - { - "desc":"After data is dumped to OBS, some data is cached to reduce access to OBS and improve Elasticsearch query performance. Data that is requested for the first time is obtaine", - "product_code":"css", - "title":"Configuring Cache", - "uri":"css_01_0116.html", - "doc_type":"usermanual", - "p_code":"81", - "code":"84" - }, - { - "desc":"When you query data on the Discover page of Kibana for the first time, all data needs to be obtained from OBS because there is no cache. If a large number of documents ar", - "product_code":"css", - "title":"Enhanced Cold Data Query Performance", - "uri":"css_01_0187.html", - "doc_type":"usermanual", - "p_code":"81", - "code":"85" - }, - { - "desc":"To clearly display the operations of the storage and compute decoupling plugin in OBS, the real-time OBS rate metric is added to CSS and recorded in the system index.This", - "product_code":"css", - "title":"Monitoring OBS Operations", - "uri":"css_01_0202.html", - "doc_type":"usermanual", - "p_code":"81", - "code":"86" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Enhanced Import Performance", - "uri":"css_01_0227.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"87" - }, - { - "desc":"CSS provides enhanced data import function. It optimizes bulk route, and speeds up processing through indexes and word segmentation, improving import performance and redu", - "product_code":"css", - "title":"Context", - "uri":"css_01_0228.html", - "doc_type":"usermanual", - "p_code":"87", - "code":"88" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Instructions", - "uri":"css_01_0229.html", - "doc_type":"usermanual", - "p_code":"87", - "code":"89" - }, - { - "desc":"According to the default routing rule of Elasticsearch, data in a bulk request is routed to different shards. When massive data is written and a large number of index sha", - "product_code":"css", - "title":"Bulk Route Optimization", - "uri":"css_01_0230.html", - "doc_type":"usermanual", - "p_code":"89", - "code":"90" - }, - { - "desc":"You can specify the index.aggr_perf_batch_size configuration item to enable or disable batch import optimization. After the batch import function is enabled, documents in", - "product_code":"css", - "title":"Bulk Aggregation Optimization", - "uri":"css_01_0231.html", - "doc_type":"usermanual", - "p_code":"89", - "code":"91" - }, - { - "desc":"You can configure index.native_speed_up to enable or disable text index acceleration. This function optimizes the index process and memory usage to accelerate index build", - "product_code":"css", - "title":"Text Index Acceleration", - "uri":"css_01_0232.html", - "doc_type":"usermanual", - "p_code":"89", - "code":"92" - }, - { - "desc":"After the import performance is enhanced, the number of index merge tasks increases accordingly. You can adjust the following configuration to reduce the impact of merge ", - "product_code":"css", - "title":"Optimization of Other Parameters", - "uri":"css_01_0233_0.html", - "doc_type":"usermanual", - "p_code":"89", - "code":"93" - }, - { - "desc":"Test environmentCluster: 3 M6 ECSs (8 vCPUs | 64 GB memory)Data: open-source web server access logs and internal service dataset (dns_logs)Configuration: 120 shards, no r", - "product_code":"css", - "title":"Performance Data", - "uri":"css_01_0234.html", - "doc_type":"usermanual", - "p_code":"87", - "code":"94" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Flow Control", - "uri":"css_01_0200.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"95" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Flow Control 2.0", - "uri":"css_01_0191.html", - "doc_type":"usermanual", - "p_code":"95", - "code":"96" - }, - { - "desc":"CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a ", - "product_code":"css", - "title":"Context", - "uri":"css_01_0192.html", - "doc_type":"usermanual", - "p_code":"96", - "code":"97" - }, - { - "desc":"You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster. The command parameters are as follows.Log in to the CSS management console.C", - "product_code":"css", - "title":"HTTP/HTTPS Flow Control", - "uri":"css_01_0193.html", - "doc_type":"usermanual", - "p_code":"96", - "code":"98" - }, - { - "desc":"Elasticsearch provides a circuit breaker, which will terminate requests or return the error code 429 if the memory usage exceeds its threshold. However, the circuit break", - "product_code":"css", - "title":"Memory Flow Control", - "uri":"css_01_0194.html", - "doc_type":"usermanual", - "p_code":"96", - "code":"99" - }, - { - "desc":"Request sampling can record the access of client IP addresses and the type of requests from the client. Based on the statistics, you can identify the access traffic of cl", - "product_code":"css", - "title":"Request Sampling", - "uri":"css_01_0195.html", - "doc_type":"usermanual", - "p_code":"96", - "code":"100" - }, - { - "desc":"You can block all connections in one click, except the connections that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.Log i", - "product_code":"css", - "title":"One-click Traffic Blocking", - "uri":"css_01_0196.html", - "doc_type":"usermanual", - "p_code":"96", - "code":"101" - }, - { - "desc":"Flow control can be implemented via an independent API.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the targe", - "product_code":"css", - "title":"Access Statistics and Traffic Control Information Query", - "uri":"css_01_0198.html", - "doc_type":"usermanual", - "p_code":"96", - "code":"102" - }, - { - "desc":"You can check access logs in either of the following ways:Enable and check access logs via an independent API. Configure the API parameters to record the access log time ", - "product_code":"css", - "title":"Temporary Access Statistics Logs", - "uri":"css_01_0199.html", - "doc_type":"usermanual", - "p_code":"96", - "code":"103" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Flow Control 1.0", - "uri":"css_01_0139.html", - "doc_type":"usermanual", - "p_code":"95", - "code":"104" - }, - { - "desc":"CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a ", - "product_code":"css", - "title":"Context", - "uri":"css_01_0140.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"105" - }, - { - "desc":"You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster. The command parameters are as follows.Log in to the CSS management console.C", - "product_code":"css", - "title":"HTTP/HTTPS Flow Control", - "uri":"css_01_0141.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"106" - }, - { - "desc":"Elasticsearch provides a circuit breaker, which will terminate requests if the memory usage exceeds its threshold. However, Elasticsearch does not check the heap memory u", - "product_code":"css", - "title":"Memory Flow Control", - "uri":"css_01_0142.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"107" - }, - { - "desc":"The following table describes the global path whitelist parameters for flow control.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Cl", - "product_code":"css", - "title":"Global Path Whitelist for Flow Control", - "uri":"css_01_0143.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"108" - }, - { - "desc":"Request sampling can record the access IP addresses, the number of accessed nodes, request paths, request URLs, and request bodies, which can be used to obtain the IP add", - "product_code":"css", - "title":"Request Sampling", - "uri":"css_01_0144.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"109" - }, - { - "desc":"Flow control can be implemented via an independent API.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the targe", - "product_code":"css", - "title":"Flow Control", - "uri":"css_01_0145.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"110" - }, - { - "desc":"You can check access logs in either of the following ways:Enable and check access logs via an independent API. Configure the API parameters to record the access log time ", - "product_code":"css", - "title":"Access Logs", - "uri":"css_01_0146.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"111" - }, - { - "desc":"CPU flow control can be implemented based on the CPU usage of a node.You can configure the CPU usage threshold of a node to prevent the node from breaking down due to hea", - "product_code":"css", - "title":"CPU Flow Control", - "uri":"css_01_0147.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"112" - }, - { - "desc":"You can block all traffic in one click, except the traffic that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.Log in to the", - "product_code":"css", - "title":"One-click Traffic Blocking", - "uri":"css_01_0148.html", - "doc_type":"usermanual", - "p_code":"104", - "code":"113" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Large Query Isolation", - "uri":"css_01_0131.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"114" - }, - { - "desc":"The large query isolation feature allows you to separately manage large queries. You can isolate query requests that consume a large amount of memory or take a long perio", - "product_code":"css", - "title":"Context", - "uri":"css_01_0132.html", - "doc_type":"usermanual", - "p_code":"114", - "code":"115" - }, - { - "desc":"The large query isolation and global timeout features are disabled by default. If you enable them, the configuration will take effect immediately. Perform the following s", - "product_code":"css", - "title":"Procedure", - "uri":"css_01_0133.html", - "doc_type":"usermanual", - "p_code":"114", - "code":"116" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Index Monitoring", - "uri":"css_01_0134.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"117" - }, - { - "desc":"CSS monitors various metrics of the running status and change trend of cluster indexes to measure service usage and handle potential risks in a timely manner, ensuring th", - "product_code":"css", - "title":"Context", - "uri":"css_01_0135.html", - "doc_type":"usermanual", - "p_code":"117", - "code":"118" - }, - { - "desc":"Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation colu", - "product_code":"css", - "title":"Enabling Index Monitoring", - "uri":"css_01_0136.html", - "doc_type":"usermanual", - "p_code":"117", - "code":"119" - }, - { - "desc":"You can call an API to query the index read and write traffic within a period of time.A cluster has been created and index monitoring has been enabled.Log in to the CSS m", - "product_code":"css", - "title":"Checking the Index Read and Write Traffic", - "uri":"css_01_0137.html", - "doc_type":"usermanual", - "p_code":"117", - "code":"120" - }, - { - "desc":"You can check preconfigured index monitoring visualizations on the Dashboard and Visualizations pages of Kibana. You can also customize tables and charts.A cluster has be", - "product_code":"css", - "title":"Checking Index Monitoring Information", - "uri":"css_01_0138.html", - "doc_type":"usermanual", - "p_code":"117", - "code":"121" - }, - { - "desc":"The configuration file content of kibana-monitor is as follows. You are advised to save the file as monitoring-kibana.ndjson.", - "product_code":"css", - "title":"kibana-monitor", - "uri":"css_01_0197.html", - "doc_type":"usermanual", - "p_code":"117", - "code":"122" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Enhanced Cluster Monitoring", - "uri":"css_01_0177.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"123" - }, - { - "desc":"The Elasticsearch community only discusses how to monitor the average latency of search requests, which cannot reflect the actual search performance of a cluster. To enha", - "product_code":"css", - "title":"P99 Latency Monitoring", - "uri":"css_01_0178.html", - "doc_type":"usermanual", - "p_code":"123", - "code":"124" - }, - { - "desc":"When an external system accesses Elasticsearch through the HTTP protocol, a response and the corresponding status code are returned. The open-source Elasticsearch server ", - "product_code":"css", - "title":"HTTP Status Code Monitoring", - "uri":"css_01_0179.html", - "doc_type":"usermanual", - "p_code":"123", - "code":"125" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Enhanced Aggregation", - "uri":"css_01_0172.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"126" - }, - { - "desc":"The enhanced aggregation is an optimization feature for service awareness. With this feature, you can optimize the aggregation analysis capability of observable services.", - "product_code":"css", - "title":"Features", - "uri":"css_01_0173.html", - "doc_type":"usermanual", - "p_code":"126", - "code":"127" - }, - { - "desc":"Low-cardinality fields have high data clustering performance when being sorted, which facilitates vectorized optimization. Assume that the following query statement exist", - "product_code":"css", - "title":"Grouping and Aggregation of Low-cardinality Fields", - "uri":"css_01_0174.html", - "doc_type":"usermanual", - "p_code":"126", - "code":"128" - }, - { - "desc":"High-cardinality fields are usually used for histogram grouping and aggregation instead of single-point grouping and aggregation. For example, collecting the statistics o", - "product_code":"css", - "title":"High-cardinality Field Histogram Aggregation", - "uri":"css_01_0175.html", - "doc_type":"usermanual", - "p_code":"126", - "code":"129" - }, - { - "desc":"In the scenario where low-cardinality and high-cardinality fields are mixed, assume that the following query statement exists:Group the low-cardinality fields and create ", - "product_code":"css", - "title":"Low-cardinality and High-cardinality Field Mixing", - "uri":"css_01_0176.html", - "doc_type":"usermanual", - "p_code":"126", - "code":"130" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Read/Write Splitting", - "uri":"css_01_0161.html", - "doc_type":"usermanual", - "p_code":"71", - "code":"131" - }, - { - "desc":"CSS supports read/write splitting. Data written to the primary cluster (Leader) can be automatically synchronized to the secondary cluster (Follower). In this way, data i", - "product_code":"css", - "title":"Features", - "uri":"css_01_0162.html", - "doc_type":"usermanual", - "p_code":"131", - "code":"132" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Instructions", - "uri":"css_01_0164.html", - "doc_type":"usermanual", - "p_code":"131", - "code":"133" - }, - { - "desc":"Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation col", - "product_code":"css", - "title":"Basic Settings", - "uri":"css_01_0165.html", - "doc_type":"usermanual", - "p_code":"133", - "code":"134" - }, - { - "desc":"Synchronize a single index.The request URL and request body parameters are as follows:After the synchronization function is enabled, indexes in the secondary cluster beco", - "product_code":"css", - "title":"Synchronizing Specified Indexes", - "uri":"css_01_0166.html", - "doc_type":"usermanual", - "p_code":"133", - "code":"135" - }, - { - "desc":"The request URL and request body parameters are as follows:The following are two examples:1. Synchronize a single index from the primary cluster to the secondary cluster.", - "product_code":"css", - "title":"Matching Index Synchronization", - "uri":"css_01_0167.html", - "doc_type":"usermanual", - "p_code":"133", - "code":"136" - }, - { - "desc":"You can specify multiple indexes or use wildcard to match the target indexes and terminate their synchronization tasks. Subsequent modifications to the indexes in the pri", - "product_code":"css", - "title":"Stopping Index Synchronization", - "uri":"css_01_0168.html", - "doc_type":"usermanual", - "p_code":"133", - "code":"137" - }, - { - "desc":"Querying the created patterns.This API is used to query the pattern list and query a specified pattern by name.An example request is as follows:GET auto_sync/pattern\nGET ", - "product_code":"css", - "title":"Other Management APIs", - "uri":"css_01_0169.html", - "doc_type":"usermanual", - "p_code":"133", - "code":"138" - }, - { - "desc":"This section describes how to switch from the primary cluster to the secondary cluster when the primary cluster is faulty.1. If the synchronization of specified indexes h", - "product_code":"css", - "title":"Best Practices", - "uri":"css_01_0170.html", - "doc_type":"usermanual", - "p_code":"131", - "code":"139" - }, - { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", - "product_code":"css", - "title":"Importing Data to Elasticsearch", - "uri":"css_01_0045.html", - "doc_type":"usermanual", - "p_code":"", - "code":"140" - }, { "desc":"You can use Logstash to collect data and migrate collected data to Elasticsearch in CSS. This method helps you effectively obtain and manage data through Elasticsearch. D", "product_code":"css", "title":"Using Logstash to Import Data to Elasticsearch", - "uri":"css_01_0048.html", + "uri":"en-us_topic_0000001528499137.html", "doc_type":"usermanual", - "p_code":"140", - "code":"141" + "p_code":"22", + "code":"23" }, { "desc":"You can import data in various formats, such as JSON, to Elasticsearch in CSS by using Kibana or APIs.Before importing data, ensure that you can use Kibana to access the ", "product_code":"css", "title":"Using Kibana or APIs to Import Data to Elasticsearch", - "uri":"css_01_0024.html", + "uri":"en-us_topic_0000001477899200.html", "doc_type":"usermanual", - "p_code":"140", + "p_code":"22", + "code":"24" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Accessing an Elasticsearch Cluster", + "uri":"en-us_topic_0000001555591537.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"25" + }, + { + "desc":"Elasticsearch clusters have built-in Kibana and Cerebro components. You can quickly access an Elasticsearch cluster through Kibana and Cerebro.Log in to the CSS managemen", + "product_code":"css", + "title":"Accessing an Elasticsearch Cluster", + "uri":"en-us_topic_0000001528379305.html", + "doc_type":"usermanual", + "p_code":"25", + "code":"26" + }, + { + "desc":"You can access a security cluster (Elasticsearch clusters in version 6.5.4 or later support the security mode) that has the HTTPS access enabled through the public IP add", + "product_code":"css", + "title":"Accessing a Cluster from a Public Network", + "uri":"en-us_topic_0000001528299629.html", + "doc_type":"usermanual", + "p_code":"25", + "code":"27" + }, + { + "desc":"If the VPC endpoint service is enabled, you can use a private domain name or node IP address generated by the endpoint to access the cluster. When the VPC endpoint servic", + "product_code":"css", + "title":"Accessing a Cluster Using a VPC Endpoint", + "uri":"en-us_topic_0000001477579412.html", + "doc_type":"usermanual", + "p_code":"25", + "code":"28" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"(Optional) Interconnecting with a Dedicated Load Balancer", + "uri":"en-us_topic_0000001528379297.html", + "doc_type":"usermanual", + "p_code":"25", + "code":"29" + }, + { + "desc":"CSS integrates shared load balancers and allows you to bind public network access and enable the VPC Endpoint service. Dedicated load balancers provide more functions and", + "product_code":"css", + "title":"Scenario", + "uri":"en-us_topic_0000001477739400.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"30" + }, + { + "desc":"This section describes how to connect a CSS cluster to a dedicated load balancer.If the target ELB listener uses the HTTP protocol, skip this step.Prepare and upload a se", + "product_code":"css", + "title":"Connecting to a Dedicated Load Balancer", + "uri":"en-us_topic_0000001477739348.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"31" + }, + { + "desc":"This section provides the sample code for two-way authentication during the access to a cluster from a Java client.", + "product_code":"css", + "title":"Sample Code for Two-Way Authentication During the Access to a Cluster", + "uri":"en-us_topic_0000001477419788.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"32" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Index Backup and Restoration", + "uri":"en-us_topic_0000001633221741.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"33" + }, + { + "desc":"You can back up index data in clusters. If data loss occurs or you want to retrieve data of a specified duration, you can restore the index data. Index backup is implemen", + "product_code":"css", + "title":"Backup and Restoration Overview", + "uri":"en-us_topic_0000001633303977.html", + "doc_type":"usermanual", + "p_code":"33", + "code":"34" + }, + { + "desc":"Snapshots are automatically created at a specified time according to the rules you create. You can enable or disable the automatic snapshot creation function and set the ", + "product_code":"css", + "title":"Managing Automatic Snapshot Creation", + "uri":"en-us_topic_0000001583460750.html", + "doc_type":"usermanual", + "p_code":"33", + "code":"35" + }, + { + "desc":"You can manually create a snapshot at any time to back up all data or data of specified indexes.To use the function of creating or restoring snapshots, the account or IAM", + "product_code":"css", + "title":"Manually Creating a Snapshot", + "uri":"en-us_topic_0000001633220693.html", + "doc_type":"usermanual", + "p_code":"33", + "code":"36" + }, + { + "desc":"You can use existing snapshots to restore the backup index data to a specified cluster.To use the function of creating or restoring snapshots, the account or IAM user log", + "product_code":"css", + "title":"Restoring Data", + "uri":"en-us_topic_0000001583300810.html", + "doc_type":"usermanual", + "p_code":"33", + "code":"37" + }, + { + "desc":"If you no longer need a snapshot, delete it to release storage resources. If the automatic snapshot creation function is enabled, snapshots that are automatically created", + "product_code":"css", + "title":"Deleting a Snapshot", + "uri":"en-us_topic_0000001583146906.html", + "doc_type":"usermanual", + "p_code":"33", + "code":"38" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Cluster Specification Modification", + "uri":"en-us_topic_0000001477739404.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"39" + }, + { + "desc":"You can scale in or out a cluster and change cluster specifications. In this way, you can improve cluster efficiency and reduce O&M costs.Scaling Out a ClusterIf a data n", + "product_code":"css", + "title":"Overview", + "uri":"en-us_topic_0000001528379253.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"40" + }, + { + "desc":"If the workloads on the data plane of a cluster change, you can scale out the cluster by increasing the number or capacity of its nodes. Services are not interrupted duri", + "product_code":"css", + "title":"Scaling Out a Cluster", + "uri":"en-us_topic_0000001477899164.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"41" + }, + { + "desc":"If the workloads on the data plane of a cluster change, you can change its node specifications as needed.The target cluster is available and has no tasks in progress.The ", + "product_code":"css", + "title":"Changing Specifications", + "uri":"en-us_topic_0000001477739368.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"42" + }, + { + "desc":"If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. You are advised to scale in clusters during off-pe", + "product_code":"css", + "title":"Scaling in a Cluster", + "uri":"en-us_topic_0000001528299597.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"43" + }, + { + "desc":"If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs. Services will not be in", + "product_code":"css", + "title":"Removing Specified Nodes", + "uri":"en-us_topic_0000001477899184.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"44" + }, + { + "desc":"If a node in the cluster is faulty, you can create a new node with the same specifications to replace it. During the replacement of a specified node, data of that node wi", + "product_code":"css", + "title":"Replacing a Specified Node", + "uri":"en-us_topic_0000001477579404.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"45" + }, + { + "desc":"If workloads on the data plane of a cluster increase, you can add master or client nodes as needed. Services are not interrupted while they are added.The target cluster i", + "product_code":"css", + "title":"Adding Master/Client Nodes", + "uri":"en-us_topic_0000001477899188.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"46" + }, + { + "desc":"After a cluster is created, its security mode can be changed using the following methods:Switching from the Non-Security Mode to Security ModeSwitching from the Security ", + "product_code":"css", + "title":"Changing the Security Mode", + "uri":"en-us_topic_0000001528379285.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"47" + }, + { + "desc":"CSS supports cross-AZ deployment. You can add an AZ to obtain more resources or improve cluster availability, and can migrate your current AZ to one with higher specifica", + "product_code":"css", + "title":"Changing AZs", + "uri":"en-us_topic_0000001528299585.html", + "doc_type":"usermanual", + "p_code":"39", + "code":"48" + }, + { + "desc":"Same-version upgrade, cross-engine upgrade, and cross-version upgrade are supported. Same-version upgrade is to upgrade the kernel patch of a cluster to fix problems or o", + "product_code":"css", + "title":"Upgrading the Cluster Version", + "uri":"en-us_topic_0000001528659153.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"49" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Cluster Management", + "uri":"en-us_topic_0000001477579340.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"50" + }, + { + "desc":"The cluster list displays all CSS clusters. If there are a large number of clusters, these clusters will be displayed on multiple pages. You can view clusters of all stat", + "product_code":"css", + "title":"Cluster List Overview", + "uri":"en-us_topic_0000001528299613.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"51" + }, + { + "desc":"On the Cluster Information page, you can view the information about a cluster, including the private network address, public IP address, version, and node.Log in to the C", + "product_code":"css", + "title":"Viewing Basic Cluster Information", + "uri":"en-us_topic_0000001528499201.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"52" + }, + { + "desc":"Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.You can add tags to a cluster when creating the cluster or a", + "product_code":"css", + "title":"Managing Tags", + "uri":"en-us_topic_0000001528659137.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"53" + }, + { + "desc":"CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate ", + "product_code":"css", + "title":"Managing Logs", + "uri":"en-us_topic_0000001477739336.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"54" + }, + { + "desc":"You can modify the elasticsearch.yml file.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, click the name of the target ", + "product_code":"css", + "title":"Configuring YML Parameters", + "uri":"en-us_topic_0000001528299601.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"55" + }, + { + "desc":"CSS clusters have default plugins. You can view the default plugin information on the console or Kibana.Log in to the CSS management console.In the navigation pane, choos", + "product_code":"css", + "title":"Viewing the Default Plugin List", + "uri":"en-us_topic_0000001477739388.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"56" + }, + { + "desc":"You can create enterprise projects based on your organizational structure. Then you can manage resources across different regions by enterprise project, add users and use", + "product_code":"css", + "title":"Binding an Enterprise Project", + "uri":"en-us_topic_0000001528299621.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"57" + }, + { + "desc":"If a cluster becomes faulty, you can restart it to check if it can run normally.The target cluster is not frozen and has no task in progress.If a cluster is available, en", + "product_code":"css", + "title":"Restarting a Cluster", + "uri":"en-us_topic_0000001528499141.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"58" + }, + { + "desc":"You can delete clusters that you no longer need.If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.The sna", + "product_code":"css", + "title":"Deleting a Cluster", + "uri":"en-us_topic_0000001477579396.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"59" + }, + { + "desc":"In the Failed Tasks dialog box, you can view the failed tasks related to a cluster, such as failing to create, restart, scale out, back up, or restore a cluster. In addit", + "product_code":"css", + "title":"Managing Failed Tasks", + "uri":"en-us_topic_0000001528299581.html", + "doc_type":"usermanual", + "p_code":"50", + "code":"60" + }, + { + "desc":"For Elasticsearch 6.5.4 and later versions, Open Distro for Elasticsearch SQL lets you write queries in SQL rather than in the Elasticsearch query domain-specific languag", + "product_code":"css", + "title":"Using the Open Distro SQL Plug-in to Compile Queries", + "uri":"en-us_topic_0000001477899212.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"61" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Using the Open Distro Alarm Plug-in to Configure SMN Alarms", + "uri":"en-us_topic_0000001866261281.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"62" + }, + { + "desc":"To use the OpenDistro alarm plugin (opendistro_alerting), authorize your Elasticsearch cluster to use SMN to send notifications. For details about how to use the OpenDist", + "product_code":"css", + "title":"(Optional) Authorizing CSS to Use SMN", + "uri":"en-us_topic_0000001564706853.html", + "doc_type":"usermanual", + "p_code":"62", + "code":"63" + }, + { + "desc":"By default, the open-source OpenDistro alarm plugin (opendistro_alerting) is integrated into CSS to send notifications when data meets specific conditions. This plugin co", + "product_code":"css", + "title":"Configuring SMN Alarms", + "uri":"en-us_topic_0000001564906577.html", + "doc_type":"usermanual", + "p_code":"62", + "code":"64" + }, + { + "desc":"CSS provides you with cold data nodes. You can store data that requires query response in seconds on high-performance nodes and store data that requires query response in", + "product_code":"css", + "title":"Switching Hot and Cold Data", + "uri":"en-us_topic_0000001528659081.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"65" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Managing Indexes", + "uri":"en-us_topic_0000001477579380.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"66" + }, + { + "desc":"Clusters of version 7.6.2 or later support index status management. ISM is a plugin that allows you to automate periodic and administrative operations based on changes on", + "product_code":"css", + "title":"Creating and Managing Indexes", + "uri":"en-us_topic_0000001477739392.html", + "doc_type":"usermanual", + "p_code":"66", + "code":"67" + }, + { + "desc":"You can change any managed index policy. ISM has constraints to ensure that policy changes do not break indexes.If an index is stuck in its current status, never proceedi", + "product_code":"css", + "title":"Changing Policies", + "uri":"en-us_topic_0000001528659085.html", + "doc_type":"usermanual", + "p_code":"66", + "code":"68" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Kibana Platform", + "uri":"en-us_topic_0000001528299625.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"69" + }, + { + "desc":"After creating a CSS cluster, you can log in to Kibana through the console or public network.You can customize the username, role name, and tenant name in Kibana.Logging ", + "product_code":"css", + "title":"Logging In to Kibana", + "uri":"en-us_topic_0000001477419728.html", + "doc_type":"usermanual", + "p_code":"69", + "code":"70" + }, + { + "desc":"For CSS clusters that have security mode enabled, you can enable Kibana public access. After the configuration is complete, an IP address will be provided to access Kiban", + "product_code":"css", + "title":"Accessing a Cluster from a Kibana Public Network", + "uri":"en-us_topic_0000001477419764.html", + "doc_type":"usermanual", + "p_code":"69", + "code":"71" + }, + { + "desc":"CSS uses the opendistro_security plug-in to provide security cluster capabilities. The opendistro_security plug-in is built based on the RBAC model. RBAC involves three c", + "product_code":"css", + "title":"Creating a User and Granting Permissions by Using Kibana", + "uri":"en-us_topic_0000001528379273.html", + "doc_type":"usermanual", + "p_code":"69", + "code":"72" + }, + { + "desc":"To interconnect user-built Kibana with CSS Elasticsearch clusters, the following conditions must be met:The local environment must support access from external networks.K", + "product_code":"css", + "title":"Connecting User-Built Kibana to an Elasticsearch Cluster", + "uri":"en-us_topic_0000001477419776.html", + "doc_type":"usermanual", + "p_code":"69", + "code":"73" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"OpenSearch", + "uri":"en-us_topic_0000001633949601.html", + "doc_type":"usermanual", + "p_code":"", + "code":"74" + }, + { + "desc":"This section describes how to create an OpenSearch cluster.Public IP address access and Kibana public access can be used only after security mode is enabled.When creating", + "product_code":"css", + "title":"Creating a Cluster", + "uri":"en-us_topic_0000001584149004.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"75" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Accessing a Cluster", + "uri":"en-us_topic_0000001583669892.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"76" + }, + { + "desc":"OpenSearch clusters have built-in Kibana and Cerebro components. You can quickly access an OpenSearch cluster through Kibana and Cerebro.Log in to the CSS management cons", + "product_code":"css", + "title":"Quickly Accessing an OpenSearch Cluster", + "uri":"en-us_topic_0000001641003025.html", + "doc_type":"usermanual", + "p_code":"76", + "code":"77" + }, + { + "desc":"You can access a security cluster that has the HTTPS access enabled through the public IP address provided by the system.By default, CSS uses a shared load balancer for p", + "product_code":"css", + "title":"Accessing a Cluster from a Public Network", + "uri":"en-us_topic_0000001590963076.html", + "doc_type":"usermanual", + "p_code":"76", + "code":"78" + }, + { + "desc":"If the VPC endpoint service is enabled, you can use a private domain name or node IP address generated by the endpoint to access the cluster. When the VPC endpoint servic", + "product_code":"css", + "title":"Accessing a Cluster Using a VPC Endpoint", + "uri":"en-us_topic_0000001590323656.html", + "doc_type":"usermanual", + "p_code":"76", + "code":"79" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"(Optional) Interconnecting with a Dedicated Load Balancer", + "uri":"en-us_topic_0000001591285452.html", + "doc_type":"usermanual", + "p_code":"76", + "code":"80" + }, + { + "desc":"CSS integrates shared load balancers and allows you to bind public network access and enable the VPC Endpoint service. Dedicated load balancers provide more functions and", + "product_code":"css", + "title":"Scenario Description", + "uri":"en-us_topic_0000001640645481.html", + "doc_type":"usermanual", + "p_code":"80", + "code":"81" + }, + { + "desc":"This section describes how to connect a CSS cluster to a dedicated load balancer.If the target ELB listener uses the HTTP protocol, skip this step.Prepare and upload a se", + "product_code":"css", + "title":"Connecting to a Dedicated Load Balancer", + "uri":"en-us_topic_0000001640764229.html", + "doc_type":"usermanual", + "p_code":"80", + "code":"82" + }, + { + "desc":"This section provides the sample code for two-way authentication during the access to a cluster from a Java client.", + "product_code":"css", + "title":"Sample Code for Two-Way Authentication During the Access to a Cluster", + "uri":"en-us_topic_0000001590603388.html", + "doc_type":"usermanual", + "p_code":"80", + "code":"83" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Index Backup and Restoration", + "uri":"en-us_topic_0000001640883633.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"84" + }, + { + "desc":"You can back up index data in clusters. If data loss occurs or you want to retrieve data of a specified duration, you can restore the index data. Index backup is implemen", + "product_code":"css", + "title":"Backup and Restoration Overview", + "uri":"en-us_topic_0000001641003029.html", + "doc_type":"usermanual", + "p_code":"84", + "code":"85" + }, + { + "desc":"Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and", + "product_code":"css", + "title":"Managing Automatic Snapshot Creation", + "uri":"en-us_topic_0000001590963080.html", + "doc_type":"usermanual", + "p_code":"84", + "code":"86" + }, + { + "desc":"You can manually create a snapshot at any time to back up all data or data of specified indexes.To use the function of creating or restoring snapshots, the account or IAM", + "product_code":"css", + "title":"Manually Creating a Snapshot", + "uri":"en-us_topic_0000001590323664.html", + "doc_type":"usermanual", + "p_code":"84", + "code":"87" + }, + { + "desc":"You can use existing snapshots to restore the backup index data to a specified cluster.To use the function of creating or restoring snapshots, the account or IAM user log", + "product_code":"css", + "title":"Restoring Data", + "uri":"en-us_topic_0000001591285456.html", + "doc_type":"usermanual", + "p_code":"84", + "code":"88" + }, + { + "desc":"If you no longer need a snapshot, delete it to release storage resources. If the automatic snapshot creation function is enabled, snapshots that are automatically created", + "product_code":"css", + "title":"Deleting a Snapshot", + "uri":"en-us_topic_0000001640645485.html", + "doc_type":"usermanual", + "p_code":"84", + "code":"89" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Scaling In/Out a Cluster", + "uri":"en-us_topic_0000001637436445.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"90" + }, + { + "desc":"You can scale in or out a cluster and change cluster specifications. In this way, you can improve cluster efficiency and reduce O&M costs.Scaling Out a ClusterIf a data n", + "product_code":"css", + "title":"Overview", + "uri":"en-us_topic_0000001640773493.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"91" + }, + { + "desc":"If the workloads on the data plane of a cluster change, you can scale out the cluster by increasing the number or capacity of its nodes. Services are not interrupted duri", + "product_code":"css", + "title":"Scaling Out a Cluster", + "uri":"en-us_topic_0000001590332948.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"92" + }, + { + "desc":"If the workloads on the data plane of a cluster change, you can change its node specifications as needed.The target cluster is available and has no tasks in progress.The ", + "product_code":"css", + "title":"Changing Specifications", + "uri":"en-us_topic_0000001641012329.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"93" + }, + { + "desc":"If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. You are advised to scale in clusters during off-pe", + "product_code":"css", + "title":"Scaling in a Cluster", + "uri":"en-us_topic_0000001590972372.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"94" + }, + { + "desc":"If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs. Services will not be in", + "product_code":"css", + "title":"Removing Specified Nodes", + "uri":"en-us_topic_0000001590612676.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"95" + }, + { + "desc":"If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.The target cluster is available and has no tasks in progress.Only", + "product_code":"css", + "title":"Replacing a Specified Node", + "uri":"en-us_topic_0000001640892937.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"96" + }, + { + "desc":"If workloads on the data plane of a cluster increase, you can add master or client nodes as needed. Services are not interrupted while they are added.The cluster is in th", + "product_code":"css", + "title":"Adding Master/Client Nodes", + "uri":"en-us_topic_0000001640654793.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"97" + }, + { + "desc":"After a cluster is created, its security mode can be changed in the following methods:Switching from the Non-Security Mode to Security ModeSwitching from the Security to ", + "product_code":"css", + "title":"Changing the Security Mode", + "uri":"en-us_topic_0000001591294758.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"98" + }, + { + "desc":"CSS supports cross-AZ deployment. You can add an AZ to obtain more resources or improve cluster availability, and can migrate your current AZ to one with higher specifica", + "product_code":"css", + "title":"Changing AZs", + "uri":"en-us_topic_0000001640773505.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"99" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Managing Clusters", + "uri":"en-us_topic_0000001583989096.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"100" + }, + { + "desc":"On the basic information page of an Opensearch cluster, you can view the private network address, public network address, version, and node of the cluster.Log in to the C", + "product_code":"css", + "title":"Viewing Basic Information About an Opensearch Cluster", + "uri":"en-us_topic_0000001583669884.html", + "doc_type":"usermanual", + "p_code":"100", + "code":"101" + }, + { + "desc":"Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.You can add tags to a cluster when creating the cluster or a", + "product_code":"css", + "title":"Managing Tags", + "uri":"en-us_topic_0000001647464345.html", + "doc_type":"usermanual", + "p_code":"100", + "code":"102" + }, + { + "desc":"CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate ", + "product_code":"css", + "title":"Managing Logs", + "uri":"en-us_topic_0000001591456866.html", + "doc_type":"usermanual", + "p_code":"100", + "code":"103" + }, + { + "desc":"You can modify the elasticsearch.yml file.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, click the name of the target ", + "product_code":"css", + "title":"Configuring YML Parameters", + "uri":"en-us_topic_0000001640777441.html", + "doc_type":"usermanual", + "p_code":"100", + "code":"104" + }, + { + "desc":"CSS clusters have default plug-ins. You can view the default plugin information on the console or Kibana.Log in to the CSS management console.In the navigation pane, choo", + "product_code":"css", + "title":"Viewing the Default Plugin List", + "uri":"en-us_topic_0000001591616594.html", + "doc_type":"usermanual", + "p_code":"100", + "code":"105" + }, + { + "desc":"If a cluster becomes faulty, you can restart it to check if it can run normally.The target cluster is not frozen and has no task in progress.If a cluster is available, en", + "product_code":"css", + "title":"Restarting a Cluster", + "uri":"en-us_topic_0000001640879293.html", + "doc_type":"usermanual", + "p_code":"100", + "code":"106" + }, + { + "desc":"You can delete clusters that you no longer need.If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.The sna", + "product_code":"css", + "title":"Deleting a Cluster", + "uri":"en-us_topic_0000001640998693.html", + "doc_type":"usermanual", + "p_code":"100", + "code":"107" + }, + { + "desc":"By default, CSS has installed the open-source alert plugin opensearch-alerting for OpenSearch clusters to send notifications when data meets specific conditions. This plu", + "product_code":"css", + "title":"Configuring SMN Alarms", + "uri":"en-us_topic_0000001815107861.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"108" + }, + { + "desc":"CSS provides you with cold data nodes. You can store data that requires query response in seconds on hot data nodes with high performance and store historical data that r", + "product_code":"css", + "title":"Switching Hot and Cold Data", + "uri":"en-us_topic_0000001591776270.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"109" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Managing Indexes", + "uri":"en-us_topic_0000001640658697.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"110" + }, + { + "desc":"You can manage the indexes of OpenSearch clusters. ISM is a plugin that allows you to automate periodic and administrative operations based on changes on the index age, i", + "product_code":"css", + "title":"Creating and Managing Index Policies", + "uri":"en-us_topic_0000001591298678.html", + "doc_type":"usermanual", + "p_code":"110", + "code":"111" + }, + { + "desc":"You can change any managed index policy. ISM has constraints to ensure that policy changes do not break indexes.If an index is stuck in its current status and you want to", + "product_code":"css", + "title":"Changing an Index Policy", + "uri":"en-us_topic_0000001641016221.html", + "doc_type":"usermanual", + "p_code":"110", + "code":"112" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"OpenSearch Dashboards", + "uri":"en-us_topic_0000001587956758.html", + "doc_type":"usermanual", + "p_code":"74", + "code":"113" + }, + { + "desc":"An OpenSearch cluster has been created.Logging in to the consoleLog in to the CSS management console.In the navigation pane, choose Clusters > OpenSearch.On the Clusters ", + "product_code":"css", + "title":"Logging In to the OpenSearch Dashboards", + "uri":"en-us_topic_0000001591776274.html", + "doc_type":"usermanual", + "p_code":"113", + "code":"114" + }, + { + "desc":"For CSS clusters that have security mode enabled, you can enable Kibana public access. After the configuration is complete, an IP address will be provided to access Kiban", + "product_code":"css", + "title":"Accessing a Cluster from a Kibana Public Network", + "uri":"en-us_topic_0000001640658701.html", + "doc_type":"usermanual", + "p_code":"113", + "code":"115" + }, + { + "desc":"The security mode has been enabled for the OpenSearch cluster.You can customize the username, role name, and tenant name in the OpenSearch Dashboards.Log in to the CSS ma", + "product_code":"css", + "title":"Creating and Authorizing a User on the OpenSearch Dashboards", + "uri":"en-us_topic_0000001591298682.html", + "doc_type":"usermanual", + "p_code":"113", + "code":"116" + }, + { + "desc":"On the Dashboard page of the CSS management console, you can view information about the status and storage capacity of existing clusters.", + "product_code":"css", + "title":"Viewing the Cluster Runtime Status and Storage Capacity Status", + "uri":"en-us_topic_0000001477579368.html", + "doc_type":"usermanual", + "p_code":"", + "code":"117" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Enhanced Cluster Features", + "uri":"en-us_topic_0000001528659089.html", + "doc_type":"usermanual", + "p_code":"", + "code":"118" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Vector Retrieval", + "uri":"en-us_topic_0000001477899160.html", + "doc_type":"usermanual", + "p_code":"118", + "code":"119" + }, + { + "desc":"Image recognition and retrieval, video search, and personalized recommendation impose high requirements on the latency and accuracy of high-dimensional space vector retri", + "product_code":"css", + "title":"Description", + "uri":"en-us_topic_0000001528299617.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"120" + }, + { + "desc":"Off-heap memory is used for index construction and query in vector retrieval. Therefore, the required cluster capacity is related to the index type and off-heap memory si", + "product_code":"css", + "title":"Cluster Planning for Vector Retrieval", + "uri":"en-us_topic_0000001477419716.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"121" + }, + { + "desc":"You have created a cluster by referring to Cluster Planning for Vector Retrieval. The cluster must be an Elasticsearch cluster of version 7.6.2 or 7.10.2, or an OpenSearc", + "product_code":"css", + "title":"Creating a Vector Index", + "uri":"en-us_topic_0000001528299557.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"122" + }, + { + "desc":"Standard vector query syntax is provided for vector fields with vector indexes. The following command will return n (specified by size/topk) data records that are most cl", + "product_code":"css", + "title":"Querying Vectors", + "uri":"en-us_topic_0000001477899192.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"123" + }, + { + "desc":"To reduce the cost of backup, disable the backup function before data import and enable it afterwards.Set refresh_interval to 120s or a larger value. Larger segments can ", + "product_code":"css", + "title":"Optimizing the Performance of Vector Retrieval", + "uri":"en-us_topic_0000001528659117.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"124" + }, + { + "desc":"When you perform operations in Creating a Vector Index, if IVF_GRAPH and IVF_GRAPH_PQ index algorithms are selected, you need to pre-build and register the center point v", + "product_code":"css", + "title":"(Optional) Pre-Building and Registering a Center Point Vector", + "uri":"en-us_topic_0000001528299609.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"125" + }, + { + "desc":"The vector retrieval engine is developed in C++ and uses off-heap memory. You can use the following APIs to manage the index cache.View cache statistics.GET /_vector/stat", + "product_code":"css", + "title":"Managing the Vector Index Cache", + "uri":"en-us_topic_0000001477899208.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"126" + }, + { + "desc":"Elasticsearch provides standard REST APIs and clients developed using Java, Python, and Go.Based on the open-source dataset SIFT1M (http://corpus-texmex.irisa.fr/) and Py", + "product_code":"css", + "title":"Sample Code for Vector Search on a Client", + "uri":"en-us_topic_0000001528499121.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"127" + }, + { + "desc":"PV_GRAPH deeply optimizes the HNSW algorithm and supports the vector and scalar joint filtering. When the vector and scalar joint filtering is used, the result filling ra", + "product_code":"css", + "title":"Using PV_GRAPH to Search for Vector Indexes", + "uri":"en-us_topic_0000001814230837.html", + "doc_type":"usermanual", + "p_code":"119", + "code":"128" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Storage-Compute Decoupling", + "uri":"en-us_topic_0000001528499153.html", + "doc_type":"usermanual", + "p_code":"118", + "code":"129" + }, + { + "desc":"You can store hot data on SSD to achieve the optimal query performance, and store historical data in OBS to reduce data storage costs.A large volume of data is written to", + "product_code":"css", + "title":"Context", + "uri":"en-us_topic_0000001477739384.html", + "doc_type":"usermanual", + "p_code":"129", + "code":"130" + }, + { + "desc":"Before freezing an index, ensure no data is being written to it. The index will be set to read only before being frozen, and data write will fail.After an index is frozen", + "product_code":"css", + "title":"Freezing an Index", + "uri":"en-us_topic_0000001528299569.html", + "doc_type":"usermanual", + "p_code":"129", + "code":"131" + }, + { + "desc":"After data is dumped to OBS, some data is cached to reduce access to OBS and improve Elasticsearch query performance. Data that is requested for the first time is obtaine", + "product_code":"css", + "title":"Configuring Cache", + "uri":"en-us_topic_0000001528379309.html", + "doc_type":"usermanual", + "p_code":"129", + "code":"132" + }, + { + "desc":"When you query data on the Discover page of Kibana for the first time, all data needs to be obtained from OBS because there is no cache. If a large number of documents ar", + "product_code":"css", + "title":"Enhanced Cold Data Query Performance", + "uri":"en-us_topic_0000001477739360.html", + "doc_type":"usermanual", + "p_code":"129", + "code":"133" + }, + { + "desc":"To clearly display the operations of the storage and compute decoupling plugin in OBS, the real-time OBS rate metric is added to CSS and recorded in the system index.This", + "product_code":"css", + "title":"Monitoring OBS Operations", + "uri":"en-us_topic_0000001528379301.html", + "doc_type":"usermanual", + "p_code":"129", + "code":"134" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Enhanced Import Performance", + "uri":"en-us_topic_0000001533988876.html", + "doc_type":"usermanual", + "p_code":"118", + "code":"135" + }, + { + "desc":"CSS provides enhanced data import function. It optimizes bulk route, and speeds up processing through indexes and word segmentation, improving import performance and redu", + "product_code":"css", + "title":"Context", + "uri":"en-us_topic_0000001533829376.html", + "doc_type":"usermanual", + "p_code":"135", + "code":"136" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Instructions", + "uri":"en-us_topic_0000001585148465.html", + "doc_type":"usermanual", + "p_code":"135", + "code":"137" + }, + { + "desc":"According to the default routing rule of Elasticsearch, data in a bulk request is routed to different shards. When massive data is written and a large number of index sha", + "product_code":"css", + "title":"Bulk Route Optimization", + "uri":"en-us_topic_0000001534148568.html", + "doc_type":"usermanual", + "p_code":"137", + "code":"138" + }, + { + "desc":"You can specify the index.aggr_perf_batch_size configuration item to enable or disable batch import optimization. After the batch import function is enabled, documents in", + "product_code":"css", + "title":"Bulk Aggregation Optimization", + "uri":"en-us_topic_0000001534308508.html", + "doc_type":"usermanual", + "p_code":"137", + "code":"139" + }, + { + "desc":"You can configure index.native_speed_up to enable or disable text index acceleration. This function optimizes the index process and memory usage to accelerate index build", + "product_code":"css", + "title":"Text Index Acceleration", + "uri":"en-us_topic_0000001584828717.html", + "doc_type":"usermanual", + "p_code":"137", + "code":"140" + }, + { + "desc":"After the import performance is enhanced, the number of index merge tasks increases accordingly. You can adjust the following configuration to reduce the impact of merge ", + "product_code":"css", + "title":"Optimization of Other Parameters", + "uri":"en-us_topic_0000001584988497.html", + "doc_type":"usermanual", + "p_code":"137", + "code":"141" + }, + { + "desc":"Test environmentCluster: 3 Cloud M6 ECSs (8 vCPUs | 64 GB memory)Data: open-source web server access logs and internal service dataset (dns_logs)Configuration: 120 shards", + "product_code":"css", + "title":"Performance Data", + "uri":"en-us_topic_0000001584708761.html", + "doc_type":"usermanual", + "p_code":"135", "code":"142" }, { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"Monitoring", - "uri":"css_01_0041.html", + "title":"Flow Control 2.0", + "uri":"en-us_topic_0000001477899176.html", "doc_type":"usermanual", - "p_code":"", + "p_code":"118", "code":"143" }, { - "desc":"You can use Cloud Eye to monitor cluster metrics of CSS in real time and quickly handle exceptions. For details about Cloud Eye, see the Cloud Eye User Guide.Table 1 list", + "desc":"CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a ", "product_code":"css", - "title":"Monitoring Metrics of Elasticsearch Clusters", - "uri":"css_01_0042.html", + "title":"Context", + "uri":"en-us_topic_0000001528379257.html", "doc_type":"usermanual", "p_code":"143", "code":"144" }, { - "desc":"This topic describes CSS metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can search for the monitoring metrics and alarms gener", + "desc":"You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster.Log in to the CSS management console.Choose Clusters in the navigation pane. ", "product_code":"css", - "title":"Monitoring Metrics", - "uri":"css_01_0246.html", + "title":"HTTP/HTTPS Flow Control", + "uri":"en-us_topic_0000001477579372.html", "doc_type":"usermanual", "p_code":"143", "code":"145" }, { - "desc":"You can use Cloud Eye to monitor the created clusters. After configuring the cluster monitoring, you can log in to the Cloud Eye management console to view cluster metric", + "desc":"Elasticsearch provides a circuit breaker, which will terminate requests or return the error code 429 if the memory usage exceeds its threshold. However, the circuit break", "product_code":"css", - "title":"Configuring Cluster Monitoring", - "uri":"css_01_0155.html", + "title":"Memory Flow Control", + "uri":"en-us_topic_0000001477419736.html", "doc_type":"usermanual", "p_code":"143", "code":"146" }, { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "desc":"Request sampling can record the access of client IP addresses and the type of requests from the client. Based on the statistics, you can identify the access traffic of cl", "product_code":"css", - "title":"Auditing", - "uri":"css_01_0049.html", + "title":"Request Sampling", + "uri":"en-us_topic_0000001477739364.html", "doc_type":"usermanual", - "p_code":"", + "p_code":"143", "code":"147" }, { - "desc":"Cloud Trace Service (CTS) is available on the public cloud platform. With CTS, you can record operations associated with CSS for later query, audit, and backtrack operati", + "desc":"You can block all connections in one click, except the connections that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.Log i", "product_code":"css", - "title":"Key Operations Recorded by CTS", - "uri":"css_01_0050.html", + "title":"One-click Traffic Blocking", + "uri":"en-us_topic_0000001477579364.html", "doc_type":"usermanual", - "p_code":"147", + "p_code":"143", "code":"148" }, { - "desc":"After you enable CTS, it starts recording operations related to CSS. The CTS management console stores the last seven days of operation records. This section describes ho", + "desc":"Flow control can be implemented via an independent API.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the targe", "product_code":"css", - "title":"Viewing Audit Logs", - "uri":"css_01_0051.html", + "title":"Access Statistics and Traffic Control Information Query", + "uri":"en-us_topic_0000001477419720.html", "doc_type":"usermanual", - "p_code":"147", + "p_code":"143", "code":"149" }, { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "desc":"You can check access logs in either of the following ways:Enable and check access logs via an independent API. Configure the API parameters to record the access log time ", "product_code":"css", - "title":"FAQs", - "uri":"css_02_0001.html", + "title":"Temporary Access Statistics Logs", + "uri":"en-us_topic_0000001528659149.html", "doc_type":"usermanual", - "p_code":"", + "p_code":"143", "code":"150" }, { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "desc":"The traffic control function can record cluster access logs and write the logs to background log files. You can back up the logs to OBS for viewing. You can run the follo", "product_code":"css", - "title":"General Consulting", - "uri":"css_02_0051.html", + "title":"Recording Access Logs in Files", + "uri":"en-us_topic_0000001832788405.html", "doc_type":"usermanual", - "p_code":"150", + "p_code":"143", "code":"151" }, { - "desc":"A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.A region is a physical data center. Each ", + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"What Are Regions and AZs?", - "uri":"css_02_0034.html", + "title":"Flow Control 1.0", + "uri":"en-us_topic_0000001477899152.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"118", "code":"152" }, { - "desc":"CSS uses network isolation, in addition to various host and data security measures.Network isolationThe entire network is divided into two planes: service plane and manag", + "desc":"CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a ", "product_code":"css", - "title":"How Does CSS Ensure Data and Service Security?", - "uri":"css_02_0006.html", + "title":"Context", + "uri":"en-us_topic_0000001477739408.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"152", "code":"153" }, { - "desc":"Disk usage and cluster health status are two key metrics that you can focus on. You can log in to Cloud Eye and configure alarm rules for these metrics. If alarms are rep", + "desc":"You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster. The command parameters are as follows.Log in to the CSS management console.C", "product_code":"css", - "title":"Which CSS Metrics Should I Focus On?", - "uri":"css_02_0007.html", + "title":"HTTP/HTTPS Flow Control", + "uri":"en-us_topic_0000001477579352.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"152", "code":"154" }, { - "desc":"CSS uses EVS and local disks to store your indices. During cluster creation, you can specify the EVS disk type and specifications (the EVS disk size).Supported EVS disk t", + "desc":"Elasticsearch provides a circuit breaker, which will terminate requests if the memory usage exceeds its threshold. However, Elasticsearch does not check the heap memory u", "product_code":"css", - "title":"What Storage Options Does CSS Provide?", - "uri":"css_02_0008.html", + "title":"Memory Flow Control", + "uri":"en-us_topic_0000001528499157.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"152", "code":"155" }, { - "desc":"You can configure up to 200 nodes for a cluster (each node corresponds to an ECS). The maximum storage capacity of an ECS is the total capacity of EVS disks attached to t", + "desc":"The following table describes the global path whitelist parameters for flow control.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Cl", "product_code":"css", - "title":"What Is the Maximum Storage Capacity of CSS?", - "uri":"css_02_0009.html", + "title":"Global Path Whitelist for Flow Control", + "uri":"en-us_topic_0000001528499165.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"152", "code":"156" }, { - "desc":"You can use any of the following three methods to manage CSS or to use search engine APIs. You can initiate requests based on constructed request messages.curlcurl is a c", + "desc":"Request sampling can record the access IP addresses, the number of accessed nodes, request paths, request URLs, and request bodies, which can be used to obtain the IP add", "product_code":"css", - "title":"How Can I Manage CSS?", - "uri":"css_02_0017.html", + "title":"Request Sampling", + "uri":"en-us_topic_0000001477579356.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"152", "code":"157" }, { - "desc":"You can store the following logs and files:Log files: Elasticsearch logsData files: Elasticsearch index filesOther files: cluster configuration filesOS: 5% storage space ", + "desc":"Flow control can be implemented via an independent API.Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the targe", "product_code":"css", - "title":"What Can the Disk Space of a CSS Cluster Be Used For?", - "uri":"css_02_0010.html", + "title":"Flow Control", + "uri":"en-us_topic_0000001528299577.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"152", "code":"158" }, { - "desc":"Log in to the console.On the Clusters page, click Access Kibana in the Operation column of a cluster.Log in to Kibana and choose Dev Tools.On the Console page, run the GE", + "desc":"You can check access logs in either of the following ways:Enable and check access logs via an independent API. Configure the API parameters to record the access log time ", "product_code":"css", - "title":"How Do I Check the Numbers of Shards and Replicas in a Cluster on the CSS Console?", - "uri":"css_02_0093.html", + "title":"Access Logs", + "uri":"en-us_topic_0000001528659101.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"152", "code":"159" }, { - "desc":"CSS supports two data compression algorithms: LZ4 (by default) and best_compression.LZ4 algorithmLZ4 is the default compression algorithm of Elasticsearch. This algorithm", + "desc":"CPU flow control can be implemented based on the CPU usage of a node.You can configure the CPU usage threshold of a node to prevent the node from breaking down due to hea", "product_code":"css", - "title":"What Data Compression Algorithms Does CSS Use?", - "uri":"css_02_0041.html", + "title":"CPU Flow Control", + "uri":"en-us_topic_0000001477419744.html", "doc_type":"usermanual", - "p_code":"151", + "p_code":"152", "code":"160" }, { - "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "desc":"You can block all traffic in one click, except the traffic that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.Log in to the", "product_code":"css", - "title":"Functions", - "uri":"css_02_0055.html", + "title":"One-click Traffic Blocking", + "uri":"en-us_topic_0000001477739380.html", "doc_type":"usermanual", - "p_code":"150", + "p_code":"152", "code":"161" }, { - "desc":"Elasticsearch does not support direct data migration between different VPCs. You can use either of the following methods to migrate data.Use the backup and restoration fu", + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"Can Elasticsearch Data Be Migrated Between VPCs?", - "uri":"css_02_0058.html", + "title":"Large Query Isolation", + "uri":"en-us_topic_0000001477899220.html", "doc_type":"usermanual", - "p_code":"161", + "p_code":"118", "code":"162" }, { - "desc":"CSS clusters cannot be directly migrated. You can back up a cluster to an OBS bucket and restore it to a new region.If the OBS bucket is in the same region as your CSS cl", + "desc":"The large query isolation feature allows you to separately manage large queries. You can isolate query requests that consume a large amount of memory or take a long perio", "product_code":"css", - "title":"How Do I Migrate a CSS Cluster Across Regions?", - "uri":"css_02_0094.html", + "title":"Context", + "uri":"en-us_topic_0000001477739376.html", "doc_type":"usermanual", - "p_code":"161", + "p_code":"162", "code":"163" }, { - "desc":"The slow query log settings of CSS are the same as those of Elasticsearch. You can configure slow query logs via the _settings API. For example, you can run the following", + "desc":"The large query isolation and global timeout features are disabled by default. If you enable them, the configuration will take effect immediately. Perform the following s", "product_code":"css", - "title":"How Do I Configure the Threshold for CSS Slow Query Logs?", - "uri":"css_02_0096.html", + "title":"Procedure", + "uri":"en-us_topic_0000001477579388.html", "doc_type":"usermanual", - "p_code":"161", + "p_code":"162", "code":"164" }, - { - "desc":"The CSS lifecycle is implemented using the Index State Management (ISM) of Open Distro. For details about how to configure policies related to the ISM template, see the O", - "product_code":"css", - "title":"How Do I Update the CSS Lifecycle Policy?", - "uri":"css_02_0119.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"165" - }, - { - "desc":"Log in to the Kibana page of the cluster. In the navigation pane, choose Dev Tools.Modify and run the PUT /*/_settings{\"number_of_replicas\":0} command.Do not directly run", - "product_code":"css", - "title":"How Do I Set the Numbers of Index Copies to 0 in Batches?", - "uri":"css_02_0118.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"166" - }, - { - "desc":"The possible causes are as follows:Shards were unevenly distributed in previous index allocations, and the predominate parameter in the latest indexed shard allocation wa", - "product_code":"css", - "title":"Why All New Index Shards Are Allocated to the Same Node?", - "uri":"css_02_0042.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"167" - }, - { - "desc":"The snapshot function has been enabled for the cluster and snapshot information has been configured.Log in to the CSS management console, and click Clusters in the naviga", - "product_code":"css", - "title":"How Do I Query Snapshot Information?", - "uri":"css_02_0043.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"168" - }, - { - "desc":"A cluster cannot be directly upgraded. You can purchase a cluster of a later version and migrate your data to it.Creating a Cluster: Create a cluster of a later version i", - "product_code":"css", - "title":"Can I Upgrade a Cluster from an Earlier Version to a Later Version?", - "uri":"css_02_0052.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"169" - }, - { - "desc":"Yes. You can use a snapshot stored in OBS to restore a cluster. A deleted cluster that has no snapshots in OBS cannot be restored. Exercise caution when deleting a cluste", - "product_code":"css", - "title":"Can I Restore a Deleted Cluster?", - "uri":"css_02_0120.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"170" - }, - { - "desc":"You can modify TLS algorithms in CSS 7.6.2 and later versions.Log in to the CSS management console.In the navigation pane, choose Clusters. The cluster list is displayed.", - "product_code":"css", - "title":"Can I Modify the TLS Algorithm of an Elasticsearch Cluster?", - "uri":"css_02_0101.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"171" - }, - { - "desc":"If the query results on shards exceed the upper limit of records that can be returned (default value: 10000), you need to increase the limit by changing the value of sear", - "product_code":"css", - "title":"How Do I Set the search.max_buckets Parameter for an ES Cluster?", - "uri":"css_02_0102.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"172" - }, - { - "desc":"If the value of node.roles of a client node is i, then is this client node an injest node?Are there coordinating only nodes in clusters? Are the client requests distribut", - "product_code":"css", - "title":"Does the Value i of node.roles Indicate an Injest Node?", - "uri":"css_02_0127.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"173" - }, - { - "desc":"In Elasticsearch 7.x and later versions, types cannot be created for indexes.If you need to use types, add include_type_name=true to the command. For example:After the co", - "product_code":"css", - "title":"How Do I Create a Type Under an Index in an Elasticsearch 7.x Cluster?", - "uri":"css_02_0132.html", - "doc_type":"usermanual", - "p_code":"161", - "code":"174" - }, { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"Clusters in Security Mode", - "uri":"css_02_0063.html", + "title":"Index Monitoring", + "uri":"en-us_topic_0000001528499133.html", "doc_type":"usermanual", - "p_code":"150", + "p_code":"118", + "code":"165" + }, + { + "desc":"CSS monitors various metrics of the running status and change trend of cluster indexes to measure service usage and handle potential risks in a timely manner, ensuring th", + "product_code":"css", + "title":"Context", + "uri":"en-us_topic_0000001528499125.html", + "doc_type":"usermanual", + "p_code":"165", + "code":"166" + }, + { + "desc":"Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation colu", + "product_code":"css", + "title":"Enabling Index Monitoring", + "uri":"en-us_topic_0000001477579408.html", + "doc_type":"usermanual", + "p_code":"165", + "code":"167" + }, + { + "desc":"You can call an API to query the index read and write traffic within a period of time.A cluster has been created and index monitoring has been enabled.Log in to the CSS m", + "product_code":"css", + "title":"Checking the Index Read and Write Traffic", + "uri":"en-us_topic_0000001528659105.html", + "doc_type":"usermanual", + "p_code":"165", + "code":"168" + }, + { + "desc":"You can check preconfigured index monitoring visualizations on the Dashboard and Visualizations pages of Kibana. You can also customize tables and charts.A cluster has be", + "product_code":"css", + "title":"Checking Index Monitoring Information", + "uri":"en-us_topic_0000001528499197.html", + "doc_type":"usermanual", + "p_code":"165", + "code":"169" + }, + { + "desc":"The configuration file content of kibana-monitor is as follows. You are advised to save the file as monitoring-kibana.ndjson.", + "product_code":"css", + "title":"kibana-monitor", + "uri":"en-us_topic_0000001528499129.html", + "doc_type":"usermanual", + "p_code":"165", + "code":"170" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Enhanced Cluster Monitoring", + "uri":"en-us_topic_0000001477419712.html", + "doc_type":"usermanual", + "p_code":"118", + "code":"171" + }, + { + "desc":"The Elasticsearch community only discusses how to monitor the average latency of search requests, which cannot reflect the actual search performance of a cluster. To enha", + "product_code":"css", + "title":"P99 Latency Monitoring", + "uri":"en-us_topic_0000001477419748.html", + "doc_type":"usermanual", + "p_code":"171", + "code":"172" + }, + { + "desc":"When an external system accesses Elasticsearch through the HTTP protocol, a response and the corresponding status code are returned. The open-source Elasticsearch server ", + "product_code":"css", + "title":"HTTP Status Code Monitoring", + "uri":"en-us_topic_0000001477419772.html", + "doc_type":"usermanual", + "p_code":"171", + "code":"173" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Enhanced Aggregation", + "uri":"en-us_topic_0000001528659121.html", + "doc_type":"usermanual", + "p_code":"118", + "code":"174" + }, + { + "desc":"The enhanced aggregation is an optimization feature for service awareness. With this feature, you can optimize the aggregation analysis capability of observable services.", + "product_code":"css", + "title":"Features", + "uri":"en-us_topic_0000001477419760.html", + "doc_type":"usermanual", + "p_code":"174", "code":"175" }, { - "desc":"Non-security mode: no restrictions.Cluster in security mode: The Filebeat OSS version must match the cluster version. For details on how to download the Filebeat OSS vers", + "desc":"Low-cardinality fields have high data clustering performance when being sorted, which facilitates vectorized optimization. Assume that the following query statement exist", "product_code":"css", - "title":"What Is the Relationship Between the Filebeat Version and Cluster Version?", - "uri":"css_02_0064.html", + "title":"Grouping and Aggregation of Low-cardinality Fields", + "uri":"en-us_topic_0000001528659125.html", "doc_type":"usermanual", - "p_code":"175", + "p_code":"174", "code":"176" }, { - "desc":"The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access.Log in to the CSS management console.In the ", + "desc":"High-cardinality fields are usually used for histogram grouping and aggregation instead of single-point grouping and aggregation. For example, collecting the statistics o", "product_code":"css", - "title":"How Do I Obtain the Security Certificate of CSS?", - "uri":"css_02_0106.html", + "title":"High-cardinality Field Histogram Aggregation", + "uri":"en-us_topic_0000001528499145.html", "doc_type":"usermanual", - "p_code":"175", + "p_code":"174", "code":"177" }, { - "desc":"The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access. Most software supports certificates in the ", + "desc":"In the scenario where low-cardinality and high-cardinality fields are mixed, assume that the following query statement exists:Group the low-cardinality fields and create ", "product_code":"css", - "title":"How Do I Convert the Format of a CER Security Certificate?", - "uri":"css_02_0128.html", + "title":"Low-cardinality and High-cardinality Field Mixing", + "uri":"en-us_topic_0000001528659141.html", "doc_type":"usermanual", - "p_code":"175", + "p_code":"174", "code":"178" }, { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"Resource Usage and Change", - "uri":"css_02_0066.html", + "title":"Read/Write Splitting", + "uri":"en-us_topic_0000001528379249.html", "doc_type":"usermanual", - "p_code":"150", + "p_code":"118", "code":"179" }, { - "desc":"Run the following command to delete a single index data record.curl -XDELETE http://IP:9200/Index_nameIP: the IP address of any node in the clustercurl -XDELETE http://", + "desc":"CSS supports read/write splitting. Data written to the primary cluster (Leader) can be automatically synchronized to the secondary cluster (Follower). In this way, data i", "product_code":"css", - "title":"How Do I Clear Expired Data to Release Storage Space?", - "uri":"css_02_0067.html", + "title":"Features", + "uri":"en-us_topic_0000001528379321.html", "doc_type":"usermanual", "p_code":"179", "code":"180" }, { - "desc":"Run GET _cat/indices?v in Kibana to check the number of cluster replicas. If the value of rep is 1, the cluster has two replicas.If the value of rep is not 1, run the fol", + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", - "title":"How Do I Configure a Two-Replica CSS Cluster?", - "uri":"css_02_0068.html", + "title":"Instructions", + "uri":"en-us_topic_0000001477579376.html", "doc_type":"usermanual", "p_code":"179", "code":"181" }, { - "desc":"Manually: Run the DELETE /my_index command in Kibana.Automatically: Create scheduled tasks to call the index deletion request and periodically execute the tasks. CSS supp", + "desc":"Log in to the CSS management console.Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation col", "product_code":"css", - "title":"How Do I Delete Index Data?", - "uri":"css_02_0069.html", + "title":"Basic Settings", + "uri":"en-us_topic_0000001528379313.html", "doc_type":"usermanual", - "p_code":"179", + "p_code":"181", "code":"182" }, { - "desc":"Once an index is created, the number of primary shards cannot be changed.You can run the following command in Kibana to change the number of replicas:index specifies the ", + "desc":"Synchronize a single index.The request URL and request body parameters are as follows:After the synchronization function is enabled, indexes in the secondary cluster beco", "product_code":"css", - "title":"Can I Change the Number of Shards to Four with Two Replicas When There Is One Shard Set in the JSON File?", - "uri":"css_02_0089.html", + "title":"Synchronizing Specified Indexes", + "uri":"en-us_topic_0000001528659157.html", "doc_type":"usermanual", - "p_code":"179", + "p_code":"181", "code":"183" }, { - "desc":"A large number of shards in a cluster slows down shard creation.If automatic index creation is enabled, slow index creation may cause a large number of write requests to ", + "desc":"The request URL and request body parameters are as follows:The following are two examples:1. Synchronize a single index from the primary cluster to the secondary cluster.", "product_code":"css", - "title":"What Are the Impacts If an Elasticsearch Cluster Has Too Many Shards?", - "uri":"css_02_0124.html", + "title":"Matching Index Synchronization", + "uri":"en-us_topic_0000001528379265.html", "doc_type":"usermanual", - "p_code":"179", + "p_code":"181", "code":"184" }, { - "desc":"Method 1Open Kibana and run the following commands on the Dev Tools page:PUT _all/_settings?preserve_existing=true\n{\n\"index.max_result_window\" : \"10000000\"\n}Open Kibana a", + "desc":"You can specify multiple indexes or use wildcard to match the target indexes and terminate their synchronization tasks. Subsequent modifications to the indexes in the pri", "product_code":"css", - "title":"How Do I Set the Default Maximum Number of Records Displayed on a Page for an Elasticsearch Cluster", - "uri":"css_02_0125.html", + "title":"Stopping Index Synchronization", + "uri":"en-us_topic_0000001477899224.html", "doc_type":"usermanual", - "p_code":"179", + "p_code":"181", "code":"185" }, { - "desc":"Running the delete_by_query command can only add a deletion mark to the target data instead of really deleting it. When you search for data, all data is searched and the ", + "desc":"Querying the created patterns.This API is used to query the pattern list and query a specified pattern by name.An example request is as follows:GET auto_sync/pattern\nGET ", "product_code":"css", - "title":"Why Does the Disk Usage Increase After the delete_by_query Command Was Executed to Delete Data?", - "uri":"css_02_0126.html", + "title":"Other Management APIs", + "uri":"en-us_topic_0000001528499169.html", "doc_type":"usermanual", - "p_code":"179", + "p_code":"181", "code":"186" }, { - "desc":"Clear the fielddataDuring aggregation and sorting, data are converted to the fielddata structure, which occupies a large amount of memory.Run the following commands on Ki", + "desc":"This section describes how to switch from the primary cluster to the secondary cluster when the primary cluster is faulty.1. If the synchronization of specified indexes h", "product_code":"css", - "title":"How Do I Clear the Cache of a CSS Cluster?", - "uri":"css_02_0130.html", + "title":"Best Practices", + "uri":"en-us_topic_0000001477739356.html", "doc_type":"usermanual", "p_code":"179", "code":"187" }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Monitoring", + "uri":"en-us_topic_0000001477419740.html", + "doc_type":"usermanual", + "p_code":"", + "code":"188" + }, + { + "desc":"You can use Cloud Eye to monitor cluster metrics of CSS in real time and quickly handle exceptions. For details about Cloud Eye, see the Cloud Eye User Guide.Table 1 list", + "product_code":"css", + "title":"Monitoring Metrics of Clusters", + "uri":"en-us_topic_0000001528659133.html", + "doc_type":"usermanual", + "p_code":"188", + "code":"189" + }, + { + "desc":"This topic describes CSS metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can search for the monitoring metrics and alarms gener", + "product_code":"css", + "title":"Monitoring Metrics", + "uri":"en-us_topic_0000001599872681.html", + "doc_type":"usermanual", + "p_code":"188", + "code":"190" + }, + { + "desc":"You can use Cloud Eye to monitor the created clusters. After configuring the cluster monitoring, you can log in to the Cloud Eye management console to view cluster metric", + "product_code":"css", + "title":"Configuring Cluster Monitoring", + "uri":"en-us_topic_0000001477579336.html", + "doc_type":"usermanual", + "p_code":"188", + "code":"191" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Auditing", + "uri":"en-us_topic_0000001528499181.html", + "doc_type":"usermanual", + "p_code":"", + "code":"192" + }, + { + "desc":"Cloud Trace Service (CTS) is available on the public cloud platform. With CTS, you can record operations associated with CSS for later query, audit, and backtrack operati", + "product_code":"css", + "title":"Key Operations Recorded by CTS", + "uri":"en-us_topic_0000001528299573.html", + "doc_type":"usermanual", + "p_code":"192", + "code":"193" + }, + { + "desc":"After you enable CTS and the management tracker is created, CTS starts recording operations on cloud resources. CTS stores operation records generated in the last seven d", + "product_code":"css", + "title":"Querying Real-Time Traces", + "uri":"en-us_topic_0000001720964408.html", + "doc_type":"usermanual", + "p_code":"192", + "code":"194" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"FAQs", + "uri":"en-us_topic_0000001876048066.html", + "doc_type":"usermanual", + "p_code":"", + "code":"195" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"General Consulting", + "uri":"en-us_topic_0000001477137534.html", + "doc_type":"usermanual", + "p_code":"195", + "code":"196" + }, + { + "desc":"A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.A region is a physical data center. Each ", + "product_code":"css", + "title":"What Are Regions and AZs?", + "uri":"en-us_topic_0000001528097305.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"197" + }, + { + "desc":"CSS uses network isolation, in addition to various host and data security measures.Network isolationThe entire network is divided into two planes: service plane and manag", + "product_code":"css", + "title":"How Does CSS Ensure Data and Service Security?", + "uri":"en-us_topic_0000001476977546.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"198" + }, + { + "desc":"Disk usage and cluster health status are two key metrics that you can focus on. You can log in to Cloud Eye and configure alarm rules for these metrics. If alarms are rep", + "product_code":"css", + "title":"Which CSS Metrics Should I Focus On?", + "uri":"en-us_topic_0000001528097297.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"199" + }, + { + "desc":"CSS uses EVS and local disks to store your indices. During cluster creation, you can specify the EVS disk type and specifications (the EVS disk size).Supported EVS disk t", + "product_code":"css", + "title":"What Storage Options Does CSS Provide?", + "uri":"en-us_topic_0000001528097293.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"200" + }, + { + "desc":"You can configure up to 200 nodes for a cluster (each node corresponds to an ECS). The maximum storage capacity of an ECS is the total capacity of EVS disks attached to t", + "product_code":"css", + "title":"What Is the Maximum Storage Capacity of CSS?", + "uri":"en-us_topic_0000001527937337.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"201" + }, + { + "desc":"You can use any of the following three methods to manage CSS or to use search engine APIs. You can initiate requests based on constructed request messages.curlcurl is a c", + "product_code":"css", + "title":"How Can I Manage CSS?", + "uri":"en-us_topic_0000001477137546.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"202" + }, + { + "desc":"You can store the following logs and files:Log files: Elasticsearch logsData files: Elasticsearch index filesOther files: cluster configuration filesOS: 5% storage space ", + "product_code":"css", + "title":"What Can the Disk Space of a CSS Cluster Be Used For?", + "uri":"en-us_topic_0000001477297350.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"203" + }, + { + "desc":"Log in to the console.On the Clusters page, click Access Kibana in the Operation column of a cluster.Log in to Kibana and choose Dev Tools.On the Console page, run the GE", + "product_code":"css", + "title":"How Do I Check the Numbers of Shards and Replicas in a Cluster on the CSS Console?", + "uri":"en-us_topic_0000001527697797.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"204" + }, + { + "desc":"CSS supports two data compression algorithms: LZ4 (by default) and best_compression.LZ4 algorithmLZ4 is the default compression algorithm of Elasticsearch. This algorithm", + "product_code":"css", + "title":"What Data Compression Algorithms Does CSS Use?", + "uri":"en-us_topic_0000001477297354.html", + "doc_type":"usermanual", + "p_code":"196", + "code":"205" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Functions", + "uri":"en-us_topic_0000001477137530.html", + "doc_type":"usermanual", + "p_code":"195", + "code":"206" + }, + { + "desc":"Elasticsearch does not support direct data migration between different VPCs. You can use either of the following methods to migrate data.Use the backup and restoration fu", + "product_code":"css", + "title":"Can Elasticsearch Data Be Migrated Between VPCs?", + "uri":"en-us_topic_0000001527937341.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"207" + }, + { + "desc":"CSS clusters cannot be directly migrated. You can back up a cluster to an OBS bucket and restore it to a new region.If the OBS bucket is in the same region as your CSS cl", + "product_code":"css", + "title":"How Do I Migrate a CSS Cluster Across Regions?", + "uri":"en-us_topic_0000001528097309.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"208" + }, + { + "desc":"The slow query log settings of CSS are the same as those of Elasticsearch. You can configure slow query logs via the _settings API. For example, you can run the following", + "product_code":"css", + "title":"How Do I Configure the Threshold for CSS Slow Query Logs?", + "uri":"en-us_topic_0000001476977558.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"209" + }, + { + "desc":"The CSS lifecycle is implemented using the Index State Management (ISM) of Open Distro. For details about how to configure policies related to the ISM template, see the O", + "product_code":"css", + "title":"How Do I Update the CSS Lifecycle Policy?", + "uri":"en-us_topic_0000001477297334.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"210" + }, + { + "desc":"Log in to the Kibana page of the cluster. In the navigation pane, choose Dev Tools.Modify and run the PUT /*/_settings{\"number_of_replicas\":0} command.Do not directly run", + "product_code":"css", + "title":"How Do I Set the Numbers of Index Copies to 0 in Batches?", + "uri":"en-us_topic_0000001477297358.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"211" + }, + { + "desc":"The possible causes are as follows:Shards were unevenly distributed in previous index allocations, and the predominate parameter in the latest indexed shard allocation wa", + "product_code":"css", + "title":"Why All New Index Shards Are Allocated to the Same Node?", + "uri":"en-us_topic_0000001527777449.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"212" + }, + { + "desc":"The snapshot function has been enabled for the cluster and snapshot information has been configured.Log in to the CSS management console, and click Clusters in the naviga", + "product_code":"css", + "title":"How Do I Query Snapshot Information?", + "uri":"en-us_topic_0000001527697777.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"213" + }, + { + "desc":"A cluster cannot be directly upgraded. You can purchase a cluster of a later version and migrate your data to it.Creating a Cluster: Create a cluster of a later version i", + "product_code":"css", + "title":"Can I Upgrade a Cluster from an Earlier Version to a Later Version?", + "uri":"en-us_topic_0000001477137542.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"214" + }, + { + "desc":"Yes. You can use a snapshot stored in OBS to restore a cluster. A deleted cluster that has no snapshots in OBS cannot be restored. Exercise caution when deleting a cluste", + "product_code":"css", + "title":"Can I Restore a Deleted Cluster?", + "uri":"en-us_topic_0000001476817914.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"215" + }, + { + "desc":"You can modify TLS algorithms in CSS 7.6.2 and later versions.Log in to the CSS management console.In the navigation pane, choose Clusters. The cluster list is displayed.", + "product_code":"css", + "title":"Can I Modify the TLS Algorithm of an Elasticsearch Cluster?", + "uri":"en-us_topic_0000001527777437.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"216" + }, + { + "desc":"If the query results on shards exceed the upper limit of records that can be returned (default value: 10000), you need to increase the limit by changing the value of sear", + "product_code":"css", + "title":"How Do I Set the search.max_buckets Parameter for an ES Cluster?", + "uri":"en-us_topic_0000001476817910.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"217" + }, + { + "desc":"If the value of node.roles of a client node is i, then is this client node an injest node?Are there coordinating only nodes in clusters? Are the client requests distribut", + "product_code":"css", + "title":"Does the Value i of node.roles Indicate an Injest Node?", + "uri":"en-us_topic_0000001477137526.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"218" + }, + { + "desc":"In Elasticsearch 7.x and later versions, types cannot be created for indexes.If you need to use types, add include_type_name=true to the command. For example:After the co", + "product_code":"css", + "title":"How Do I Create a Type Under an Index in an Elasticsearch 7.x Cluster?", + "uri":"en-us_topic_0000001528097313.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"219" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Clusters in Security Mode", + "uri":"en-us_topic_0000001527777433.html", + "doc_type":"usermanual", + "p_code":"195", + "code":"220" + }, + { + "desc":"Non-security mode: no restrictions.Cluster in security mode: The Filebeat OSS version must match the cluster version. For details on how to download the Filebeat OSS vers", + "product_code":"css", + "title":"What Is the Relationship Between the Filebeat Version and Cluster Version?", + "uri":"en-us_topic_0000001477137538.html", + "doc_type":"usermanual", + "p_code":"220", + "code":"221" + }, + { + "desc":"The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access.Log in to the CSS management console.In the ", + "product_code":"css", + "title":"How Do I Obtain the Security Certificate of CSS?", + "uri":"en-us_topic_0000001476817894.html", + "doc_type":"usermanual", + "p_code":"220", + "code":"222" + }, + { + "desc":"The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access. Most software supports certificates in the ", + "product_code":"css", + "title":"How Do I Convert the Format of a CER Security Certificate?", + "uri":"en-us_topic_0000001476817906.html", + "doc_type":"usermanual", + "p_code":"220", + "code":"223" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"css", + "title":"Resource Usage and Change", + "uri":"en-us_topic_0000001527697785.html", + "doc_type":"usermanual", + "p_code":"195", + "code":"224" + }, + { + "desc":"Run the following command to delete a single index data record.curl -XDELETE http://IP:9200/Index_nameIP: the IP address of any node in the clustercurl -XDELETE http://", + "product_code":"css", + "title":"How Do I Clear Expired Data to Release Storage Space?", + "uri":"en-us_topic_0000001528097289.html", + "doc_type":"usermanual", + "p_code":"224", + "code":"225" + }, + { + "desc":"Run GET _cat/indices?v in Kibana to check the number of cluster replicas. If the value of rep is 1, the cluster has two replicas.If the value of rep is not 1, run the fol", + "product_code":"css", + "title":"How Do I Configure a Two-Replica CSS Cluster?", + "uri":"en-us_topic_0000001527937333.html", + "doc_type":"usermanual", + "p_code":"224", + "code":"226" + }, + { + "desc":"Manually: Run the DELETE /my_index command in Kibana.Automatically: Create scheduled tasks to call the index deletion request and periodically execute the tasks. CSS supp", + "product_code":"css", + "title":"How Do I Delete Index Data?", + "uri":"en-us_topic_0000001527777445.html", + "doc_type":"usermanual", + "p_code":"224", + "code":"227" + }, + { + "desc":"Once an index is created, the number of primary shards cannot be changed.You can run the following command in Kibana to change the number of replicas:index specifies the ", + "product_code":"css", + "title":"Can I Change the Number of Shards to Four with Two Replicas When There Is One Shard Set in the JSON File?", + "uri":"en-us_topic_0000001476977562.html", + "doc_type":"usermanual", + "p_code":"224", + "code":"228" + }, + { + "desc":"A large number of shards in a cluster slows down shard creation.If automatic index creation is enabled, slow index creation may cause a large number of write requests to ", + "product_code":"css", + "title":"What Are the Impacts If an Elasticsearch Cluster Has Too Many Shards?", + "uri":"en-us_topic_0000001476977554.html", + "doc_type":"usermanual", + "p_code":"224", + "code":"229" + }, + { + "desc":"Method 1Open Kibana and run the following commands on the Dev Tools page:PUT _all/_settings?preserve_existing=true\n{\n\"index.max_result_window\" : \"10000000\"\n}Open Kibana a", + "product_code":"css", + "title":"How Do I Set the Default Maximum Number of Records Displayed on a Page for an Elasticsearch Cluster", + "uri":"en-us_topic_0000001527697781.html", + "doc_type":"usermanual", + "p_code":"224", + "code":"230" + }, + { + "desc":"Running the delete_by_query command can only add a deletion mark to the target data instead of really deleting it. When you search for data, all data is searched and the ", + "product_code":"css", + "title":"Why Does the Disk Usage Increase After the delete_by_query Command Was Executed to Delete Data?", + "uri":"en-us_topic_0000001527777425.html", + "doc_type":"usermanual", + "p_code":"224", + "code":"231" + }, + { + "desc":"Clear the fielddataDuring aggregation and sorting, data are converted to the fielddata structure, which occupies a large amount of memory.Run the following commands on Ki", + "product_code":"css", + "title":"How Do I Clear the Cache of a CSS Cluster?", + "uri":"en-us_topic_0000001528097317.html", + "doc_type":"usermanual", + "p_code":"224", + "code":"232" + }, { "desc":"The cluster monitoring result shows that the average memory usage of a cluster is 98%. Does it affect cluster performance?In an ES cluster, 50% of the memory is occupied ", "product_code":"css", "title":"The Average Memory Usage of an Elasticsearch Cluster Reaches 98%", - "uri":"css_02_0131.html", + "uri":"en-us_topic_0000001527777429.html", "doc_type":"usermanual", - "p_code":"179", - "code":"188" + "p_code":"224", + "code":"233" }, { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", "title":"Components", - "uri":"css_02_0070.html", + "uri":"en-us_topic_0000001527697789.html", "doc_type":"usermanual", - "p_code":"150", - "code":"189" + "p_code":"195", + "code":"234" }, { "desc":"CSS does not currently support installation of Search Guard.CSS provides clusters in security mode, which have the same functions as Search Guard.", "product_code":"css", "title":"Can I Install Search Guard on CSS?", - "uri":"css_02_0088.html", + "uri":"en-us_topic_0000001476977550.html", "doc_type":"usermanual", - "p_code":"189", - "code":"190" + "p_code":"234", + "code":"235" }, { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", "title":"Kibana", - "uri":"css_02_0073.html", + "uri":"en-us_topic_0000001527937345.html", "doc_type":"usermanual", - "p_code":"150", - "code":"191" + "p_code":"195", + "code":"236" }, { "desc":"Exporting data from Kibana requires the SQL Workbench plugin. Currently, you can only export data from Kibana 7.6.2 or later.In SQL Workbench of Kibana, you can enter Ela", "product_code":"css", "title":"Can I Export Data from Kibana?", - "uri":"css_02_0098.html", + "uri":"en-us_topic_0000001527937329.html", "doc_type":"usermanual", - "p_code":"191", - "code":"192" + "p_code":"236", + "code":"237" }, { "desc":"Run the following command to query index data through an API on Kibana:The returned data is shown in the following figure.took: How many milliseconds the query cost.time_", "product_code":"css", "title":"How Do I Query Index Data on Kibana in an ES Cluster?", - "uri":"css_02_0099.html", + "uri":"en-us_topic_0000001527777441.html", "doc_type":"usermanual", - "p_code":"191", - "code":"193" + "p_code":"236", + "code":"238" }, { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", "title":"Clusters", - "uri":"css_02_0077.html", + "uri":"en-us_topic_0000001476817902.html", "doc_type":"usermanual", - "p_code":"150", - "code":"194" + "p_code":"195", + "code":"239" }, { "desc":"Perform the following steps to troubleshoot this problem:Check whether the ECS instance and cluster are in the same VPC.If they are, go to 2.If they are not, create an EC", "product_code":"css", "title":"Why Does My ECS Fail to Connect to a Cluster?", - "uri":"css_02_0025.html", + "uri":"en-us_topic_0000001476977542.html", "doc_type":"usermanual", - "p_code":"194", - "code":"195" + "p_code":"239", + "code":"240" }, { "desc":"No.", "product_code":"css", "title":"Can a New Cluster Use the IP Address of the Old Cluster?", - "uri":"css_02_0078.html", + "uri":"en-us_topic_0000001477297362.html", "doc_type":"usermanual", - "p_code":"194", - "code":"196" + "p_code":"239", + "code":"241" }, { "desc":"No. To access a cluster from the Internet, see Public IP Address Access.", "product_code":"css", "title":"Can I Associate My EIP If I Want to Access the Cluster from the Internet?", - "uri":"css_02_0079.html", + "uri":"en-us_topic_0000001477297338.html", "doc_type":"usermanual", - "p_code":"194", - "code":"197" + "p_code":"239", + "code":"242" }, { "desc":"No. Currently, CSS does not integrate the x-pack component.", "product_code":"css", "title":"Can I Use x-pack-sql-jdbc to Access CSS Clusters and Query Data?", - "uri":"css_02_0081.html", + "uri":"en-us_topic_0000001477297346.html", "doc_type":"usermanual", - "p_code":"194", - "code":"198" + "p_code":"239", + "code":"243" }, { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", "title":"Ports", - "uri":"css_02_0082.html", + "uri":"en-us_topic_0000001476817918.html", "doc_type":"usermanual", - "p_code":"150", - "code":"199" + "p_code":"195", + "code":"244" }, { "desc":"Yes. Port 9200 is used by external systems to access CSS clusters, and port 9300 is used for communication between nodes.The methods for accessing port 9300 are as follow", "product_code":"css", "title":"Do Ports 9200 and 9300 Both Open?", - "uri":"css_02_0083.html", + "uri":"en-us_topic_0000001527697793.html", "doc_type":"usermanual", - "p_code":"199", - "code":"200" + "p_code":"244", + "code":"245" }, { "desc":"Currently to access Kibana dashboard of CSS Service, a user has to login to OTC consoleand navigate to Kibana login page.To make the access convenient a user can utilize ", "product_code":"css", "title":"How to access Kibana from outside cloud using ELB?", - "uri":"css_02_0201.html", + "uri":"en-us_topic_0000001562137917.html", "doc_type":"usermanual", - "p_code":"199", - "code":"201" + "p_code":"244", + "code":"246" }, { "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", "product_code":"css", "title":"Change History", - "uri":"css_01_0055.html", + "uri":"en-us_topic_0000001477899216.html", "doc_type":"usermanual", "p_code":"", - "code":"202" + "code":"247" } ] \ No newline at end of file diff --git a/docs/css/umn/css_01_0001.html b/docs/css/umn/css_01_0001.html deleted file mode 100644 index 83d2381d..00000000 --- a/docs/css/umn/css_01_0001.html +++ /dev/null @@ -1,31 +0,0 @@ - - - -

Overview

- -

-
- -
- -
- diff --git a/docs/css/umn/css_01_0006.html b/docs/css/umn/css_01_0006.html deleted file mode 100644 index 8743b2e7..00000000 --- a/docs/css/umn/css_01_0006.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

Getting Started

-
-
- -
- diff --git a/docs/css/umn/css_01_0007.html b/docs/css/umn/css_01_0007.html deleted file mode 100644 index ed58ed9c..00000000 --- a/docs/css/umn/css_01_0007.html +++ /dev/null @@ -1,302 +0,0 @@ - - -

Getting Started with Elasticsearch

-

This section describes how to use Elasticsearch for product search. You can use the Elasticsearch search engine of CSS to search for data based on the scenario example. The basic operation process is as follows:

- -

Scenario Description

A women's clothing brand builds an e-commerce website. It uses traditional databases to provide a product search function for users. However, due to an increase in the number of users and business growth, the traditional databases have slow response and low accuracy. To improve user experience and user retention, the e-commerce website plans to use Elasticsearch to provide the product search function for users.

-

This section describes how to use Elasticsearch to provide the search function for users.

-

Assume that the e-commerce website provides the following data:

-
{
-"products":[
-{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
-{"productName":"Latest art shirts for women in 2017 autumn","size":"M"}
-{"productName":"Latest art shirts for women in 2017 autumn","size":"S"}
-{"productName":"Latest jeans for women in spring 2018","size":"M"}
-{"productName":"Latest jeans for women in spring 2018","size":"S"}
-{"productName":"Latest casual pants for women in spring 2017","size":"L"}
-{"productName":"Latest casual pants for women in spring 2017","size":"S"}
-]
-}
-
-

Step 1: Create a Cluster

Create a cluster using Elasticsearch as the search engine. In this example, suppose that you create a cluster named Es-xfx. This cluster is used only for getting started with Elasticsearch. For this cluster, you are advised to select css.medium.8 for Node Specifications, Common I/O for Node Storage Type, and 40 GB for Node Storage Capacity. For details, see Creating an Elasticsearch Cluster in Non-Security Mode.

-

After you create the cluster, switch to the cluster list to view the created cluster. If the Status of the cluster is Available, the cluster is created successfully.

-
Figure 1 Creating a cluster
-
-

Step 2: Import Data

CSS supports importing data to Elasticsearch using Logstash, Kibana, or APIs. Kibana lets you visualize your Elasticsearch data. The following procedure illustrates how to import data to Elasticsearch using Kibana.

-
  1. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column to go to the Kibana login page.
    • Non-security cluster: The Kibana console is displayed.
    • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the one specified during cluster creation.
    -
  2. In the navigation pane of Kibana on the left, choose Dev Tools, as shown in Figure 2.

    The text box on the left is the input box. The triangle icon in the upper right corner of the input box is the command execution button. The text box on the right area is the result output box.

    -
    Figure 2 Console page
    -

    The Kibana UI varies depending on the Kibana version.

    -
    -
  3. On the Console page, run the following command to create index named my_store:
    (Versions earlier than 7.x)
    PUT /my_store
    -{
    -  "settings": {
    -    "number_of_shards": 1
    -  },
    -  "mappings": {
    -    "products": {
    -      "properties": {
    -        "productName": {
    -          "type": "text",
    -          "analyzer": "ik_smart"
    -        },
    -        "size": {
    -          "type": "keyword"
    -        }
    -      }
    -    }
    -  }
    -}
    -
    -

    (Versions later than 7.x)

    -
    PUT /my_store
    -{
    -  "settings": {
    -    "number_of_shards": 1
    -  },
    -  "mappings": {
    -          "properties": {
    -            "productName": {
    -              "type": "text",
    -              "analyzer": "ik_smart"
    -        },
    -        "size": {
    -          "type": "keyword"
    -        }
    -      }
    -    }
    -  }
    -

    The command output is similar to the following:

    -
    {
    -  "acknowledged" : true,
    -  "shards_acknowledged" : true,
    -  "index" : "my_store"
    -}
    -
  4. On the Console page, run the following command to import data to index named my_store:

    (Versions earlier than 7.x)

    -
    POST /my_store/products/_bulk
    -{"index":{}}
    -{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
    -{"index":{}}
    -{"productName":"Latest art shirts for women in 2017 autumn","size":"M"}
    -{"index":{}}
    -{"productName":"Latest art shirts for women in 2017 autumn","size":"S"}
    -{"index":{}}
    -{"productName":"Latest jeans for women in spring 2018","size":"M"}
    -{"index":{}}
    -{"productName":"Latest jeans for women in spring 2018","size":"S"}
    -{"index":{}}
    -{"productName":"Latest casual pants for women in spring 2017","size":"L"}
    -{"index":{}}
    -{"productName":"Latest casual pants for women in spring 2017","size":"S"}
    -
    -

    (Versions later than 7.x)

    -
    POST /my_store/_doc/_bulk
    -{"index":{}}
    -{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
    -{"index":{}}
    -{"productName":"Latest art shirts for women in 2017 autumn","size":"M"}
    -{"index":{}}
    -{"productName":"Latest art shirts for women in 2017 autumn","size":"S"}
    -{"index":{}}
    -{"productName":"Latest jeans for women in spring 2018","size":"M"}
    -{"index":{}}
    -{"productName":"Latest jeans for women in spring 2018","size":"S"}
    -{"index":{}}
    -{"productName":"Latest casual pants for women in spring 2017","size":"L"}
    -{"index":{}}{"productName":"Latest casual pants for women in spring 2017","size":"S"}
    -

    If the value of the errors field in the command output is false, the data is imported successfully.

    -
-
-

Step 3: Search for Data

  • Full-text search

    If you access the e-commerce website and want to search for commodities whose names include "spring jeans", enter "spring jeans" to begin your search. The following example shows the command to be executed on Kibana and the command output.

    -

    Command to be executed on Kibana:

    -

    (Versions earlier than 7.x)

    -
    GET /my_store/products/_search
    -{
    -  "query": {"match": {
    -    "productName": "spring jeans"
    -  }}
    -}
    -

    (Versions later than 7.x)

    -
    GET /my_store/_search
    -{
    -  "query": {"match": {
    -    "productName": "spring jeans"
    -  }}
    -}
    -

    The command output is similar to the following:

    -
    {
    -  "took": 80,
    -  "timed_out": false,
    -  "_shards": {
    -    "total": 1,
    -    "successful": 1,
    -    "skipped": 0,
    -    "failed": 0
    -  },
    -  "hits": {
    -    "total": 4,
    -    "max_score": 1.8069603,
    -    "hits": [
    -      {
    -        "_index": "my_store",
    -        "_type": "products",
    -        "_id": "yTG1QWUBRuneTTG2KJSq",
    -        "_score": 1.8069603,
    -        "_source": {
    -          "productName": "Latest jeans for women in spring 2018",
    -          "size": "M"
    -        }
    -      },
    -      {
    -        "_index": "my_store",
    -        "_type": "products",
    -        "_id": "yjG1QWUBRuneTTG2KJSq",
    -        "_score": 1.8069603,
    -        "_source": {
    -          "productName": "Latest jeans for women in spring 2018",
    -          "size": "S"
    -        }
    -      },
    -      {
    -        "_index": "my_store",
    -        "_type": "products",
    -        "_id": "yzG1QWUBRuneTTG2KJSq",
    -        "_score": 0.56677663,
    -        "_source": {
    -          "productName": "Latest casual pants for women in spring 2017",
    -          "size": "L"
    -        }
    -      },
    -      {
    -        "_index": "my_store",
    -        "_type": "products",
    -        "_id": "zDG1QWUBRuneTTG2KJSq",
    -        "_score": 0.56677663,
    -        "_source": {
    -          "productName": "Latest casual pants for women in spring 2017",
    -          "size": "S"
    -        }
    -      }
    -    ]
    -  }
    -}
    -
    • Elasticsearch supports full-text search. The preceding command searches for the information about all commodities whose names include "spring" or "jeans".
    • Unlike traditional databases, Elasticsearch can return results in milliseconds by using inverted indexes.
    • Elasticsearch supports sorting by score. In the command output, information about the first two commodities contains both "spring" and "jeans", while that about the last two products contain only "spring". Therefore, the first two commodities rank prior to the last two due to high keyword match.
    -
-
  • Aggregation result display

    The e-commerce website provides the function of displaying aggregation results. For example, it classifies commodities corresponding to "spring" based on the size so that you can collect the number of products of different sizes. The following example shows the command to be executed on Kibana and the command output.

    -

    Command to be executed on Kibana:

    -

    (Versions earlier than 7.x)

    -
    GET /my_store/products/_search
    -{
    -"query": {
    -"match": { "productName": "spring" }
    -},
    -"size": 0,
    -"aggs": {
    -"sizes": {
    -"terms": { "field": "size" }
    -}
    -}
    -}
    -

    (Versions later than 7.x)

    -
    GET /my_store/_search
    -{
    -"query": {
    -"match": { "productName": "spring" }
    -},
    -"size": 0,
    -"aggs": {
    -"sizes": {
    -"terms": { "field": "size" }
    -}
    -}
    -}
    -

    The command output is similar to the following:

    -

    (Versions earlier than 7.x)

    -
    {
    -  "took": 66,
    -  "timed_out": false,
    -  "_shards": {
    -    "total": 1,
    -    "successful": 1,
    -    "skipped": 0,
    -    "failed": 0
    -  },
    -  "hits": {
    -    "total": 4,
    -    "max_score": 0,
    -    "hits": []
    -  },
    -  "aggregations": {
    -    "sizes": {
    -      "doc_count_error_upper_bound": 0,
    -      "sum_other_doc_count": 0,
    -      "buckets": [
    -        {
    -          "key": "S",
    -          "doc_count": 2
    -        },
    -        {
    -          "key": "L",
    -          "doc_count": 1
    -        },
    -        {
    -          "key": "M",
    -          "doc_count": 1
    -        }
    -      ]
    -    }
    -  }
    -}
    -

    (Versions later than 7.x)

    -
    {
    -  "took" : 27,
    -  "timed_out" : false,
    -  "_shards" : {
    -    "total" : 1,
    -    "successful" : 1,
    -    "skipped" : 0,
    -    "failed" : 0
    -  },
    -  "hits" : {
    -    "total" : {
    -      "value" : 3,
    -      "relation" : "eq"
    -    },
    -    "max_score" : null,
    -    "hits" : [ ]
    -  },
    -  "aggregations" : {
    -    "sizes" : {
    -      "doc_count_error_upper_bound" : 0,
    -      "sum_other_doc_count" : 0,
    -      "buckets" : [
    -        {
    -          "key" : "L",
    -          "doc_count" : 1
    -        },
    -        {
    -          "key" : "M",
    -          "doc_count" : 1
    -        },
    -        {
    -          "key" : "S",
    -          "doc_count" : 1
    -        }
    -      ]
    -    }
    -  }
    -}
    -
-
-

Step 4: Delete the Cluster

Once you understand the process and method of using Elasticsearch, you can perform the following steps to delete the cluster you created for the example and its data to avoid resource wastage.

-

After you delete a cluster, its data cannot be restored. Exercise caution when deleting a cluster.

-
-
  1. Log in to the CSS management console. In the navigation pane on the left, choose Clusters > Elasticsearch.
  2. Locate the row that contains cluster Es-xfx and click More > Delete in the Operation column.
  3. In the displayed dialog box, enter the name of the cluster to be deleted and click OK.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0008.html b/docs/css/umn/css_01_0008.html deleted file mode 100644 index cd1beabb..00000000 --- a/docs/css/umn/css_01_0008.html +++ /dev/null @@ -1,19 +0,0 @@ - - -

Creating an Elasticsearch Cluster

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0009.html b/docs/css/umn/css_01_0009.html deleted file mode 100644 index 51f2f544..00000000 --- a/docs/css/umn/css_01_0009.html +++ /dev/null @@ -1,27 +0,0 @@ - - -

Managing Elasticsearch Clusters

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0011.html b/docs/css/umn/css_01_0011.html deleted file mode 100644 index 4084bbd5..00000000 --- a/docs/css/umn/css_01_0011.html +++ /dev/null @@ -1,343 +0,0 @@ - - -

Creating an Elasticsearch Cluster in Security Mode

-

This section describes how to create an Elasticsearch cluster in security mode.

-

Public IP address access and Kibana public access can be used only after security mode is enabled.

-
-

Context

  • When creating a cluster, the number of nodes that can be added varies according to the node type. For details, see Table 1. -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Number of nodes in different types

    Node Type

    -

    Number

    -

    ess

    -

    ess: 1-32

    -

    ess, ess-master

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess, ess-client

    -

    ess: 1-32

    -

    ess-client: 1-32

    -

    ess, ess-cold

    -

    ess: 1-32

    -

    ess-cold: 1-32

    -

    ess, ess-master, ess-client

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-client: 1-32

    -

    ess, ess-master, ess-cold

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-cold: 1-32

    -

    ess, ess-client, ess-cold

    -

    ess: 1-32

    -

    ess-client: 1-32

    -

    ess-cold: 1-32

    -

    ess, ess-master, ess-client, ess-cold

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-client: 1-32

    -

    ess-cold: 1-32

    -
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    -
    -
    -
    -
-
-

Procedure

  1. Log in to the CSS management console.
  2. On the Dashboard page, click Create Cluster in the upper right corner. The Create page is displayed.

    Alternatively, choose Clusters > Elasticsearch in the navigation tree on the left. Click Create Cluster in the upper right corner. The Create page is displayed.

    -
  3. Specify Region and AZ. -
    - - - - - - - - - - -
    Table 2 Region and AZ parameters

    Parameter

    -

    Description

    -

    Region

    -

    Select a region for the cluster from the drop-down list on the right. Currently, only eu-de and eu-nl are supported.

    -

    AZ

    -

    Select AZs associated with the cluster region.

    -

    You can select a maximum of three AZs. For details, see Deploying a Cross-AZ Cluster.

    -
    -
    -
  4. Configure basic cluster information. -
    - - - - - - - - - - -
    Table 3 Basic parameters

    Parameter

    -

    Description

    -

    Version

    -

    Select a cluster version from the drop-down list box.

    -

    Name

    -

    Cluster name, which contains 4 to 32 characters. Only letters, numbers, hyphens (-), and underscores (_) are allowed and the value must start with a letter.

    -
    NOTE:

    After a cluster is created, you can modify the cluster name as required. Click the name of a cluster to be modified. On the displayed Basic Information page, click next to the cluster name. After the modification is completed, click to save the modification. If you want to cancel the modification, click .

    -
    -
    -
    -
  5. Configure cluster specifications. -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 4 Parameter description

    Parameter

    -

    Description

    -

    Nodes

    -

    Number of nodes in a cluster. Select a number from 1 to 32. You are advised to configure three or more nodes to ensure high availability of the cluster.

    -
    • If neither a master node nor client node is enabled, the nodes specified by this parameter are used to serve as both the master node and client node. Nodes provide the cluster management, data storage, cluster access, and data analysis functions. To ensure data stability in the cluster, it is recommended that you set this parameter to a value no less than 3.
    • If only the master node function is enabled, nodes specified by this parameter are used to store data and provide functions of client nodes.
    • If both the master and client node functions are enabled, the nodes specified by this parameter are only used for storing data.
    • If only the client node function is enabled, nodes specified by this parameter are used to store data and provide functions of the master node.
    -

    CPU Architecture

    -

    Currently, support x86. The supported type is determined by the actual regional environment.

    -

    Node Specifications

    -

    Specifications of nodes in a cluster. You can select a specified specification based on your needs. Each cluster supports only one specification.

    -

    After you select a flavor, the CPU and memory corresponding to the current specification are displayed below the parameter. For example, if you select css.medium.8, then 1 vCPUs | 8 GB will be displayed, indicating that the node flavor you select contains one vCPU and 8 GB memory.

    -

    Node Storage Type

    -

    In the current version, the following options are available: Common I/O, High I/O, and Ultra-high I/O.

    -

    Node Storage Capacity

    -

    Storage space. Its value varies with node specifications.

    -

    The node storage capacity must be a multiple of 20.

    -

    Disk Encryption

    -

    If you select this option, the nodes in the cluster you create will use encrypted EVS disks to protect data. By default, this option is not selected. Note that you cannot modify this setting after the cluster is created. Therefore, exercise caution when performing the setting.

    -

    After you select this option, you need to select an available key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    -

    Enabling disk encryption has no impact on your operations on a cluster (such as accessing the cluster and importing data to the cluster). However, after you enable disk encryption, operation performance deteriorates by about 10%.

    -
    NOTE:
    • If the cluster is in the Available status and the key used for disk encryption is in the Pending deletion or disable status or has been deleted after a cluster is created, cluster scale-out is not allowed. However, other operations on the cluster, such as restarting the cluster, creating snapshots, restoring the cluster, and importing data to the cluster are not affected. In addition, this key cannot be used for cluster creation in the future.
    • After a cluster is created, do not delete the key used by the cluster. Otherwise, the cluster will become unavailable.
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    -
    -

    Master node

    -

    The master node manages all nodes in the cluster. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the master node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    -

    After enabling the master node, specify Node Specifications, Nodes, and Node Storage Type. The value of Nodes must be an odd number equal to or greater than 3. Up to nine nodes are supported. The value of Node Storage Capacity is fixed. You can select a storage type based on your needs.

    -

    Client node

    -

    The client node allows clients to access clusters and analyze data. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the client node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    -

    After enabling the client node, specify Node Specifications, Nodes and Node Storage Type. The value of Nodes ranges from 1 to 32. The value of Node Storage Capacity is fixed. You can select a storage type based on your needs.

    -

    Cold data node

    -

    The cold data node is used to store historical data, for which query responses can be returned in minutes. If you do not quire a quick query response, store historical data on cold data nodes to reduce costs.

    -

    After enabling cold data node, configure Node Specifications, Nodes, Node Storage Type, and Node Storage Capacity. The value of Nodes ranges from 1 to 32. Select Node Storage Type and Node Storage Capacity as requirement.

    -

    After the cold data node is enabled, CSS automatically adds cold and hot tags to related nodes.

    -
    -
    -
    Figure 1 Configuring host specifications
    -
  6. Set the enterprise project.

    When creating a CSS cluster, you can bind an enterprise project to the cluster if you have enabled the enterprise project function. You can select an enterprise project created by the current user from the drop-down list on the right or click View Project Management to go to the Enterprise Project Management console and create a new project or view existing projects.

    -
  7. Click Next: Configure Network. Configure the cluster network. -
    - - - - - - - - - - - - - - - - - - - - - - -
    Table 5 Network configuration parameters

    Parameter

    -

    Description

    -

    VPC

    -

    A VPC is a secure, isolated, and logical network environment.

    -

    Select the target VPC. Click View VPC to enter the VPC management console and view the created VPC names and IDs. If no VPCs are available, create one.

    -
    NOTE:

    The VPC must contain CIDRs. Otherwise, cluster creation will fail. By default, a VPC will contain CIDRs.

    -
    -

    Subnet

    -

    A subnet provides dedicated network resources that are isolated from other networks, improving network security.

    -

    Select the target subnet. You can access the VPC management console to view the names and IDs of the existing subnets in the VPC.

    -

    Security Group

    -

    A security group implements access control for ECSs that have the same security protection requirements in a VPC. To view more details about the security group, click View Security Group.

    -
    NOTE:
    • For cluster access purposes, ensure that the security group contains port 9200.
    • If your cluster version is 7.6.2 or later, ensure that all the ports used for communication between nodes in the same security group are allowed. If such settings cannot be configured, ensure at least the access to port 9300 is allowed.
    • After the port 9300 is enabled, if the cluster disk usage is high, delete expired data to release the disk storage space.
    -
    -

    Security Mode

    -

    After the security mode is enabled, communication will be encrypted and authentication required for the cluster.

    -
    • The default Administrator Username is admin.
    • Set and confirm the Administrator Password. This password will be required when you access this cluster.
    -

    HTTPS Access

    -

    HTTPS access can be enabled only after the security mode of the cluster is enabled. After HTTPS access is enabled, communication is encrypted when you access the cluster.

    -
    NOTE:

    Security clusters use HTTPS for communication, which is much slower than non-security clusters that use HTTP for communication. If you want fast read performance and the permission provided by the security mode to isolate resources (such as indexes, documents, and fields), you can disable the HTTPS Access function. After HTTPS Access is disabled, HTTP protocol is used for cluster communication. In this case, data security cannot be ensured and public IP address cannot be used.

    -
    -

    Public IP Address

    -

    If HTTPS Access is enabled, you can configure Public Network Access and obtain an IP address for public network access. This IP address can be used to access this security cluster through the public network. For details, see Accessing a Cluster from a Public Network.

    -
    -
    -
    Figure 2 Configuring network specifications
    -
  8. Click Next: Configure Advanced Settings. Configure the automatic snapshot creation and other functions.
    1. Configure Cluster Snapshot. Set basic configuration and snapshot configuration.

      The cluster snapshot function is enabled by default. You can also disable this function as required. To store automatic snapshots in OBS, an agency will be created to access OBS. Additional cost will be incurred if snapshots are stored in standard storage.

      - -
      - - - - - - - - - - - - - - - - -
      Table 6 Cluster snapshot parameter

      Parameter

      -

      Description

      -

      OBS bucket

      -

      Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

      -

      The created or existing OBS bucket must meet the following requirements:

      -
      • Storage Class is Standard or Warm.
      • Region must be the same as that of the created cluster.
      -

      Backup Path

      -

      Storage path of the snapshot in the OBS bucket.

      -
      The backup path configuration rules are as follows:
      • The backup path cannot contain the following characters: \:*?"<>|
      • The backup path cannot start with a slash (/).
      • The backup path cannot start or end with a period (.).
      • The backup path cannot contain more than 1,023 characters.
      -
      -

      IAM Agency

      -

      IAM agency authorized by the current account to CSS access or maintain data stored in the OBS bucket. You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

      -

      The created or existing IAM agency must meet the following requirements:

      -
      • Agency Type must be Cloud service.
      • Set Cloud Service to CSS.
      • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
      -

      Snapshot Encryption

      -

      Indicates whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

      -

      After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to switch to the KMS management console to create or modify a key. For details, see Creating a CMK.

      -
      • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
      • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
      • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
      • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
      -
      -
      - -
      - - - - - - - - - - - - - - - - -
      Table 7 Automatic snapshot creation parameter

      Parameter

      -

      Description

      -

      Snapshot Name Prefix

      -

      The snapshot name prefix contains 1 to 32 characters and must start with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. A snapshot name consists of a snapshot name prefix and a timestamp, for example, snapshot-1566921603720.

      -

      Time Zone

      -

      Time zone for the backup time, which cannot be changed. Specify backup started time based on the time zone.

      -

      Backup Start Time

      -

      The time when the backup starts automatically every day. You can specify this parameter only in full hours, for example, 00:00 or 01:00. The value ranges from 00:00 to 23:00. Select a time from the drop-down list.

      -

      Retention Period (days)

      -

      The number of days that snapshots are retained in the OBS bucket. The value ranges from 1 to 90. You can specify this parameter as required. The system automatically deletes expired snapshots every hour at half past the hour.

      -
      -
      -
      Figure 3 Setting parameters for automatic snapshot creation
      -
    2. Configure advanced settings for the cluster.
      • Default: The VPC Endpoint Service, Kibana Public Access, and Tag functions are disabled by default. You can manually enable these functions after the cluster is created.
      • Custom: You can enable the VPC Endpoint Service, Kibana Public Access, and Tag functions as required.
      - -
      - - - - - - - - - - - - - -
      Table 8 Parameters for advanced settings

      Parameter

      -

      Description

      -

      VPC Endpoint Service

      -

      After enabling this function, you can obtain a private domain name for accessing the cluster in the same VPC. For details, see Accessing a Cluster Using a VPC Endpoint.

      -

      Kibana Public Access

      -

      You can configure this parameter only when security mode is enabled for a cluster. After enabling this function, you can obtain a public IP address for accessing Kibana. For details, see Accessing a Cluster from a Kibana Public Network.

      -

      Tag

      -

      Adding tags to clusters can help you identify and manage your cluster resources. You can customize tags or use tags predefined by Tag Management Service (TMS). For details, see Managing Tags.

      -
      -
      -
    -
  9. Click Next: Confirm. Check the configuration and click Next to create a cluster.
  10. Click Back to Cluster List to switch to the Clusters page. The cluster you created is listed on the displayed page and its status is Creating. If the cluster is successfully created, its status will change to Available.

    If the cluster creation fails, create the cluster again.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0014.html b/docs/css/umn/css_01_0014.html deleted file mode 100644 index 2bcae056..00000000 --- a/docs/css/umn/css_01_0014.html +++ /dev/null @@ -1,25 +0,0 @@ - - -

Restarting a Cluster

-

If a cluster becomes faulty, you can restart it to check if it can run normally.

-

Prerequisites

  • The target cluster is not frozen and has no task in progress.
  • If a cluster is available, ensure that it has stopped processing service requests (such as importing data and searching for data). Otherwise, data may be lost when the cluster is restarted. You are advised to perform this operation during off-peak hours.
-
-

Context

CSS supports quick restart and rolling restart.

-
Quick Restart
  • All clusters support this function.
  • If you select a node type for quick restart, all nodes of the selected type will be restarted together.
  • If you select a node name for quick restart, only the specified node will be restarted.
  • The cluster is unavailable during quick restart.
-
-
Rolling Restart
  • Rolling restart is supported only when a cluster has at least three nodes (including master nodes, client nodes, and cold data nodes).
  • Rolling restart can be performed only by specifying node types. If you select a node type for rolling restart, the nodes of the selected type will be restarted in sequence.
  • During the rolling restart, only the nodes that are being restarted are unavailable and other nodes can run normally.
  • When the data volume is large, rolling restart will take a long time.
-
-
-

Quick Restart

  1. Log in to the CSS management console.
  2. In the navigation tree on the left, select a cluster type. The cluster management list page is displayed.
  3. In the Operation column of the target cluster, choose More > Restart.
  4. On the Restart Cluster page, select Quick Restart.

    You can quick restart nodes by Node type or Node name. If you select Node type, then you can select multiple node types and perform quick restart at the time. If you select Node name, you can perform quick restart only on one node at a time.

    -
  5. Refresh the page and check the cluster status. During the restart, the cluster status is Processing, and the task status is Restarting. If the cluster status changes to Available, the cluster has been restarted successfully.
-
-

Rolling Restart

  1. Log in to the CSS management console.
  2. In the navigation tree on the left, select a cluster type. The cluster management list page is displayed.
  3. In the Operation column of the target cluster, choose More > Restart.
  4. On the Restart Cluster page, select Rolling Restart.

    You can perform rolling restart by Node type. Select specific node types for restart.

    -
  5. Refresh the page and check the cluster status. During the restart, the cluster status is Processing, and the task status is Restarting. If the cluster status changes to Available, the cluster has been restarted successfully.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0015.html b/docs/css/umn/css_01_0015.html deleted file mode 100644 index d33ab41a..00000000 --- a/docs/css/umn/css_01_0015.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

Deleting a Cluster

-

You can delete clusters that you no longer need.

-
  • If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.
  • The snapshots of a cluster stored in OBS are not deleted with the cluster. You can restore a deleted cluster using its snapshots stored in the OBS bucket.
-
-

Procedure

  1. Log in to the CSS management console.
  2. In the navigation tree on the left, select a cluster type. The cluster list page is displayed.
  3. Locate the target cluster and click More > Delete in the Operation column.
  4. In the displayed dialog box, enter the name of the cluster to be deleted and click OK.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0024.html b/docs/css/umn/css_01_0024.html deleted file mode 100644 index 9f0f7c7f..00000000 --- a/docs/css/umn/css_01_0024.html +++ /dev/null @@ -1,144 +0,0 @@ - - -

Using Kibana or APIs to Import Data to Elasticsearch

-

You can import data in various formats, such as JSON, to Elasticsearch in CSS by using Kibana or APIs.

-

Importing Data Using Kibana

Before importing data, ensure that you can use Kibana to access the cluster. The following procedure illustrates how to use the POST command to import data.
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters > Elasticsearch to switch to the Clusters page.
  3. Choose Clusters in the navigation pane. Locate the target cluster and click Access Kibana in the Operation column to log in to Kibana.
  4. Click Dev Tools in the navigation tree on the left.
  5. (Optional) On the Console page, run the related command to create an index for storing data and specify a custom mapping to define the data type.

    If there is an available index in the cluster where you want to import data, skip this step. If there is no available index, create an index by referring to the following sample code.

    -

    For example, on the Console page of Kibana, run the following command to create an index named my_store and specify a user-defined mapping to define the data type:

    -
    Versions earlier than 7.x
    PUT /my_store
    -{
    -    "settings": {
    -        "number_of_shards": 1
    -    },
    -    "mappings": {
    -        "products": {
    -            "properties": {
    -                "productName": {
    -                    "type": "text"
    -                },
    -                "size": {
    -                    "type": "keyword"
    -                }
    -            }
    -        }
    -    }
    -}
    -
    -

    Versions later than 7.x

    -
    PUT /my_store
    -{
    -    "settings": {
    -        "number_of_shards": 1
    -    },
    -    "mappings": {
    -        "properties": {
    -            "productName": {
    -                "type": "text"
    -            },
    -            "size": {
    -                "type": "keyword"
    -            }
    -        }
    -    }
    -}
    -
  6. Run commands to import data. For example, run the following command to import a piece of data:
    Versions earlier than 7.x
    POST /my_store/products/_bulk 
    -{"index":{}} 
    -{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
    -
    -

    Versions later than 7.x

    -
    POST /my_store/_bulk  
    -{"index":{}}  
    -{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
    -

    The command output is similar to that shown in Figure 1. If the value of the errors field in the result is false, the data is successfully imported.

    -
    Figure 1 Response message
    -
-
-
-

Importing Data Using APIs

You can call the bulk API using the cURL command to import a JSON data file.

-

You are advised to import a file smaller than 50 MB.

-
-
  1. Log in to the ECS that you use to access the cluster.
  2. Run the following command to import JSON data:
    In the command, replace the value of {Private network address and port number of the node} with the private network address and port number of a node in the cluster. If the node fails to work, the command will fail to be executed. If the cluster contains multiple nodes, you can replace the value of {Private network address and port number of the node} with the private network address and port number of any available node in the cluster. If the cluster contains only one node, restore the node and execute the command again. test.json indicates the JSON file whose data is to be imported.
    curl -X PUT "http://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json
    -
    -

    If communication encryption has been enabled on the cluster where you will import data, you need to send HTTPS requests and add -k to the cURL command.

    -
    curl -X PUT -k "https://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json
    -

    The value of the -X parameter is a command and that of the -H parameter is a message header. In the preceding command, PUT is the value of the -X parameter and 'Content-Type: application/json' --data-binary @test.json is the value of the -H parameter. Do not add -k between a parameter and its value.

    -
    -

    Example 1: In this example, assume that you need to import data in the testdata.json file to an Elasticsearch cluster, where communication encryption is disabled and the private network address and port number of one node are 192.168.0.90 and 9200 respectively. The data in the testdata.json file is as follows:

    -

    Versions earlier than 7.x

    -
    {"index": {"_index":"my_store","_type":"products"}}
    -{"productName":"Autumn new woman blouses 2019","size":"M"}
    -{"index": {"_index":"my_store","_type":"products"}}
    -{"productName":"Autumn new woman blouses 2019","size":"L"}
    -

    Versions later than 7.x

    -
    {"index": {"_index":"my_store"}}
    -{"productName":"Autumn new woman blouse 2019","size":"M"}
    -{"index": {"_index":"my_store"}}
    -{"productName":"Autumn new woman blouse 2019","size":"L"}
    -

    Perform the following steps to import the data:

    -
    1. Run the following command to create an index named my_store:
      Versions earlier than 7.x
      curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      - { 
      -   "settings": { 
      -     "number_of_shards": 1 
      -   }, 
      -   "mappings": { 
      -     "products": { 
      -       "properties": { 
      -         "productName": { 
      -           "type": "text" 
      -           }, 
      -         "size": { 
      -           "type": "keyword" 
      -         } 
      -       } 
      -     } 
      -   } 
      - }'
      -
      -

      Versions later than 7.x

      -
      curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      -{
      -    "settings": {
      -        "number_of_shards": 1
      -    },
      -    "mappings": {
      -        "properties": {
      -            "productName": {
      -                "type": "text"
      -            },
      -            "size": {
      -                "type": "keyword"
      -            }
      -        }
      -    }
      -}'
      -
    2. Run the following command to import the data in the testdata.json file:
      curl -X PUT "http://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @testdata.json
      -
    -

    Example 2: In this example, assume that you need to import data in the testdata.json file to an Elasticsearch cluster, where communication encryption has been enabled and the node access address and content in the testdata.json are the same as those in example 1. Perform the following steps to import the data:

    -
    1. Run the following command to create an index named my_store:
      curl -X PUT -k https://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      - { 
      -   "settings": { 
      -     "number_of_shards": 1 
      -   }, 
      -   "mappings": { 
      -     "products": { 
      -       "properties": { 
      -         "productName": { 
      -           "type": "text" 
      -           }, 
      -         "size": { 
      -           "type": "keyword" 
      -         } 
      -       } 
      -     } 
      -   } 
      - }'
      -
    2. Run the following command to import the data in the testdata.json file:
      curl -X PUT -k "https://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @testdata.json
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0033.html b/docs/css/umn/css_01_0033.html deleted file mode 100644 index 4b190232..00000000 --- a/docs/css/umn/css_01_0033.html +++ /dev/null @@ -1,12 +0,0 @@ - - -

Backup and Restoration Overview

-

You can back up index data in clusters. If data loss occurs or you want to retrieve data of a specified duration, you can restore the index data. Index backup is implemented by creating cluster snapshots. When creating a backup for the first time, you are advised to back up data of all indexes.

-
  • Managing Automatic Snapshot Creation: Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and set the automatic snapshot creation policy.
  • Manually Creating a Snapshot: You can manually create a snapshot at any time to back up all data or data of specified indexes.
  • Restoring Data: You can use existing snapshots to restore the backup index data to a specified cluster.
  • Deleting a Snapshot: Delete snapshots you do not require and release resources.
-
-
- -
- diff --git a/docs/css/umn/css_01_0041.html b/docs/css/umn/css_01_0041.html deleted file mode 100644 index c6d9b3c1..00000000 --- a/docs/css/umn/css_01_0041.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

Monitoring

-
-
- -
- diff --git a/docs/css/umn/css_01_0042.html b/docs/css/umn/css_01_0042.html deleted file mode 100644 index 04607b88..00000000 --- a/docs/css/umn/css_01_0042.html +++ /dev/null @@ -1,52 +0,0 @@ - - -

Monitoring Metrics of Elasticsearch Clusters

-

You can use Cloud Eye to monitor cluster metrics of CSS in real time and quickly handle exceptions. For details about Cloud Eye, see the Cloud Eye User Guide.

-

Table 1 lists the metrics supported by CSS.

- -
- - - - - - - - - - - - - - - - - - - -
Table 1 Supported metrics

Metric

-

Description

-

Formula

-

Value Range

-

Monitoring Interval

-

Disk Usage

-

Calculates the disk usage of a CSS cluster.

-

Unit: %

-

Used disk space of a cluster/Total disk space of a cluster

-

0 to 100%

-

1 minute

-

Cluster Health Status

-

Measures the health status of a CSS cluster.

-

-

-

Available values are 0, 1, and 2.

-
  • 0: The cluster is 100% available.
  • 1: The data is complete while some replicas are missing. Exceptions may occur because the high availability is compromised. This is a warning that should prompt investigation.
  • 2: Data is missing and the cluster fails to work.
-

1 minute

-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0045.html b/docs/css/umn/css_01_0045.html deleted file mode 100644 index 35bc14b1..00000000 --- a/docs/css/umn/css_01_0045.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Importing Data to Elasticsearch

-
-
- -
- diff --git a/docs/css/umn/css_01_0048.html b/docs/css/umn/css_01_0048.html deleted file mode 100644 index 5b005c65..00000000 --- a/docs/css/umn/css_01_0048.html +++ /dev/null @@ -1,189 +0,0 @@ - - -

Using Logstash to Import Data to Elasticsearch

-

You can use Logstash to collect data and migrate collected data to Elasticsearch in CSS. This method helps you effectively obtain and manage data through Elasticsearch. Data files can be in the JSON or CSV format.

-

Logstash is an open-source, server-side data processing pipeline that ingests data from multiple sources simultaneously, transforms data, and then sends data to Elasticsearch. For details about Logstash, visit the following website: https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html

-

The following two scenarios are involved depending on the Logstash deployment:

- -

Prerequisites

-
-

Importing Data When Logstash Is Deployed on the External Network

Figure 1 illustrates how data is imported when Logstash is deployed on an external network.

-
Figure 1 Importing data when Logstash is deployed on an external network
-

-
  1. Create a jump host and configure it as follows:
    • The jump host is an ECS running the Linux OS and has been bound with an EIP.
    • The jump host resides in the same VPC as the CSS cluster.
    • SSH local port forwarding is configured for the jump host to forward requests from a chosen local port to port 9200 on one node of the CSS cluster.
    • Refer to SSH documentation for the local port forwarding configuration.
    -
  2. Use PuTTY to log in to the created jump host with the EIP.
  3. Run the following command to perform port mapping and transfer the request sent to the port on the jump host to the target cluster:
    ssh -g -L <Local port of the jump host:Private network address and port number of a node> -N -f root@<Private IP address of the jump host>
    -
    • In the preceding command, <Local port of the jump host> refers to the port obtained in 1.
    • In the preceding command, <Private network address and port number of a node> refers to the private network address and port number of a node in the cluster. If the node is faulty, the command execution will fail. If the cluster contains multiple nodes, you can replace the value of <private network address and port number of a node> with the private network address and port number of any available node in the cluster. If the cluster contains only one node, restore the node and execute the command again.
    • Replace <Private IP address of the jump host> in the preceding command with the IP address (with Private IP) of the created jump host in the IP Address column in the ECS list on the ECS management console.
    -
    -

    For example, port 9200 on the jump host is assigned external network access permissions, the private network address and port number of the node are 192.168.0.81 and 9200, respectively, and the private IP address of the jump host is 192.168.0.227. You need to run the following command to perform port mapping:

    -
    ssh -g -L 9200:192.168.0.81:9200 -N -f root@192.168.0.227
    -
  4. Log in to the server where Logstash is deployed and store the data files to be imported on the server.

    For example, data file access_20181029_log needs to be imported, the file storage path is /tmp/access_log/, and the data file includes the following data:

    -

    Create the access_log folder if it does not exist.

    -
    -
    |   All |               Heap used for segments |                        |     18.6403 |      MB |
    -|   All |             Heap used for doc values |                        |    0.119289 |      MB |
    -|   All |                  Heap used for terms |                        |     17.4095 |      MB |
    -|   All |                  Heap used for norms |                        |   0.0767822 |      MB |
    -|   All |                 Heap used for points |                        |    0.225246 |      MB |
    -|   All |          Heap used for stored fields |                        |    0.809448 |      MB |
    -|   All |                        Segment count |                        |         101 |         |
    -|   All |                       Min Throughput |           index-append |     66232.6 |  docs/s |
    -|   All |                    Median Throughput |           index-append |     66735.3 |  docs/s |
    -|   All |                       Max Throughput |           index-append |     67745.6 |  docs/s |
    -|   All |              50th percentile latency |           index-append |     510.261 |      ms |
    -
    -
  5. In the server where Logstash is deployed, run the following command to create configuration file logstash-simple.conf in the Logstash installation directory:
    cd /<Logstash installation directory>/
    -vi logstash-simple.conf
    -
  6. Input the following content in logstash-simple.conf:
    input {
    -Location of data
    -}
    -filter {
    -Related data processing
    -}
    -output {
    -    elasticsearch {
    -        hosts => "<EIP of the jump host>:<Number of the port assigned external network access permissions on the jump host>"
    -        (Optional) If communication encryption has been enabled on the cluster, you need to add the following configuration:
    -        ssl => true
    -        ssl_certificate_verification => false
    -    }
    -}
    -
    • The input parameter indicates the data source. Set this parameter based on the actual conditions. For details about the input parameter and parameter usage, visit the following website: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
    • The filter parameter specifies the mode in which data is processed. For example, extract and process logs to convert unstructured information into structured information. For details about the filter parameter and parameter usage, visit the following website: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
    • The output parameter indicates the destination address of the data. For details about the output parameter and parameter usage, visit https://www.elastic.co/guide/en/logstash/current/output-plugins.html. Replace <EIP address of the jump host> with the IP address (with EIP) of the created jump host in the IP Address column in the ECS list on the ECS management console. <Number of the port assigned external network access permissions on the jump host> is the number of the port obtained in 1, for example, 9200.
    -

    Consider the data files in the /tmp/access_log/ path mentioned in 4 as an example. Assume that data import starts from data in the first row of the data file, the filtering condition is left unspecified (indicating no data processing operations are performed), the public IP address and port number of the jump host are 192.168.0.227 and 9200, respectively, and the name of the target index is myindex. Edit the configuration file as follows, and enter :wq to save the configuration file and exit.

    -
    input { 
    -    file{
    -      path => "/tmp/access_log/*"
    -      start_position => "beginning"
    -    }
    -} 
    -filter { 
    -} 
    -output { 
    -    elasticsearch { 
    -      hosts => "192.168.0.227:9200"
    -      index => "myindex"
    -     
    -    } 
    -}
    -

    If a license error is reported, set ilm_enabled to false.

    -
    -

    If the cluster has the security mode enabled, you need to download a certificate first.

    -
    1. Download a certificate on the Basic Information page of the cluster.
      Figure 2 Downloading a certificate
      -
    2. Store the certificate to the server where Logstash is deployed.
    3. Modify the logstash-simple.conf configuration file.
      Consider the data files in the /tmp/access_log/ path mentioned in 4 as an example. Assume that data import starts from data in the first row of the data file, the filtering condition is left unspecified (indicating no data processing operations are performed), and the public IP address and port number of the jump host are 192.168.0.227 and 9200, respectively. The name of the index for importing data is myindex, and the certificate is stored in /logstash/logstash6.8/config/CloudSearchService.cer. Edit the configuration file as follows, and enter :wq to save the configuration file and exit.
      input{
      -    file {
      -        path => "/tmp/access_log/*"
      -        start_position => "beginning"
      -    }
      -}
      -filter {
      -    }
      -output{
      -    elasticsearch{
      -        hosts => ["https://192.168.0.227:9200"]
      -        index => "myindex"
      -        user => "admin"
      -        password => "******"
      -        cacert => "/logstash/logstash6.8/config/CloudSearchService.cer"
      -    }
      -}
      -

      password: password for logging in to the cluster

      -
      -
      -
    -
  7. Run the following command to import the data collected by Logstash to the cluster:
    ./bin/logstash -f logstash-simple.conf
    -

    This command must be executed in the directory where the logstash-simple.conf file is stored. For example, if the logstash-simple.conf file is stored in /root/logstash-7.1.1/, go to the directory before running the command.

    -
    -
  8. Log in to the CSS management console.
  9. In the navigation pane on the left, choose Clusters > Elasticsearch to switch to the Clusters page.
  10. From the cluster list, locate the row that contains the cluster to which you want to import data and click Access Kibana in the Operation column.
  11. In the Kibana navigation pane on the left, choose Dev Tools.
  12. On the Console page of Kibana, search for the imported data.

    On the Console page of Kibana, run the following command to search for data. View the search results. If the searched data is consistent with the imported data, the data has been imported successfully.

    -
    GET myindex/_search
    -
-
-

Importing Data When Logstash Is Deployed on an ECS

Figure 3 illustrates how data is imported when Logstash is deployed on an ECS that resides in the same VPC as the cluster to which data is to be imported.

-
Figure 3 Importing data when Logstash is deployed on an ECS
-
  1. Ensure that the ECS where Logstash is deployed and the cluster to which data is to be imported reside in the same VPC, port 9200 of the ECS security group has been assigned external network access permissions, and an EIP has been bound to the ECS.
    • If there are multiple servers in a VPC, you do not need to associate EIPs to other servers as long as one server is associated with an EIP. Switch to the node where Logstash is deployed from the node with which the EIP is associated.
    • If a private line or VPN is available, you do not need to associate an EIP.
    -
    -
  2. Use PuTTY to log in to the ECS.
    For example, data file access_20181029_log is stored in the /tmp/access_log/ path of the ECS, and the data file includes the following data:
    |   All |               Heap used for segments |                        |     18.6403 |      MB |
    -|   All |             Heap used for doc values |                        |    0.119289 |      MB |
    -|   All |                  Heap used for terms |                        |     17.4095 |      MB |
    -|   All |                  Heap used for norms |                        |   0.0767822 |      MB |
    -|   All |                 Heap used for points |                        |    0.225246 |      MB |
    -|   All |          Heap used for stored fields |                        |    0.809448 |      MB |
    -|   All |                        Segment count |                        |         101 |         |
    -|   All |                       Min Throughput |           index-append |     66232.6 |  docs/s |
    -|   All |                    Median Throughput |           index-append |     66735.3 |  docs/s |
    -|   All |                       Max Throughput |           index-append |     67745.6 |  docs/s |
    -|   All |              50th percentile latency |           index-append |     510.261 |      ms |
    -
    -
  3. Run the following command to create configuration file logstash-simple.conf in the Logstash installation directory:
    cd /<Logstash installation directory>/
    -vi logstash-simple.conf
    -
    Input the following content in logstash-simple.conf:
    input {
    -Location of data
    -}
    -filter {
    -Related data processing
    -}
    -output {
    -    elasticsearch{
    -        hosts => "<Private network address and port number of the node>"} 
    -        (Optional) If communication encryption has been enabled on the cluster, you need to add the following configuration:
    -        ssl => true
    -        ssl_certificate_verification => false
    -}
    -
    • The input parameter indicates the data source. Set this parameter based on the actual conditions. For details about the input parameter and parameter usage, visit the following website: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
    • The filter parameter specifies the mode in which data is processed. For example, extract and process logs to convert unstructured information into structured information. For details about the filter parameter and parameter usage, visit the following website: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
    • The output parameter indicates the destination address of the data. For details about the output parameter and parameter usage, visit https://www.elastic.co/guide/en/logstash/current/output-plugins.html. <private network address and port number of a node> refers to the private network address and port number of a node in the cluster.

      If the cluster contains multiple nodes, you are advised to replace the value of <Private network address and port number of a node> with the private network addresses and port numbers of all nodes in the cluster to prevent node faults. Use commas (,) to separate the nodes' private network addresses and port numbers. The following is an example:

      -
      hosts => ["192.168.0.81:9200","192.168.0.24:9200"]
      -

      If the cluster contains only one node, the format is as follows:

      -
      hosts => "192.168.0.81:9200"
      -
    -
    -

    Consider the data files in the /tmp/access_log/ path mentioned in 2 as an example. Assume that data import starts from data in the first row of the data file, the filtering condition is left unspecified (indicating no data processing operations are performed), the private network address and port number of the node in the cluster where data is to be imported are 192.168.0.81 and 9200, respectively, and the name of the target index is myindex. Edit the configuration file as follows, and enter :wq to save the configuration file and exit.

    -
    input { 
    -    file{
    -      path => "/tmp/access_log/*"
    -      start_position => "beginning"
    -    }
    -} 
    -filter { 
    -} 
    -output { 
    -    elasticsearch { 
    -      hosts => "192.168.0.81:9200"
    -      index => "myindex"
    -      
    -    } 
    -}
    -

    If the cluster has the security mode enabled, you need to download a certificate first.

    -
    1. Download a certificate on the Basic Information page of the cluster.
      Figure 4 Downloading a certificate
      -
    2. Store the certificate to the server where Logstash is deployed.
    3. Modify the logstash-simple.conf configuration file.
      Consider the data files in the /tmp/access_log/ path mentioned in step 2 as an example. Assume that data import starts from data in the first row of the data file, the filtering condition is left unspecified (indicating no data processing operations are performed), the public IP address and port number of the jump host are 192.168.0.227 and 9200, respectively. The name of the index for importing data is myindex, and the certificate is stored in /logstash/logstash6.8/config/CloudSearchService.cer. Edit the configuration file as follows, and enter :wq to save the configuration file and exit.
      input{
      -    file {
      -        path => "/tmp/access_log/*"
      -        start_position => "beginning"
      -    }
      -}
      -filter {
      -    }
      -output{
      -    elasticsearch{
      -        hosts => ["https://192.168.0.227:9200"]
      -        index => "myindex"
      -        user => "admin"
      -        password => "******"
      -        cacert => "/logstash/logstash6.8/config/CloudSearchService.cer"
      -    }
      -}
      -

      password: password for logging in to the cluster

      -
      -
      -
    -
    -
  4. Run the following command to import the ECS data collected by Logstash to the cluster:
    ./bin/logstash -f logstash-simple.conf
    -
  5. Log in to the CSS management console.
  6. In the navigation pane on the left, choose Clusters > Elasticsearch to switch to the Clusters page.
  7. From the cluster list, locate the row that contains the cluster to which you want to import data and click Access Kibana in the Operation column.
  8. In the Kibana navigation pane on the left, choose Dev Tools.
  9. On the Console page of Kibana, search for the imported data.

    On the Console page of Kibana, run the following command to search for data. View the search results. If the searched data is consistent with the imported data, the data has been imported successfully.

    -
    GET myindex/_search
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0049.html b/docs/css/umn/css_01_0049.html deleted file mode 100644 index 0fc9b87c..00000000 --- a/docs/css/umn/css_01_0049.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Auditing

-
-
- -
- diff --git a/docs/css/umn/css_01_0050.html b/docs/css/umn/css_01_0050.html deleted file mode 100644 index 12e57ae8..00000000 --- a/docs/css/umn/css_01_0050.html +++ /dev/null @@ -1,103 +0,0 @@ - - -

Key Operations Recorded by CTS

-

Cloud Trace Service (CTS) is available on the public cloud platform. With CTS, you can record operations associated with CSS for later query, audit, and backtrack operations.

-

Prerequisites

CTS has been enabled. For details, see Enabling CTS.

-
-

Key Operations Recorded by CTS

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Key operations recorded by CTS

Operation

-

Resource Type

-

Event Name

-

Creating a cluster

-

cluster

-

createCluster

-

Deleting a cluster

-

cluster

-

deleteCluster

-

Expanding the cluster capacity

-

cluster

-

roleExtendCluster

-

Restarting a cluster

-

cluster

-

rebootCluster

-

Performing basic configurations for a cluster snapshot

-

cluster

-

updateSnapshotPolicy

-

Setting the automatic snapshot creation policy

-

cluster

-

updateAutoSnapshotPolicy

-

Upgrading a cluster

-

cluster

-

upgradeCluster

-

Retrying the upgrade

-

cluster

-

retryAction

-

Manually creating a snapshot

-

snapshot

-

createSnapshot

-

Restoring a snapshot

-

snapshot

-

restoreSnapshot

-

Deleting a snapshot

-

snapshot

-

deleteSnapshot

-
-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0051.html b/docs/css/umn/css_01_0051.html deleted file mode 100644 index 73759332..00000000 --- a/docs/css/umn/css_01_0051.html +++ /dev/null @@ -1,19 +0,0 @@ - - -

Viewing Audit Logs

-

After you enable CTS, it starts recording operations related to CSS. The CTS management console stores the last seven days of operation records. This section describes how to query the last seven days of operation records on the CTS management console.

-

Procedure

  1. Log in to the CTS management console.
  2. Click in the upper left corner and select a region.
  3. In the navigation pane on the left, click Trace List.
  4. You can use filters to query traces. The following four filter criteria are available:
    • Trace Source, Resource Type, and Search By

      Select a filter criterion from the drop-down list.

      -

      When you select Trace name for Search By, select a specific trace name.

      -

      When you select Resource ID for Search By, enter a specific resource ID.

      -

      When you select Resource name for Search By, select or enter a specific resource name.

      -
    • Operator: Select a specific operator (at user level rather than tenant level).
    • Trace Status: Available options include All trace statuses, normal, warning, and incident. You can only select one of them.
    • Time Range: You can query traces generated during any time range of the last seven days.
    -
  5. Click on the left of a trace to expand its details.
  6. Click View Trace in the Operation column. In the displayed View Trace dialog box, the trace structure details are displayed.

    For details about the key fields in the CTS trace structure, see Cloud Trace Service User Guide.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0053.html b/docs/css/umn/css_01_0053.html deleted file mode 100644 index 0dca9c95..00000000 --- a/docs/css/umn/css_01_0053.html +++ /dev/null @@ -1,67 +0,0 @@ - - -

Viewing the Cluster Runtime Status and Storage Capacity Status

-

On the Dashboard page of the CSS management console, you can view information about the status and storage capacity of existing clusters.

- -
- - - - - - - - - - - - - - - - -
Table 1 Cluster status description

Status

-

Description

-

Available

-

The cluster is running properly and is providing services.

-

Abnormal

-

The cluster creation failed or the cluster is unavailable.

-

If a cluster is in the unavailable status, you can delete the cluster or use snapshots created when the cluster is available to restore data to other clusters. However, operations such as expanding cluster capacity, accessing Kibana, creating snapshots, and restoring snapshots to the cluster are not allowed. When a cluster is in the unavailable status, data importing is not recommended to avoid data loss. You can view the cluster metrics or restart the cluster. However, the operations may fail. If the operations fail, contact technical support in a timely manner.

-

Processing

-

The cluster is being restarted, scaled, backed up, or recovered.

-

Creating

-

The cluster is being created.

-
-
- -
- - - - - - - - - - - - - - - - -
Table 2 Cluster storage capacity status description

Status

-

Description

-

Normal

-

The storage capacity usage of all nodes in a cluster is less than 50%.

-

Warning

-

The storage capacity usage of any node in a cluster is greater than or equal to 50% and less than 80%.

-

Danger

-

The storage capacity usage of any node in a cluster is greater than or equal to 80%. You are advised to increase the storage space of the cluster to achieve normal data search or analysis.

-

Abnormal

-

The cluster storage capacity usage is unknown. For example, if the status of a cluster is Abnormal due to faults, the storage space status of the cluster will be Abnormal.

-
-
-
- diff --git a/docs/css/umn/css_01_0055.html b/docs/css/umn/css_01_0055.html deleted file mode 100644 index a6b9a621..00000000 --- a/docs/css/umn/css_01_0055.html +++ /dev/null @@ -1,146 +0,0 @@ - - -

Change History

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Released On

-

Description

-

2024-02-07

-

Deleted:

- -

Added:

-

New examples in section Optimization of Other Parameters.

-

2023-12-15

-

Delete the following sections:

-
  • Using the OpenDistro Alarm Plugin
  • (Optional) Service Authorization
  • Logstash
  • Intelligent O&M
-

2023-9-25

-

Added the following sections:

- -

2023-03-28

-
-

2022-09-14

-

Updated: Index Backup and Restoration

-

2022-07-28

-

Added the cluster version 7.10.2.

-

2022-06-30

-

Added the description about cluster version 7.9.3.

-

Supported the VPC endpoint service: Accessing a Cluster Using a VPC Endpoint

-

Optimized:

- -

2020-08-30

-
-

2019-03-15

-
-

2019-01-26

-

Accepted in OTC-3.2/Agile-01.2019.

-

2019-01-17

-
-

2018-12-17

-
-

2018-12-03

-

Updated the screenshots in section "Why Does My ECS Fail to Connect to a Cluster?".

-

2018-11-02

-

Updated descriptions in the following sections based on software function changes:

-

Index Backup and Restoration

-

2018-10-19

-

Added parameter descriptions and modified the description of operations in the following section:

-

Index Backup and Restoration

-

2018-10-12

-

Added the description about the automatic snapshot deletion time in the following section:

-

Index Backup and Restoration

-

2018-10-08

-

Accepted in OTC-3.2.

-

2018-09-28

-
-

2018-09-14

-

Added Cluster List Overview.

-

2018-08-20

-
-

2018-07-31

-

This issue is the first official release.

-
-
-
- diff --git a/docs/css/umn/css_01_0056.html b/docs/css/umn/css_01_0056.html deleted file mode 100644 index b73a9d9a..00000000 --- a/docs/css/umn/css_01_0056.html +++ /dev/null @@ -1,64 +0,0 @@ - - -

Cluster List Overview

-

The cluster list displays all CSS clusters. If there are a large number of clusters, these clusters will be displayed on multiple pages. You can view clusters of all statuses from the cluster list.

-

Clusters are listed in chronological order by default in the cluster list, with the most recent cluster displayed at the top. Table 1 shows the cluster parameters.

-

In the upper right corner of the cluster list, you can enter the cluster name, or cluster ID and click to search for a cluster. You can also click in the upper right corner to refresh the cluster list. Click to download the cluster list.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Cluster list parameter description

Parameter

-

Description

-

Name/ID

-

Name and ID of a cluster. You can click a cluster name to switch to the Basic Information page. The cluster ID is automatically generated by the system and uniquely identifies a cluster.

-

Cluster Status

-

Status of a cluster. For details about the cluster status, see Viewing the Cluster Runtime Status and Storage Capacity Status.

-

Task Status

-

Status of a task, such as cluster restart, cluster capacity expansion, cluster backup, and cluster restoration.

-

Version

-

Elasticsearch version of the cluster.

-

Created

-

Time when the cluster is created.

-

Enterprise Project

-

Enterprise project that a cluster belongs to.

-

Private Network Address

-

Private network address and port number of the cluster. You can use these parameters to access the cluster. If the cluster has multiple nodes, the private network addresses and port numbers of all nodes are displayed.

-

Billing Mode

-

Billing mode of a cluster.

-

Operation

-

Operations that can be performed on a cluster, including accessing Kibana, checking metrics, restarting a cluster, and deleting a cluster. If an operation is not allowed, the button is gray.

-
-
-
-
- diff --git a/docs/css/umn/css_01_0058.html b/docs/css/umn/css_01_0058.html deleted file mode 100644 index aa08e1b3..00000000 --- a/docs/css/umn/css_01_0058.html +++ /dev/null @@ -1,18 +0,0 @@ - - -

Binding an Enterprise Project

-

You can create enterprise projects based on your organizational structure. Then you can manage resources across different regions by enterprise project, add users and user groups to enterprise projects, and grant different permissions to the users and user groups. This section describes how to bind a CSS cluster to an enterprise project and how tp modify an enterprise project.

-

Prerequisites

Before binding an enterprise project, you have created an enterprise project.

-
-

Binding an Enterprise Project

When creating a cluster, you can bind an existing enterprise project to the cluster, or click View Enterprise Project to go to the enterprise project management console and create a new project or view existing projects.

-
-

Modifying an Enterprise Project

For a cluster that has been created, you can modify its enterprise project based on the site requirements.

-
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, select a cluster type. The cluster management page is displayed.
  3. In the cluster list on the displayed page, click the target cluster name to switch to the Cluster Information page.
  4. On the Cluster Information page, click the enterprise project name on the right of Enterprise Project. The project management page is displayed.
  5. On the Resources tab page, select the region of the current cluster, and select CSS for Service. In this case, the corresponding CSS cluster is displayed in the resource list.
  6. Select the cluster whose enterprise project you want to modify and click Remove.
  7. On the Remove Resource page, specify Mode and select Destination Enterprise Project, and click OK.
  8. After the resource is removed, you can view the modified enterprise project information on the Clusters page.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0060.html b/docs/css/umn/css_01_0060.html deleted file mode 100644 index 9c671e36..00000000 --- a/docs/css/umn/css_01_0060.html +++ /dev/null @@ -1,88 +0,0 @@ - - -

Managing Failed Tasks

-

In the Failed Tasks dialog box, you can view the failed tasks related to a cluster, such as failing to create, restart, scale out, back up, or restore a cluster. In addition, you can view the failure cause of each task and choose to delete one or all failed tasks.

-

Viewing Failed Tasks

  1. Log in to the CSS management console.
  2. Click Clusters to switch to the Clusters page. Click the digit next to Failed Tasks to switch to the Failed Tasks dialog box.
    Figure 1 Clicking the digit next to Failed Tasks
    -
  3. In the Failed Tasks dialog box, view all failed tasks of the current account. The following information about the failed tasks is displayed: Name/ID, Task Status, and Failure Time.
  4. Click the question mark in the Task Status column to view the failure cause of a task. You are advised to troubleshoot faults based on failure causes. For details about failure causes, see Error Code.
    Figure 2 Viewing the failure cause of a task
    -
-
-

Deleting a Failed Task

You can delete one or all failed tasks at a time.

-
  • To delete a failed task, perform the following operations: Locate the row that contains the target task and click Delete in the Operation column. In the displayed dialog box, confirm the task you want to delete and click Yes.
  • To delete all failed tasks, perform the following operations: In the Failed Tasks dialog box, click Delete All. In the displayed dialog box, confirm the information about all failed tasks and click Yes.
-
Figure 3 Deleting a failed task
-
-

Error Code

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Failure causes

Error Code

-

Failure Cause

-

Solution

-

CSS.6000

-

Failed to create the cluster because of an internal error. Please try again later. If the problem persists, contact customer service.

-

Please try again later or contact customer service.

-

CSS.6001

-

Failed to scale out the cluster because of an internal error. Please try again later. If the problem persists, contact customer service.

-

CSS.6002

-

Failed to restart the cluster because of an internal error. Please try again later. If the problem persists, contact customer service.

-

CSS.6003

-

Failed to restore the cluster because of an internal error. Please try again later. If the problem persists, contact customer service.

-

CSS.6004

-

Failed to create the node because of ECS exceptions (<ECS error code>). Please try again later. If the problem persists, contact customer service.

-
NOTE:

<ECS error code> indicates the error information reported by ECS. For details about the cause and solution, see ECS Error Code Description.

-
-

CSS.6005

-

Failed to initialize the service because of an internal error. Please try again later. If the problem persists, contact customer service.

-

CSS.6007

-

Failed to create the snapshot because of an internal error. Please try again later. If the problem persists, contact customer service.

-

CSS.6008

-

Failed to create the snapshot because the OBS bucket you select does not exist or has been deleted.

-

Modify the OBS bucket.

-

CSS.6009

-

Failed to restore the snapshot because the OBS bucket you select does not exist or has been deleted.

-

CSS.6010

-

Failed to restore the snapshot because the OBS object does not exist or has been deleted.

-
-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0061.html b/docs/css/umn/css_01_0061.html deleted file mode 100644 index dc70004e..00000000 --- a/docs/css/umn/css_01_0061.html +++ /dev/null @@ -1,325 +0,0 @@ - - -

Using the Open Distro SQL Plugin

-

For Elasticsearch 6.5.4 and later versions, Open Distro for Elasticsearch SQL lets you write queries in SQL rather than in the Elasticsearch query domain-specific language (DSL).

-

If you are already familiar with SQL and do not want to learn query DSL, this feature is a great option.

-

Basic Operations

  • Kibana (recommended)
    • Log in to Kibana and send requests using request parameters or request body to _opendistro/_sqlURI in the Dev Tools page.
      POST _opendistro/_sql
      -{
      -  "query": "SELECT * FROM my-index LIMIT 50"
      -}
      -
    • By default, the result is returned in the JSON structure. If you want the result to be returned in the CSV format, run the following command:
      POST _opendistro/_sql?format=csv
      -{
      -  "query": "SELECT * FROM my-index LIMIT 50"
      -}
      -

      When data is returned in the CSV format, each row corresponds to a document and each column corresponds to a field.

      -
    -
  • cURL commands

    You can also run cURL commands in ECS to execute SQL statements.

    -
    curl -XPOST https://localhost:9200/_opendistro/_sql -u username:password -k -d '{"query": "SELECT * FROM kibana_sample_data_flights LIMIT 10"}' -H 'Content-Type: application/json'
    -
-

-
-

Supported Operations

Open Distro for Elasticsearch supports the following SQL operations: statements, conditions, aggregations, include and exclude fields, common functions, joins, and show.

-
  • Statements -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Statements

    Statement

    -

    Example

    -

    Select

    -

    SELECT * FROM my-index

    -

    Delete

    -

    DELETE FROM my-index WHERE _id=1

    -

    Where

    -

    SELECT * FROM my-index WHERE ['field']='value'

    -

    Order by

    -

    SELECT * FROM my-index ORDER BY _id asc

    -

    Group by

    -

    SELECT * FROM my-index GROUP BY range(age, 20,30,39)

    -

    Limit

    -

    SELECT * FROM my-index LIMIT 50 (default is 200)

    -

    Union

    -

    SELECT * FROM my-index1 UNION SELECT * FROM my-index2

    -

    Minus

    -

    SELECT * FROM my-index1 MINUS SELECT * FROM my-index2

    -
    -
    -

    As with any complex query, large UNION and MINUS statements can strain or even crash your cluster.

    -
    -
-
  • Conditions -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 2 Conditions

    Condition

    -

    Example

    -

    Like

    -

    SELECT * FROM my-index WHERE name LIKE 'j%'

    -

    And

    -

    SELECT * FROM my-index WHERE name LIKE 'j%' AND age > 21

    -

    Or

    -

    SELECT * FROM my-index WHERE name LIKE 'j%' OR age > 21

    -

    Count distinct

    -

    SELECT count(distinct age) FROM my-index

    -

    In

    -

    SELECT * FROM my-index WHERE name IN ('alejandro', 'carolina')

    -

    Not

    -

    SELECT * FROM my-index WHERE name NOT IN ('jane')

    -

    Between

    -

    SELECT * FROM my-index WHERE age BETWEEN 20 AND 30

    -

    Aliases

    -

    SELECT avg(age) AS Average_Age FROM my-index

    -

    Date

    -

    SELECT * FROM my-index WHERE birthday='1990-11-15'

    -

    Null

    -

    SELECT * FROM my-index WHERE name IS NULL

    -
    -
    -
  • Aggregations -
    - - - - - - - - - - - - - - - - - - - -
    Table 3 Aggregations

    Aggregation

    -

    Example

    -

    avg()

    -

    SELECT avg(age) FROM my-index

    -

    count()

    -

    SELECT count(age) FROM my-index

    -

    max()

    -

    SELECT max(age) AS Highest_Age FROM my-index

    -

    min()

    -

    SELECT min(age) AS Lowest_Age FROM my-index

    -

    sum()

    -

    SELECT sum(age) AS Age_Sum FROM my-index

    -
    -
    -
-
  • Include and exclude fields -
    - - - - - - - - - - -
    Table 4 Include and exclude fields

    Pattern

    -

    Example

    -

    include()

    -

    SELECT include('a*'), exclude('age') FROM my-index

    -

    exclude()

    -

    SELECT exclude('*name') FROM my-index

    -
    -
    -
-
  • Functions -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 5 Functions

    Function

    -

    Example

    -

    floor

    -

    SELECT floor(number) AS Rounded_Down FROM my-index

    -

    trim

    -

    SELECT trim(name) FROM my-index

    -

    log

    -

    SELECT log(number) FROM my-index

    -

    log10

    -

    SELECT log10(number) FROM my-index

    -

    substring

    -

    SELECT substring(name, 2,5) FROM my-index

    -

    round

    -

    SELECT round(number) FROM my-index

    -

    sqrt

    -

    SELECT sqrt(number) FROM my-index

    -

    concat_ws

    -

    SELECT concat_ws(' ', age, height) AS combined FROM my-index

    -

    /

    -

    SELECT number / 100 FROM my-index

    -

    %

    -

    SELECT number % 100 FROM my-index

    -

    date_format

    -

    SELECT date_format(date, 'Y') FROM my-index

    -
    -
    -

    You must enable fielddata in the document mapping for most string functions to work properly.

    -
    -
-
  • Joins -
    - - - - - - - - - - - - - -
    Table 6 Joins

    Join

    -

    Example

    -

    Inner join

    -

    SELECT s.firstname, s.lastname, s.gender, sc.name FROM student s JOIN school sc ON sc.name = s.school_name WHERE s.age > 20

    -

    Left outer join

    -

    SELECT s.firstname, s.lastname, s.gender, sc.name FROM student s LEFT JOIN school sc ON sc.name = s.school_name

    -

    Cross join

    -

    SELECT s.firstname, s.lastname, s.gender, sc.name FROM student s CROSS JOIN school sc

    -
    -
    -

    For details about the restrictions, see Joins.

    -
-
  • Show

    Show commands display indexes and mappings that match an index pattern. You can use * or % for wildcards.

    - -
    - - - - - - - -
    Table 7 Show

    Show

    -

    Example

    -

    Show tables like

    -

    SHOW TABLES LIKE logs-*

    -
    -
    -
-
-

Joins

Open Distro for Elasticsearch SQL supports inner joins, left outer joins and cross joins. Joins have the following constraints:

-
  • You can only join two indexes.
-
  • You must use an alias for an index (for example, people p).
-
  • In an ON clause, you can only use the AND conditions.
-
  • In a WHERE statement, do not combine trees that contain multiple indexes. For example, the following statement will work:
    WHERE (a.type1 > 3 OR a.type1 < 0) AND (b.type2 > 4 OR b.type2 < -1)
    -
    The following statement will not work:
    WHERE (a.type1 > 3 OR b.type2 < 0) AND (a.type1 > 4 OR b.type2 < -1)
    -
    -
-
  • You cannot use GROUP BY or ORDER BY to obtain results.
-
  • LIMIT with OFFSET (for example, LIMIT 25 OFFSET 25) is not supported.
-
-

JDBC Driver

The Java Database Connectivity (JDBC) driver allows you to integrate Open Distro for Elasticsearch with your business intelligence (BI) applications.

-

For details about how to download and use JAR files, see GitHub Repositories.

-
-
-
- -
- diff --git a/docs/css/umn/css_01_0070.html b/docs/css/umn/css_01_0070.html deleted file mode 100644 index a3cb0e92..00000000 --- a/docs/css/umn/css_01_0070.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Permissions Management

-
-
- -
- diff --git a/docs/css/umn/css_01_0072.html b/docs/css/umn/css_01_0072.html deleted file mode 100644 index e0da4e5c..00000000 --- a/docs/css/umn/css_01_0072.html +++ /dev/null @@ -1,21 +0,0 @@ - - -

Creating a User and Granting Permissions

-

This section describes how to use a group to grant permissions to a user. Figure 1 shows the process for granting permissions.

-

CSS has two types of user permissions: CSS administrator permission and read-only permission.

-

Prerequisites

Before assigning permissions to user groups, you have learned about the system policies listed in Permissions Management.

-
-

Process Flow

Figure 1 Process of granting CSS permissions
-
  1. Create a user group and assign permissions.

    Create a user group on the IAM console, and assign the CSS permission to the group.

    -
  2. Create an IAM user and add it to a user group.

    Create a user on the IAM console and add the user to the group created in 1. Create a user group and assign permissions.

    -
  3. Log in and verify permissions.

    In the authorized region, perform the following operations:

    -
    • Choose Service List > Cloud Search Service. Then click Create Cluster on the CSS console. If the cluster cannot be bought (assuming that the current permissions include only CSS ReadOnlyAccess), the CSS ReadOnlyAccess policy has already taken effect.
    • Choose another service from Service List. If a message appears indicating that you have insufficient permissions to access the service (assuming that the current policy contains only CSS ReadOnlyAccess), the ECS ReadOnlyAccess policy is in effect.
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0075.html b/docs/css/umn/css_01_0075.html deleted file mode 100644 index 1ebc9434..00000000 --- a/docs/css/umn/css_01_0075.html +++ /dev/null @@ -1,57 +0,0 @@ - - -

Managing Tags

-

Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.

-

You can add tags to a cluster when creating the cluster or add them on the details page of the created cluster.

-

Managing Tags of a New Cluster

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner. The Create Cluster page is displayed.
  3. On the Create Cluster page, set Advanced Settings to Custom. Add tags for a cluster.

    You can select a predefined tag and set Tag value for the tag. You can click View Predefined Tag to switch to the TMS management console and view existing tags.

    -

    You can also create new tags by specifying Tag key and Tag value.

    -

    You can add a maximum of 10 tags for a CSS cluster. If the entered tag is incorrect, you can click Delete on the right of the tag to delete the tag.

    - -
    - - - - - - - - - - -
    Table 1 Naming rules for a tag key and value

    Parameter

    -

    Description

    -

    Tag key

    -

    Must be unique in a cluster.

    -

    The value cannot contain more than 64 characters.

    -

    It can contain only numbers, letters, and the following special characters: _.:=+-@ The value cannot start or end with a space.

    -

    Cannot be left blank.

    -

    Tag value

    -

    The value cannot contain more than 64 characters.

    -

    It can contain only numbers, letters, and the following special characters: _.:=+-@ The value cannot start or end with a space.

    -

    Cannot be left blank.

    -
    -
    -
-
-

Managing Tags of Existing Clusters

You can modify, delete, or add tags for a cluster.

-
  1. Log in to the CSS management console.
  2. On the Clusters page, click the name of a cluster for which you want to manage tags.

    The Basic Information page is displayed.

    -
  3. In the navigation pane on the left, choose the Tags tab. You can add, modify, or delete tags.
    • View

      On the Tags page, you can view details about tags of the cluster, including the number of tags and the key and value of each tag.

      -
    • Add

      Click Add in the upper left corner. In the displayed Add Tag dialog box, enter the key and value of the tag to be added, and click OK.

      -
    • Modify

      You can only change the value of an existing tag.

      -

      In the Operation column of a tag, click Edit. In the displayed Edit Tag page, enter a new tag value and click OK.

      -
    • Delete

      In the Operation column of a tag, click Delete. After confirmation, click Yes on the displayed Delete Tag page.

      -
    -
-
-

Searching for Clusters by Tag

  1. Log in to the CSS management console.
  2. On the Clusters page, click Search by Tag in the upper right corner of the cluster list.
  3. Select or enter the tag key and tag value you want to search for, and click Add to add the tag to the search text box.

    You can select a tag key or tag value from their drop-down lists. The system returns a list of clusters that exactly match the tag key or tag value. If you enter multiple tags, the cluster that meets requirements of all the tags will be filtered.

    -

    You can add a maximum of 10 tags at one time.

    -
  4. Click Search.

    The system searches for the target cluster by tag key and value.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0076.html b/docs/css/umn/css_01_0076.html deleted file mode 100644 index e33e4b44..00000000 --- a/docs/css/umn/css_01_0076.html +++ /dev/null @@ -1,57 +0,0 @@ - - -

Accessing a Cluster from a Public Network

-

You can access a security cluster (Elasticsearch clusters in version 6.5.4 or later support the security mode) that has the HTTPS access enabled through the public IP address provided by the system.

-

By default, CSS uses a shared load balancer for public network access. You can use a dedicated load balancer to improve performance. For details about its configuration, see Connecting to a Dedicated Load Balancer.

-

If public network access is enabled for CSS, then EIP and bandwidth resources will be used and billed.

-
-

Configuring Public Network Access

  1. Log in to the CSS management console.
  2. On the Create Cluster page, enable Security Mode. Set the administrator password and enable HTTPS access.
  3. Select Automatically assign for Public IP Address and set related parameters. -
    - - - - - - - - - - - - - -
    Table 1 Public network access parameters

    Parameter

    -

    Description

    -

    Bandwidth

    -

    Bandwidth for accessing Kibana with the public IP address

    -

    Access Control

    -

    If you disable this function, all IP addresses can access the cluster through the public IP address. If you enable access control, only IP addresses in the whitelist can access the cluster through the public IP address.

    -

    Whitelist

    -

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    -
    -
    -
-
-

Managing Public Network Access

You can configure, modify, view the public network access of, or disassociate the public IP address from a cluster.

-
  1. Log in to the CSS management console.
  2. On the Clusters page, click the name of the target cluster. On the Basic Information page that is displayed, manage the public network access configurations.
    • Configuring public network access

      If you enabled HTTPS but did not configure the public network access during security cluster creation, you can configure it on the Basic Information page after configuring the cluster.

      -

      Click Associate next to Public IP Address, set the access bandwidth, and click OK.

      -

      If the association fails, wait for several minutes and try again.

      -
    • Modifying public network access

      For a cluster for which you have configured public network access, you can click Edit next to Bandwidth to modify the bandwidth, or you can click Set next to Access Control to set the access control function and the whitelist for access.

      -
    • Viewing public network access

      On the Basic Information page, you can view the public IP address associated with the current cluster.

      -
    • Disassociating a public IP address from a cluster

      To disassociate the public IP address, click Disassociate next to Public IP Address.

      -
    -
-
-

Accessing a Cluster Through the Public IP Address

After configuring the public IP address, you can use it to access the cluster.

-
For example, run the following cURL commands to view the index information in the cluster. In this example, the public access IP address of one node in the cluster is 10.62.179.32 and the port number is 9200.
  • If the cluster you access does not have the security mode enabled, run the following command:
    curl 'http://10.62.179.32:9200/_cat/indices'
    -
  • If the cluster you access has the security mode enabled, access the cluster using HTTPS and add the username, password and -u to the cURL command.
    curl -u username:password -k 'https://10.62.179.32:9200/_cat/indices'
    -
-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0077.html b/docs/css/umn/css_01_0077.html deleted file mode 100644 index 40d95727..00000000 --- a/docs/css/umn/css_01_0077.html +++ /dev/null @@ -1,109 +0,0 @@ - - -

Managing Logs

-

CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate faults.

-

Log Query

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. In the navigation pane on the left, choose Log Management.
  4. Query logs on the log management page.

    Select the node, log type, and log level you want to query, and then click . The query result is displayed.

    -

    When you search for logs, the latest 10,000 logs are matched. A maximum of 100 logs are displayed.

    -
-
-

Enabling Log Backup

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. Click the Logs tab and toggle on the Log Management switch.
  4. In the Edit Log Backup Configuration dialog box, set the parameters.

    In the displayed dialog box, OBS Bucket and IAM Agency are automatically created for log backup. You can change the default value by referring to Table 1.

    -

    If the Log Management function has been enabled for the cluster, you can click on the right of Log Backup Configuration and modify the configuration in the displayed Edit Log Backup Configuration dialog box. For details, see Table 1.

    - -
    - - - - - - - - - - - - - - - - - -
    Table 1 Parameters for configuring log backup

    Parameter

    -

    Description

    -

    Remarks

    -

    OBS Bucket

    -

    Select an OBS bucket from the drop-down list for storing logs. You can also click Create Bucket on the right to create an OBS bucket.

    -

    The OBS bucket and the cluster must be in the same region.

    -
    NOTE:

    To let an IAM user access an OBS bucket, you need to grant the GetBucketStoragePolicy, GetBucketLocation, ListBucket, and ListAllMyBuckets permissions to the user.

    -
    -

    Backup Path

    -

    Storage path of logs in the OBS bucket

    -
    The backup path configuration rules are as follows:
    • The backup path cannot contain the following characters: \:*?"<>|
    • The backup path cannot start with a slash (/).
    • The backup path cannot start or end with a period (.).
    • The total length of the backup path cannot exceed 1,023 characters.
    -
    -

    IAM Agency

    -

    IAM agency authorized by the current account for CSS to access or maintain data stored in the OBS bucket. You can also click Create IAM Agency on the right to create an IAM agency.

    -

    The IAM agency must meet the following requirements:

    -
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • Mandatory policies: Tenant Administrator
    -
    -
    -
  5. Back up logs.
    • Automatically backing up logs

      Click the icon on the right of Auto Backup to enable the auto backup function.

      -

      After the automatic backup function is enabled, set the backup start time in the Configure Auto Backup dialog box. When the scheduled time arrives, the system will back up logs automatically.

      -

      After the Automatic Snapshot Creation function is enabled, you can click on the right of the parameter to change the backup start time.

      -
    • Manually backing up logs

      On the Log Backup tab page, click Back Up. On the displayed page, click Yes to start backup.

      -

      If Task Status in the log backup list is Successful, the backup is successful.

      -

      All logs in the cluster are copied to a specified OBS path. You can view or download log files from the path of the OBS bucket.

      -
      -
    -
  6. Search for logs.

    On the Log Search page, select the target node, log type, and log level, and click . The search results are displayed.

    -

    When you search for logs, the latest 10,000 logs are matched. A maximum of 100 logs are displayed.

    -
-
-

Viewing Logs

After backing up logs, you can click Backup Path to go to the OBS console and view the logs.

-

Backed up logs mainly include deprecation logs, run logs, index slow logs, and search slow logs. Table 2 lists the storage types of the OBS bucket.

- -
- - - - - - - - - - - - - - - - - - - - - - -
Table 2 Log types

Log Name

-

Description

-

clustername_deprecation.log

-

Deprecation log

-

clustername_index_indexing_slowlog.log

-

Search slow log

-

clustername_index_search_slowlog.log

-

Index slow log

-

clustername.log

-

Elasticsearch run log

-

clustername_access.log

-

Access log

-

clustername_audit.log

-

Audit log

-
-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0078.html b/docs/css/umn/css_01_0078.html deleted file mode 100644 index 22681384..00000000 --- a/docs/css/umn/css_01_0078.html +++ /dev/null @@ -1,24 +0,0 @@ - - -

Viewing the Default Plugin List

-

CSS clusters have default plugins. You can view the default plugin information on the console or Kibana.

-

Viewing Plugins on the Console

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. Click the target cluster name and go to the Basic Information page of the cluster.
  3. Click the Plugins tab.
  4. On the Default page, view default plugins supported by the current version.
-
-

Viewing Plugins on the Kibana

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. Locate the target cluster and click Access Kibana in the Operation column to log in to Kibana.
    • Non-security cluster: The Kibana console is displayed.
    • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the administrator password you specified during cluster creation.
    -
  3. Go to Dev Tools and run the following command to view the cluster plugin information:
    GET _cat/plugins?v
    -

    The following is an example of the response body:

    -
    name                 component                       version
    -css-test-ess-esn-1-1 analysis-dynamic-synonym        7.6.2-xxxx-ei-css-v1.0.1
    -css-test-ess-esn-1-1 analysis-icu                    7.6.2-xxxx-ei-css-v1.1.6
    -css-test-ess-esn-1-1 analysis-ik                     7.6.2-xxxx-ei-css-v1.0.1
    -......
    -

    name indicates the cluster node name, component indicates the plugin name, and version indicates the plugin version.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0079.html b/docs/css/umn/css_01_0079.html deleted file mode 100644 index c62228c5..00000000 --- a/docs/css/umn/css_01_0079.html +++ /dev/null @@ -1,52 +0,0 @@ - - -

Hot and Cold Data Node Switchover

-

CSS provides you with cold data nodes. You can store data that requires query response in seconds on high-performance nodes and store data that requires query response in minutes on cold data nodes with large capacity and low specifications.

-
  • When creating a cluster, you need to configure nodes as data nodes. When you enable the cold data node function, data nodes become hot nodes.
  • You can enable the cold data node, master node, and client node functions at the same time.
  • You can increase nodes and expand storage capacity of cold data nodes. The maximum storage capacity is determined by the node specifications. Local disks do not support storage capacity expansion.
-
-

Hot and Cold Data Node Switchover

If you enable cold data nodes when creating a cluster, the cold data nodes are labeled with cold. Other data nodes become hot nodes and are labeled with hot. You can specify indexes to allocate data to cold or hot nodes.

-

You can configure a template to store indices on the specified cold or hot node.

-

The following figure shows this process. Log in to the Kibana Console page of the cluster, modify the template by configuring the index starting with myindex, and store the indexes on the cold node. In this case, the myindex* date is stored on the cold data node by modifying the template.

-
  • For the 5.x version, run the following command to create a template:
    PUT _template/test
    -{
    -    "order": 1,
    -    "template": "myindex*",
    -    "settings": {
    -        "index": {
    -            "refresh_interval": "30s",
    -            "number_of_shards": "3",
    -            "number_of_replicas": "1",
    -            "routing.allocation.require.box_type": "cold"
    -        }
    -    }
    -}
    -
  • For 6.x or later versions, run the following command to create a template:
    PUT _template/test
    -{
    -  "order": 1,
    -  "index_patterns": "myindex*",
    -  "settings": {
    -    "refresh_interval": "30s",
    -    "number_of_shards": "3",
    -    "number_of_replicas": "1",
    -    "routing.allocation.require.box_type": "cold"
    -  }
    -}
    -
-

You can perform operations on the created index.

-
PUT myindex/_settings   
- { 
-        "index.routing.allocation.require.box_type": "cold"
-    }
-

You can cancel the configurations of hot and cold data nodes.

-
PUT myindex/_settings    
-{ 
-        "index.routing.allocation.require.box_type": null
-    }
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0080.html b/docs/css/umn/css_01_0080.html deleted file mode 100644 index 77107849..00000000 --- a/docs/css/umn/css_01_0080.html +++ /dev/null @@ -1,111 +0,0 @@ - - -

Configuring YML Parameters

-

You can modify the elasticsearch.yml file.

-

Modifying Parameter Configurations

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. Click Parameter Configurations and click Edit to modify module parameters as required. -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Module parameters

    Module Name

    -

    Parameter

    -

    Description

    -

    Cross-domain Access

    -

    http.cors.allow-credentials

    -

    Whether to return the Access-Control-Allow-Credentials of the header during cross-domain access

    -

    Value: true or false

    -

    Default value: false

    -

    http.cors.allow-origin

    -

    Origin IP address allowed for cross-domain access, for example, 122.122.122.122:9200

    -

    http.cors.max-age

    -

    Cache duration of the browser. The cache is automatically cleared after the time range you specify.

    -

    Unit: s

    -

    Default value: 1,728,000

    -

    http.cors.allow-headers

    -

    Headers allowed for cross-domain access, including X-Requested-With, Content-Type, and Content-Length. Use commas (,) and spaces to separate headers.

    -

    http.cors.enabled

    -

    Whether to allow cross-domain access

    -

    Value: true or false

    -

    Default value: false

    -

    http.cors.allow-methods

    -

    Methods allowed for cross-domain access, including OPTIONS, HEAD, GET, POST, PUT, and DELETE. Use commas (,) and spaces to separate methods.

    -

    Reindexing

    -

    reindex.remote.whitelist

    -

    Configured for migrating data from the current cluster to the target cluster through the reindex API. The example value is 122.122.122.122:9200.

    -

    Custom Cache

    -

    indices.queries.cache.size

    -

    Cache size in the query phase

    -

    Value range: 1 to 100

    -

    Unit: %

    -

    Default value: 10%

    -

    Queue Size in a Thread Pool

    -

    thread_pool.bulk.queue_size

    -

    Queue size in the bulk thread pool. The value is an integer. You need to customize this parameter.

    -

    Default value: 200

    -

    thread_pool.write.queue_size

    -

    Queue size in the write thread pool. The value is an integer. You need to customize this parameter.

    -

    Default value: 200

    -

    thread_pool.force_merge.size

    -

    Queue size in the force merge thread pool. The value is an integer.

    -

    Default value: 1

    -

    Customize

    -

    You can add parameters based on your needs.

    -

    Customized parameters

    -
    NOTE:
    • Enter multiple values in the format as [value1, value2, value3...].
    • Separate values by commas (,) and spaces.
    • Colons (:) are not allowed.
    -
    -
    -
    -
  4. After the modification is complete, click Submit.In the displayed Submit Configuration dialog box, select the box indicating "I understand that the modification will take effect after the cluster is restarted." and click Yes.

    If the Status is Succeeded in the parameter modification list, the modification has been saved. Up to 20 modification records can be displayed.

    -
  5. Return to the cluster list and choose More > Restart in the Operation column to restart the cluster and make the modification take effect.
    • You need to restart the cluster after modification, or Configuration unupdated will be displayed in the Task Status column on the Clusters page.
    • If you restart the cluster after the modification, and Task Status displays Configuration error, the parameter configuration file fails to be modified.
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0082.html b/docs/css/umn/css_01_0082.html deleted file mode 100644 index efa3dc17..00000000 --- a/docs/css/umn/css_01_0082.html +++ /dev/null @@ -1,38 +0,0 @@ - - -

Accessing a Cluster Using a VPC Endpoint

-

If the VPC endpoint service is enabled, you can use a private domain name or node IP address generated by the endpoint to access the cluster. When the VPC endpoint service is enabled, a VPC endpoint will be created by default. You can select Private Domain Name Creation as required. VPC endpoint creation requires specific permissions. For details, see "VPCEP Permissions".

-

VPC Endpoint uses a shared load balancer for intranet access. If your workloads require quick access, you are advised to connect a dedicated load balancer to the cluster. For details, see Connecting to a Dedicated Load Balancer.

-

The public IP address access and VPC endpoint service share a load balancer. If you have configured a public access whitelist, public and private IP addresses that access the cluster through VPCEP are restricted because the public IP address access shares the load balancer with the VPC endpoint service. In this case, you need to add IP address 198.19.128.0/17 to the public access whitelist to allow traffic through VPCEP.

-
-

Enabling the VPC Endpoint Service

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner.
  3. On the Create Cluster page, set Advanced Settings to Custom. Enable the VPC endpoint service.
    • Private Domain Name Creation: If you enable this function, the system automatically creates a private domain name for you, which you can use to access the cluster.
    • VPC Endpoint Service Whitelist: You can add an authorized account ID to the VPC endpoint service whitelist. Then you can access the cluster using the domain name or the node IP address.
    • You can click Add to add multiple accounts.
    • Click Delete in the Operation column to delete the accounts that are not allowed to access the cluster.
    -
    • If the authorized account ID is set to *, all users are allowed to access the cluster.
    • You can view authorized account IDs on the My Credentials page.
    -
    -
-
-

Managing VPC Endpoint Service

You can enable the VPC endpoint service while creating a cluster, and also enable it by performing the following steps after cluster creation.

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  3. Click the VPC Endpoint Service tab, and turn on the button next to VPC Endpoint Service.

    In the displayed dialog box, you can determine whether to enable the private domain name. Click Yes to enable the VPC endpoint service.

    -
    -
    -
  4. (Optional) Click Modify next to VPC Endpoint Service Whitelist to update the existing whitelist.
  5. Manage VPC endpoints.

    The VPC Endpoint Service page displays all VPC endpoints connected to the current VPC endpoint service.

    -
    Figure 1 Managing VPC endpoints
    -

    Click Accept or Reject in the Operation column to change the node status. If you reject the connection with a VPC endpoint, you cannot access the cluster through the private domain name generated by that VPC endpoint.

    -
-
-

Accessing the Cluster Using the Private Domain Name or Node IP Address

  1. Obtain the private domain name or node IP address.

    Log in to the CSS console, click the target cluster name and go to the Cluster Information page. Click the VPC Endpoint Service tab and view the private domain name.

    - -
  2. Run the cURL command to execute the API or call the API by using a program before accessing the cluster. For details about Elasticsearch operations and APIs, see the Elasticsearch Reference.

    The ECS must meet the following requirements:

    -
    • Sufficient disk space is allocated for the ECS.
    • The ECS and the cluster must be in the same VPC. After enabling the VPC endpoint service, you can access the cluster from the ECS even when the cluster is not in the same VPC as the ECS.
    • The security group of the ECS must be the same as that of the cluster.

      If this requirement is not met, modify the ECS security group or configure the inbound and outbound rules of the ECS security group to allow the ECS security group to be accessed by all security groups of the cluster. For details, see Configuring Security Group Rules.

      -
    • Configure security group rule settings of the target CSS cluster. Set Protocol to TCP and Port Range to 9200 or a port range including port 9200 for both the outbound and inbound directions.
    -
    • If the cluster you access does not have the security mode enabled, run the following command:
      curl 'http://vpcep-7439f7f6-2c66-47d4-b5f3-790db4204b8d.region01.xxxx.com:9200/_cat/indices'
      -
    • If the cluster you access has the security mode enabled, access the cluster using HTTPS and add the username, password and -u to the cURL command.
      curl -u username:password -k 'https://vpcep-7439f7f6-2c66-47d4-b5f3-790db4204b8d.region01.xxxx.com:9200/_cat/indices'
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0086.html b/docs/css/umn/css_01_0086.html deleted file mode 100644 index 585694ea..00000000 --- a/docs/css/umn/css_01_0086.html +++ /dev/null @@ -1,83 +0,0 @@ - - -

CSS Custom Policies

-

Custom policies can be created to supplement the system-defined policies of CSS. For the actions supported for custom policies, see section "Permissions Policies and Supported Actions" in the Cloud Search Service API Reference.

-

You can create custom policies in either of the following ways:

-
  • Visual editor: Select cloud services, actions, resources, and request conditions. You do not need to have knowledge of the policy syntax.
  • JSON: Create a JSON policy or edit based on an existing policy.
-

For details about how to create custom policies, see Creating a Custom Policy. The following section provides examples of common CSS custom policies.

-

IAM permissions and data plane cluster permissions are managed separately. To enable the security capability of the data plane, you need to use the security mode.

-
-

Example Custom Policies

To let an IAM user access an OBS bucket, you need to grant the GetBucketStoragePolicy, GetBucketLocation, ListBucket, and ListAllMyBuckets permissions to the user.

-
-
Example 1: Allowing users to create a CSS cluster
{
-    "Version": "1.1",
-    "Statement": [
-        {
-            "Action": [
-                "css:cluster:create",
-                "vpc:securityGroups:get",
-                "vpc:securityGroups:create",
-                "vpc:securityGroups:delete",
-                "vpc:securityGroupRules:get",
-                "vpc:securityGroupRules:create",
-                "vpc:securityGroupRules:delete",
-                "vpc:vpcs:list",
-                "vpc:privateIps:list",
-                "vpc:ports:get",
-                "vpc:ports:create",
-                "vpc:ports:update",
-                "vpc:ports:delete",
-                "vpc:quotas:list",
-                "vpc:subnets:get",
-                "ecs:cloudServerFlavors:get",
-                "ecs:serverInterfaces:use",
-                "ecs:cloudServers:addNics",
-                "ecs:quotas:get",
-                "evs:types:get",
-                "evs:quotas:get"
-            ],
-            "Effect": "Allow"
-        }
-    ]
-}
-
-
-

Example 2: Denying cluster deletion

-

A policy with only Deny permissions must be used in conjunction with other policies for it to take effect. If the permissions assigned to a user contain both Allow and Deny, the Deny permissions take precedence over the Allow permissions.

-

The following method can be used if you need to assign permissions of the CSS Admin policy to a user but you want to prevent the user from deleting clusters. Create a custom policy for denying cluster deletion, and attach both policies to the group to which the user belongs. Then, the user can perform all operations on CSS except deleting clusters. The following is an example of a deny policy:

-
{ 
-      "Version": "1.1", 
-      "Statement": [ 
-            { 
-		  "Effect": "Deny", 
-                  "Action": [ 
-                        "css:cluster:delete"
-                  ] 
-            } 
-      ] 
-}
-

Example 3: Defining permissions for multiple services in a policy

-

A custom policy can contain the actions of multiple services that are of the global or project-level type. The following is an example policy containing actions of multiple services:

-
{
-    "Version": "1.1",
-    "Statement": [
-        {
-            "Action": [
-                "ecs:cloudServers:resize",
-                "ecs:cloudServers:delete",
-                "ecs:cloudServers:delete",
-                "css:cluster:restart",
-                "css:*:get*",
-                "css:*:list*"
-            ],
-            "Effect": "Allow"
-        }
-    ]
-}
-
-
- -
- diff --git a/docs/css/umn/css_01_0088.html b/docs/css/umn/css_01_0088.html deleted file mode 100644 index 754082d5..00000000 --- a/docs/css/umn/css_01_0088.html +++ /dev/null @@ -1,86 +0,0 @@ - - -

Accessing a Cluster from a Kibana Public Network

-

For CSS clusters that have security mode enabled, you can enable Kibana public access. After the configuration is complete, an IP address will be provided to access Kibana of this cluster over the Internet.

-

You can configure Kibana public access during cluster creation, or after a cluster in security mode is created.

-
  • You can enable Security Mode for clusters of version 6.5.4 and later versions.
  • Kibana public access cannot be configured for Elasticsearch clusters created in security mode before this function was rolled out (before June 2020).
  • The whitelist for Kibana public network access depends on the ELB whitelist. After you updated the whitelist, the new settings take effect immediately for new connections. For existing persistent connections using the IP addresses that have been removed from the whitelist, the new settings take effect about 1 minute after these connections are stopped.
-
-

Configuring Kibana Public Access When Creating a Cluster

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner. The Create Cluster page is displayed.
  3. On the Create Cluster page, enable Security Mode.
  4. Set Advanced Settings to Custom, enable Kibana Public Access, and set parameters. -
    - - - - - - - - - - - - - -
    Table 1 Kibana public access parameters

    Parameter

    -

    Description

    -

    Bandwidth

    -

    Bandwidth for accessing Kibana with the public IP address

    -

    Value range: 1 to 100

    -

    Unit: Mbit/s

    -

    Access Control

    -

    If you disable this function, all IP addresses can access Kibana through the public IP address. If you enable this function, only IP addresses or IP address in the whitelist can access Kibana through the public IP address.

    -

    Whitelist

    -

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    -

    You are advised to enable this function.

    -
    -
    -

    After the cluster is created, click the cluster name to go to the Basic Information page. On the Kibana Public Access page, you can view the Kibana public IP address.

    -
-
-

Configuring Kibana Public Access for an Existing Cluster

You can enable, disable, modify, and view Kibana public access for an existing cluster that has security mode enabled.

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  3. Click the Kibana Public Access tab. Turn on the Kibana Public Access switch to enable the Kibana public access function.
  4. On the displayed page, set parameters. -
    - - - - - - - - - - - - - -
    Table 2 Kibana public access parameters

    Parameter

    -

    Description

    -

    Bandwidth

    -

    Bandwidth for accessing Kibana with the public IP address

    -

    Value range: 1 to 100

    -

    Unit: Mbit/s

    -

    Access Control

    -

    If you disable this function, all IP addresses can access Kibana through the public IP address. If you enable this function, only IP addresses or IP address in the whitelist can access Kibana through the public IP address.

    -

    Whitelist

    -

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    -

    You are advised to enable this function.

    -
    -
    -
  5. After you set the parameters, click OK.
-
-

Modifying Kibana Public Access

For clusters configured Kibana public access, you can modify its bandwidth and access control or disable this function.

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  3. Click the Kibana Public Access tab to modify the Kibana public access configuration.
    • Modifying bandwidth

      Click Modify on the right of Bandwidth. On the Modify Bandwidth page, modify the bandwidth and click OK.

      -
    • Modifying access control

      Click Modify on the right of Access Control. On the Modify Access Control page, set Access Control and Whitelist, and click OK.

      -
    • Disabling Kibana public access

      Toggle off the Kibana Public Access switch.

      -
    -
-
-

Accessing Kibana with the Public IP Address

After configuring Kibana public access, you will obtain a public IP address that you can use to access Kibana of this cluster.

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  3. Click the Kibana Public Access tab to obtain the Kibana public IP address.
  4. Use this IP address to access Kibana of this cluster through the Internet.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0091.html b/docs/css/umn/css_01_0091.html deleted file mode 100644 index 525b419d..00000000 --- a/docs/css/umn/css_01_0091.html +++ /dev/null @@ -1,17 +0,0 @@ - - -

Managing Indexes

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0092.html b/docs/css/umn/css_01_0092.html deleted file mode 100644 index 66c9076c..00000000 --- a/docs/css/umn/css_01_0092.html +++ /dev/null @@ -1,40 +0,0 @@ - - -

Changing Policies

-

You can change any managed index policy. ISM has constraints to ensure that policy changes do not break indexes.

-

If an index is stuck in its current status, never proceeding, and you want to update its policy immediately, make sure that the new policy includes the same status (same name, action, and order) as the old policy. In this case, ISM applies the new policy even if the policy is being executed.

-

If you update the policy without including an identical status, ISM updates the policy only after all actions in the current status finish executing. Alternatively, you can select a specific status in the old policy and have the new policy take effect.

-

To change a policy using Kibana, do the following:

-
  1. Under Managed Indices, select the indexes to which you want to attach the new policy.
  2. Click Change policy in the upper right corner. The Choose managed indices page is displayed. Configure parameters required for changing a policy. -
    - - - - - - - - - - - - - -
    Table 1 Parameters required for changing a policy

    Parameter

    -

    Description

    -

    Managed indices

    -

    Select the indexes to which you want to attach the new policy. Multiple indexes can be selected.

    -

    State filters

    -

    Select an index status. When a status is selected, the new policy is attached to an index in this status.

    -

    New policy

    -

    Select a new policy.

    -
    -
    -
  3. After configuration is complete, click Change.
-
-
- -
- diff --git a/docs/css/umn/css_01_0093.html b/docs/css/umn/css_01_0093.html deleted file mode 100644 index 8ed64253..00000000 --- a/docs/css/umn/css_01_0093.html +++ /dev/null @@ -1,37 +0,0 @@ - - -

Creating and Managing Indexes

-

Clusters of version 7.6.2 or later support index status management. ISM is a plugin that allows you to automate periodic and administrative operations based on changes on the index age, index size, or number of documents. When using the ISM plug-in, you can define policies that automatically handle index rollovers or deletions based on your needs.

-

The following procedure uses Elasticsearch 7.6.2 as an example. The Kibana UI varies depending on the Kibana version, but their operations are similar.

-
-

Creating an Index Policy

  1. Log in to Kibana and choose IM or Index Management on the left. The Index Management page is displayed.
  2. Click Create policy to create an index policy.
  3. Enter a policy ID in the Policy ID text box and enter your policy in the Define policy text box.
    Figure 1 Configuring a policy
    -
  4. Click Create.
-
-

Attaching a Policy to an Index

You can attach a policy to one or more indexes and add the policy ID to an index template. When you create indexes using that index template pattern, the policy will be attached to all created indexes.

-
  • Method 1: Kibana commands

    On the Dev Tools page of Kibana, run the following command to associate a policy ID with an index template:

    -
    PUT _template/<template_name> 
    -{
    -    "index_patterns": ["index_name-*"],
    -    "settings": {
    -        "opendistro.index_state_management.policy_id": "policy_id"
    -    }
    -}
    -
    • <template_name>: Replace it with the name of a created index template.
    • policy_id: Replace it with a custom policy ID.
    -

    For details about how to create an index template, see Index Template.

    -
  • Method 2: Kibana console
    1. On the Index Management page of Kibana, choose Indices.
      Figure 2 Choosing Indexes
      -
    2. In the Indices list, select the target index to which you want to attach a policy.
    3. Click Apply policy in the upper right corner.
      Figure 3 Adding a policy
      -
    4. Select the policy you created from the Policy ID drop-down list.
      Figure 4 Selecting a policy
      -
    5. Click Apply.

      After you attach a policy to an index, ISM creates a job that runs every 5 minutes by default, to execute the policy, check conditions, and convert the index to different statuses.

      -
    -
-
-

Managing Index Policies

  1. Click Managed Indices.
  2. If you want to change the policy, click Change policy. For details, see Changing Policies.
  3. To delete a policy, select your policy, and click Remove policy.
  4. To retry a policy, select your policy, and click Retry policy.
-

For details, see Index State Management.

-
-
-
- -
- diff --git a/docs/css/umn/css_01_0094.html b/docs/css/umn/css_01_0094.html deleted file mode 100644 index e0407ff0..00000000 --- a/docs/css/umn/css_01_0094.html +++ /dev/null @@ -1,260 +0,0 @@ - - -

Creating an Elasticsearch Cluster in Non-Security Mode

-

This section describes how to create an Elasticsearch cluster in non-security mode.

-

Procedure

  1. Log in to the CSS management console.
  2. On the Dashboard page, click Create Cluster in the upper right corner. The Create page is displayed.

    Alternatively, choose Clusters > Elasticsearch in the navigation tree on the left. Click Create Cluster in the upper right corner. The Create page is displayed.

    -
  3. Specify Region and AZ. -
    - - - - - - - - - - -
    Table 1 Region and AZ parameters

    Parameter

    -

    Description

    -

    Region

    -

    Select a region for the cluster from the drop-down list on the right. Currently, only eu-de and eu-nl are supported.

    -

    AZ

    -

    Select AZs associated with the cluster region.

    -

    You can select a maximum of three AZs. For details, see Deploying a Cross-AZ Cluster.

    -
    -
    -
  4. Configure basic cluster information. -
    - - - - - - - - - - -
    Table 2 Basic parameters

    Parameter

    -

    Description

    -

    Version

    -

    Select a cluster version from the drop-down list box.

    -

    Name

    -

    Cluster name, which contains 4 to 32 characters. Only letters, numbers, hyphens (-), and underscores (_) are allowed and the value must start with a letter.

    -
    NOTE:

    After a cluster is created, you can modify the cluster name as required. Click the name of a cluster to be modified. On the displayed Basic Information page, click next to the cluster name. After the modification is completed, click to save the modification. If you want to cancel the modification, click .

    -
    -
    -
    -
  5. Configure cluster specifications. -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 3 Parameter description

    Parameter

    -

    Description

    -

    Nodes

    -

    Number of nodes in a cluster. Select a number from 1 to 32. You are advised to configure three or more nodes to ensure high availability of the cluster.

    -
    • If neither a master node nor client node is enabled, the nodes specified by this parameter are used to serve as both the master node and client node. Nodes provide the cluster management, data storage, cluster access, and data analysis functions. To ensure data stability in the cluster, it is recommended that you set this parameter to a value no less than 3.
    • If only the master node function is enabled, nodes specified by this parameter are used to store data and provide functions of client nodes.
    • If both the master and client node functions are enabled, the nodes specified by this parameter are only used for storing data.
    • If only the client node function is enabled, nodes specified by this parameter are used to store data and provide functions of the master node.
    -

    CPU Architecture

    -

    Currently, support x86. The supported type is determined by the actual regional environment.

    -

    Node Specifications

    -

    Specifications of nodes in a cluster. You can select a specified specification based on your needs. Each cluster supports only one specification.

    -

    After you select a flavor, the CPU and memory corresponding to the current specification are displayed below the parameter. For example, if you select css.medium.8, then 1 vCPUs | 8 GB will be displayed, indicating that the node flavor you select contains one vCPU and 8 GB memory.

    -

    Node Storage Type

    -

    In the current version, the following options are available: Common I/O, High I/O, and Ultra-high I/O.

    -

    Node Storage Capacity

    -

    Storage space. Its value varies with node specifications.

    -

    The node storage capacity must be a multiple of 20.

    -

    Disk Encryption

    -

    If you select this option, the nodes in the cluster you create will use encrypted EVS disks to protect data. By default, this option is not selected. Note that you cannot modify this setting after the cluster is created. Therefore, exercise caution when performing the setting.

    -

    After you select this option, you need to select an available key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    -

    Enabling disk encryption has no impact on your operations on a cluster (such as accessing the cluster and importing data to the cluster). However, after you enable disk encryption, operation performance deteriorates by about 10%.

    -
    NOTE:
    • If the cluster is in the Available status and the key used for disk encryption is in the Pending deletion or disable status or has been deleted after a cluster is created, cluster scale-out is not allowed. However, other operations on the cluster, such as restarting the cluster, creating snapshots, restoring the cluster, and importing data to the cluster are not affected. In addition, this key cannot be used for cluster creation in the future.
    • After a cluster is created, do not delete the key used by the cluster. Otherwise, the cluster will become unavailable.
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    -
    -

    Master node

    -

    The master node manages all nodes in the cluster. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the master node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    -

    After enabling the master node, specify Node Specifications, Nodes, and Node Storage Type. The value of Nodes must be an odd number equal to or greater than 3. Up to nine nodes are supported. The value of Node Storage Capacity is fixed. You can select a storage type based on your needs.

    -

    Client node

    -

    The client node allows clients to access clusters and analyze data. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the client node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    -

    After enabling the client node, specify Node Specifications, Nodes and Node Storage Type. The value of Nodes ranges from 1 to 32. The value of Node Storage Capacity is fixed. You can select a storage type based on your needs.

    -

    Cold data node

    -

    The cold data node is used to store historical data, for which query responses can be returned in minutes. If you do not quire a quick query response, store historical data on cold data nodes to reduce costs.

    -

    After enabling cold data node, configure Node Specifications, Nodes, Node Storage Type, and Node Storage Capacity. The value of Nodes ranges from 1 to 32. Select Node Storage Type and Node Storage Capacity as requirement.

    -

    After the cold data node is enabled, CSS automatically adds cold and hot tags to related nodes.

    -
    -
    -
    Figure 1 Configuring host specifications
    -
  6. Set the enterprise project.

    When creating a CSS cluster, you can bind an enterprise project to the cluster if you have enabled the enterprise project function. You can select an enterprise project created by the current user from the drop-down list on the right or click View Project Management to go to the Enterprise Project Management console and create a new project or view existing projects.

    -
  7. Set network specifications of the cluster. -
    - - - - - - - - - - - - - - - - -
    Table 4 Parameter description

    Parameter

    -

    Description

    -

    VPC

    -

    A VPC is a secure, isolated, and logical network environment.

    -

    Select the target VPC. Click View VPC to enter the VPC management console and view the created VPC names and IDs. If no VPCs are available, create one.

    -
    NOTE:

    The VPC must contain CIDRs. Otherwise, cluster creation will fail. By default, a VPC will contain CIDRs.

    -
    -

    Subnet

    -

    A subnet provides dedicated network resources that are isolated from other networks, improving network security.

    -

    Select the target subnet. You can access the VPC management console to view the names and IDs of the existing subnets in the VPC.

    -

    Security Group

    -

    A security group implements access control for ECSs that have the same security protection requirements in a VPC. To view more details about the security group, click View Security Group.

    -
    NOTE:
    • For cluster access purposes, ensure that the security group contains port 9200.
    • If your cluster version is 7.6.2 or later, ensure that all the ports used for communication between nodes in the same security group are allowed. If such settings cannot be configured, ensure at least the access to port 9300 is allowed.
    • After the port 9300 is enabled, if the cluster disk usage is high, delete expired data to release the disk storage space.
    -
    -

    Security Mode

    -

    Security mode is disabled.

    -
    -
    -
    Figure 2 Configuring network specifications
    -
  8. Click Next: Configure Advanced Settings. Configure the automatic snapshot creation and other functions.
    1. Configure Cluster Snapshot. Set basic configuration and snapshot configuration.

      The cluster snapshot function is enabled by default. You can also disable this function as required. To store automatic snapshots in OBS, an agency will be created to access OBS. Additional cost will be incurred if snapshots are stored in standard storage.

      - -
      - - - - - - - - - - - - - - - - -
      Table 5 Cluster snapshot parameter

      Parameter

      -

      Description

      -

      OBS bucket

      -

      Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

      -

      The created or existing OBS bucket must meet the following requirements:

      -
      • Storage Class is Standard or Warm.
      • Region must be the same as that of the created cluster.
      -

      Backup Path

      -

      Storage path of the snapshot in the OBS bucket.

      -
      The backup path configuration rules are as follows:
      • The backup path cannot contain the following characters: \:*?"<>|
      • The backup path cannot start with a slash (/).
      • The backup path cannot start or end with a period (.).
      • The backup path cannot contain more than 1,023 characters.
      -
      -

      IAM Agency

      -

      IAM agency authorized by the current account to CSS access or maintain data stored in the OBS bucket. You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

      -

      The created or existing IAM agency must meet the following requirements:

      -
      • Agency Type must be Cloud service.
      • Set Cloud Service to CSS.
      • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
      -

      Snapshot Encryption

      -

      Indicates whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

      -

      After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to switch to the KMS management console to create or modify a key. For details, see Creating a CMK.

      -
      • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
      • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
      • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
      • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
      -
      -
      - -
      - - - - - - - - - - - - - - - - -
      Table 6 Automatic snapshot creation parameter

      Parameter

      -

      Description

      -

      Snapshot Name Prefix

      -

      The snapshot name prefix contains 1 to 32 characters and must start with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. A snapshot name consists of a snapshot name prefix and a timestamp, for example, snapshot-1566921603720.

      -

      Time Zone

      -

      Time zone for the backup time, which cannot be changed. Specify backup started time based on the time zone.

      -

      Backup Start Time

      -

      The time when the backup starts automatically every day. You can specify this parameter only in full hours, for example, 00:00 or 01:00. The value ranges from 00:00 to 23:00. Select a time from the drop-down list.

      -

      Retention Period (days)

      -

      The number of days that snapshots are retained in the OBS bucket. The value ranges from 1 to 90. You can specify this parameter as required. The system automatically deletes expired snapshots every hour at half past the hour.

      -
      -
      -
      Figure 3 Setting parameters for automatic snapshot creation
      -
    2. Configure advanced settings for the cluster.
      • Default: The VPC Endpoint Service, Kibana Public Access, and Tag functions are disabled by default. You can manually enable these functions after the cluster is created.
      • Custom: You can enable the VPC Endpoint Service and Tag functions as required.
      - -
      - - - - - - - - - - - - - -
      Table 7 Parameters for advanced settings

      Parameter

      -

      Description

      -

      VPC Endpoint Service

      -

      After enabling this function, you can obtain a private domain name for accessing the cluster in the same VPC. For details, see Accessing a Cluster Using a VPC Endpoint.

      -

      Kibana Public Access

      -

      Clusters in non-security mode cannot access Kibana through the Internet.

      -

      Tag

      -

      Adding tags to clusters can help you identify and manage your cluster resources. You can customize tags or use tags predefined by Tag Management Service (TMS). For details, see Managing Tags.

      -
      -
      -
    -
  9. Click Next: Confirm. Check the configuration and click Next to create a cluster.
  10. Click Back to Cluster List to switch to the Clusters page. The cluster you created is listed on the displayed page and its status is Creating. If the cluster is successfully created, its status will change to Available.

    If the cluster creation fails, create the cluster again.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0107.html b/docs/css/umn/css_01_0107.html deleted file mode 100644 index def99a26..00000000 --- a/docs/css/umn/css_01_0107.html +++ /dev/null @@ -1,24 +0,0 @@ - - -

Kibana Platform

-

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0108.html b/docs/css/umn/css_01_0108.html deleted file mode 100644 index c74c3ced..00000000 --- a/docs/css/umn/css_01_0108.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

Logging In to Kibana

-

After creating a CSS cluster, you can log in to Kibana through the console or public network.

-

Procedure

Logging in to the console
  1. Log in to the CSS management console.
  2. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column to go to the Kibana login page.
    • Non-security cluster: The Kibana console is displayed.
    • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the one specified during cluster creation.
    -
  3. After the login is successful, you can access the Elasticsearch cluster through Kibana.
-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0109.html b/docs/css/umn/css_01_0109.html deleted file mode 100644 index c0d71daa..00000000 --- a/docs/css/umn/css_01_0109.html +++ /dev/null @@ -1,83 +0,0 @@ - - -

Creating a User and Granting Permissions by Using Kibana

-

CSS uses the opendistro_security plug-in to provide security cluster capabilities. The opendistro_security plug-in is built based on the RBAC model. RBAC involves three core concepts: user, action, and role. RBAC simplifies the relationship between users and actions, simplifies permission management, and facilitates permission expansion and maintenance. The following figure shows the relationship between the three.

-
Figure 1 User, action, and role
- -
- - - - - - - - - - - - - - - - - - - -
Table 1 Parameters

Parameter

-

Description

-

User

-

A user can send operation requests to Elasticsearch clusters. The user has credentials such as username and password, and zero or multiple backend roles and custom attributes.

-

Role

-

A role is a combination of permissions and action groups, including operation permissions on clusters, indexes, documents, or fields.

-

Permission

-

Single permission, for example, creating an index (for example, indices:admin/create)

-

Role mapping

-

A user will be assigned a role after successful authentication. Role mapping is to map a role to a user (or a backend role). For example, the mapping from kibana_user (role) to jdoe (user) means that John Doe obtains all permissions of kibana_user after being authenticated by kibana_user. Similarly, the mapping from all_access (role) to admin (backend role) means that any user with the backend role admin (from the LDAP/Active Directory server) has all the permissions of role all_access after being authenticated. You can map a role to multiple users or backend roles.

-

Action group

-

A group of permissions. For example, the predefined SEARCH action group grants roles to use _search and _msearchAPI.

-
-
-

In addition to the RBAC model, Elasticsearch has an important concept called tenant. RBAC is used to manage user authorization, and tenants are used for information sharing across tenants. In a tenant space, IAM users can share information such as dashboard data and index patterns.

-

This section describes how to use Kibana to create a user and grant permissions to the user. Kibana can be used to create users and grant permissions only when the security mode is enabled for the cluster.

-
  • The Kibana UI varies depending on the Kibana version, but their operations are similar. This section takes Kibana 7.6.2 as an example to describe the procedure.
  • You can customize the username, role name, and tenant name in Kibana.
-
- -

Logging in to Kibana

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
    Enter the administrator username and password to log in to Kibana.
    • Username: admin (default administrator account name)
    • Password: Enter the administrator password you set when creating the cluster in security mode.
    -
    Figure 2 Login page
    -
    -
-
-

Creating a User

Log in to Kibana and create a user on the Security page.

-
  1. After a successful login, choose Security in the navigation tree on the left of the Kibana operation page. The Security page is displayed.
    Figure 3 Accessing the Security page
    -
  2. Choose Authentication Backends > Internal Users Database.
    Figure 4 Adding a user (1)
    -
  3. On the Internal Users Database page, choose . The page for adding user information is displayed.
    Figure 5 Adding a user (2)
    -
  4. On the user creation page, specify Username, Password, and Repeatpassword, and click Submit.
-

The user will be displayed in the user list.

-
-

Creating a Role and Granting Permissions

Create a role and grant permissions to the role.

-
  1. Click Roles.
    Figure 6 Adding a role
    -
  2. On the Open Distro Security Roles page, click .
    1. On the Overview tab page, set the role name.
      Figure 7 Entering a role name
      -
    2. On the Cluster Permissions tab page, set CSS cluster permissions. Set cluster permissions based on service requirements. If this parameter is not specified for a role, the role has no cluster-level permissions.
      • Permissions: Action Groups: You can click Add Action Group to set cluster permissions. For example, if you select the read permission for a cluster, you can only view information such as the cluster status and cluster nodes.
      • Permissions: Single Permissions: Select Show Advanced and click Add Single Permission to set more refined permissions for the cluster. For example, if this parameter is set to indices:data/read, you can only read specified indexes.
      -
      Figure 8 Cluster Permissions tab page
      -
    3. Configure index permissions on the Index Permissions page.
      • Index patterns: Set this parameter to the name of the index whose permission needs to be configured. For example, my_store.

        Use different names for the index and the user.

        -
        -
      • Permissions: Action Groups: Click Add Action Group and set the permission as required. For example, select the read-only permission Search.
      -
    4. On the Tenant Permissions page, set role permissions based on service requirements.
      • Global permissions: Click Add Field to set the kibana read and write permissions of a role, for example, kibana_all_read or kibana_all_write.
      • Tenant permissions: Click Add tenant pattern to add a tenant mode and set the kibana_all_read or kibana_all_write permission for a new tenant mode.
        Figure 9 Tenant Permissions tab
        -
      -
    -
  3. Click Save Role Definition and you can view the configured role.
-
-

Configuring a Role for a User

After creating a role and granting permissions to the role, you need to map the role to a user so that the user can obtain the permissions of the mapped role.

-
  1. Click Role Mappings. On the displayed Role Mappings page, map the roles.
    Figure 10 Role mapping
    -
  2. On the Role Mappings page, click to select a role and add users.
    • Role: Select the name of the role to be mapped.
    • Users: Click Add User and enter the name of the user whose role is mapped.
    -
    Figure 11 Users and roles
    -
  3. Click Submit.
  4. Verify that the configuration takes effect in Kibana.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0111.html b/docs/css/umn/css_01_0111.html deleted file mode 100644 index 26d6fbe9..00000000 --- a/docs/css/umn/css_01_0111.html +++ /dev/null @@ -1,31 +0,0 @@ - - -

Enhanced Cluster Features

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0112.html b/docs/css/umn/css_01_0112.html deleted file mode 100644 index 2bf60f19..00000000 --- a/docs/css/umn/css_01_0112.html +++ /dev/null @@ -1,24 +0,0 @@ - - -

Storage-Compute Decoupling

-

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0113.html b/docs/css/umn/css_01_0113.html deleted file mode 100644 index 503b47d7..00000000 --- a/docs/css/umn/css_01_0113.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

Context

-

You can store hot data on SSD to achieve the optimal query performance, and store historical data in OBS to reduce data storage costs.

-

Application Scenarios

A large volume of data is written to and stored in SSDs. If historical data is no longer updated (is turned into cold data) and its QPS decreases, you can call CSS APIs to dump hot data from SSDs to OBS buckets. This operation freezes indexes, decoupling compute from storage.

-
-

Constraints

  • Currently, only Elasticsearch clusters of the versions 7.6.2 and 7.10.2 support decoupled storage and computing.
  • The storage-compute decoupling feature depends on OBS. Therefore, you must comply with the restrictions on OBS bandwidth and QPS. If these restrictions are violated, the performance of queries on OBS will deteriorate. For example, the speed of restoring shards and querying data will become slow.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0114.html b/docs/css/umn/css_01_0114.html deleted file mode 100644 index f2553af4..00000000 --- a/docs/css/umn/css_01_0114.html +++ /dev/null @@ -1,521 +0,0 @@ - - -

Freezing an Index

-

Precautions

  • Before freezing an index, ensure no data is being written to it. The index will be set to read only before being frozen, and data write will fail.
  • After an index is frozen,
    • It becomes read-only.
    • The index data will be dumped to OBS. This process occupies network bandwidth.
    • The query latency of a dumped index will increase. During aggregation, the latency of processing complex queries and reading a large volume of data is long.
    • It cannot be unfrozen. That is, a read-only index cannot be changed to writable.
    • After the freezing is complete, the index data in your local disks will be deleted.
    -
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Click Dev Tools in the navigation tree on the left.
  4. Run the following command to freeze a specified index and dump it to OBS:
    POST ${index_name}/_freeze_low_cost
    - -
    - - - - - - - -
    Table 1 Parameter description

    Parameter

    -

    Description

    -

    index_name

    -

    Name of the index to be frozen.

    -
    -
    -

    Information similar to the following is displayed:

    -
    {
    -    "freeze_uuid": "pdsRgUtSTymVDWR_HoTGFw"
    -}
    - -
    - - - - - - - -
    Table 2 Response parameter

    Parameter

    -

    Description

    -

    freeze_uuid

    -

    After an index freezing request is submitted, an asynchronous job will be started. The request returns the asynchronous job ID, which can be used to query the progress of the asynchronous job.

    -
    -
    -

    After an index freezing request is submitted, data cannot be written to the index. During the index freezing, query requests are not affected. After the freezing is complete, the index is closed and then opened. During this period, the index cannot be queried, and the cluster may be in the red status for a short time. The index is restored after being opened.

    -
    -
  5. Run the following command to check the freezing task progress:
    GET _freeze_low_cost_progress/${freeze_uuid}
    - -
    - - - - - - - -
    Table 3 Parameter description

    Parameter

    -

    Description

    -

    freeze_uuid

    -

    Asynchronous task ID, which is obtained in 4.

    -
    -
    -

    Information similar to the following is displayed:

    -
    {
    -
    -  "stage" : "STARTED",
    -  "shards_stats" : {
    -    "INIT" : 0,
    -    "FAILURE" : 0,
    -    "DONE" : 0,
    -    "STARTED" : 3,
    -    "ABORTED" : 0
    -  },
    -  "indices" : {
    -    "data1" : [
    -      {
    -        "uuid" : "7OS-G1-tRke2jHZPlckexg",
    -        "index" : {
    -          "name" : "data1",
    -          "index_id" : "4b5PHXJITLaS6AurImfQ9A",
    -          "shard" : 2
    -        },
    -        "start_ms" : 1611972010852,
    -        "end_ms" : -1,
    -        "total_time" : "10.5s",
    -        "total_time_in_millis" : 10505,
    -        "stage" : "STARTED",
    -        "failure" : null,
    -        "size" : {
    -          "total_bytes" : 3211446689,
    -          "finished_bytes" : 222491269,
    -          "percent" : "6.0%"
    -        },
    -        "file" : {
    -          "total_files" : 271,
    -          "finished_files" : 12,
    -          "percent" : "4.0%"
    -        },
    -        "rate_limit" : {
    -          "paused_times" : 1,
    -          "paused_nanos" : 946460970
    -        }
    -      },
    -      {
    -        "uuid" : "7OS-G1-tRke2jHZPlckexg",
    -        "index" : {
    -          "name" : "data1",
    -          "index_id" : "4b5PHXJITLaS6AurImfQ9A",
    -          "shard" : 0
    -        },
    -        "start_ms" : 1611972010998,
    -        "end_ms" : -1,
    -        "total_time" : "10.3s",
    -        "total_time_in_millis" : 10359,
    -        "stage" : "STARTED",
    -        "failure" : null,
    -        "size" : {
    -          "total_bytes" : 3221418186,
    -          "finished_bytes" : 272347118,
    -          "percent" : "8.0%"
    -        },
    -        "file" : {
    -          "total_files" : 372,
    -          "finished_files" : 16,
    -          "percent" : "4.0%"
    -        },
    -        "rate_limit" : {
    -          "paused_times" : 5,
    -          "paused_nanos" : 8269016764
    -        }
    -      },
    -      {
    -        "uuid" : "7OS-G1-tRke2jHZPlckexg",
    -        "index" : {
    -          "name" : "data1",
    -          "index_id" : "4b5PHXJITLaS6AurImfQ9A",
    -          "shard" : 1
    -        },
    -        "start_ms" : 1611972011021,
    -        "end_ms" : -1,
    -        "total_time" : "10.3s",
    -        "total_time_in_millis" : 10336,
    -        "stage" : "STARTED",
    -        "failure" : null,
    -        "size" : {
    -          "total_bytes" : 3220787498,
    -          "finished_bytes" : 305789614,
    -          "percent" : "9.0%"
    -        },
    -        "file" : {
    -          "total_files" : 323,
    -          "finished_files" : 14,
    -          "percent" : "4.0%"
    -        },
    -        "rate_limit" : {
    -          "paused_times" : 3,
    -          "paused_nanos" : 6057933087
    -        }
    -      }
    -    ]
    -  }
    -}
    - -
    - - - - - - - - - - - - - -
    Table 4 Response parameters

    Parameter

    -

    Description

    -

    stage

    -

    Status. Its value can be:

    -
    • INIT: The instance has just started or is being initialized.
    • FAILURE: failed
    • DONE: complete
    • STARTED: started
    • ABORTED: Canceled. This field is reserved.
    -

    shards_stats

    -

    Numbers of shards in each state.

    -

    indices

    -

    Index status details.

    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 5 Return values of indices

    Parameter

    -

    Description

    -

    uuid

    -

    UUID of the freezing operation

    -

    index

    -

    Index and shard information

    -

    start_ms

    -

    Start time

    -

    end_ms

    -

    End time. If no end time is specified, the value -1 is displayed.

    -

    total_time

    -

    Time spent

    -

    total_time_in_millis

    -

    Time spent, in milliseconds

    -

    stage

    -

    Status of the current shard.

    -

    failure

    -

    Failure cause. If no failure occurs, null is displayed.

    -

    size.total_bytes

    -

    Size of files to be frozen, in bytes

    -

    size.finished_bytes

    -

    Frozen bytes

    -

    size.percent

    -

    Percentage of frozen bytes

    -

    file.total_bytes

    -

    Number of files to be frozen

    -

    file.finished_bytes

    -

    Number of frozen files

    -

    file.percent

    -

    Percentage of frozen files

    -

    rate_limit.paused_times

    -

    Number of times that freezing is suspended due to rate limit

    -

    rate_limit.paused_nanos

    -

    Duration of freezing task suspension due to rate limit, in nanoseconds

    -
    -
    -

    The following parameters are added to a frozen index. For details, see Table 6.

    - -
    - - - - - - - - - - - - - -
    Table 6 Frozen index parameters

    Parameter

    -

    Description

    -

    index.frozen_low_cost

    -

    Whether an index is frozen. The value is true.

    -

    index.blocks.write

    -

    Whether data writing is denied in a frozen index. The value is true.

    -

    index.store.type

    -

    Storage type of an index. The value is obs.

    -
    -
    -
  6. After an index is frozen, its data will be cached. Run the following command to check the current cache status: For details about the cache, see Configuring Cache.
    GET _frozen_stats
    -GET _frozen_stats/${node_id}
    - -
    - - - - - - - -
    Table 7 Parameter description

    Parameter

    -

    Description

    -

    node_id

    -

    Node ID, which can be used to obtain the cache status of a node.

    -
    -
    -

    Information similar to the following is displayed:

    -
    {
    -  "_nodes" : {
    -    "total" : 3,
    -    "successful" : 3,
    -    "failed" : 0
    -  },
    -  "cluster_name" : "css-zzz1",
    -  "nodes" : {
    -    "7uwKO38RRoaON37YsXhCYw" : {
    -      "name" : "css-zzz1-ess-esn-2-1",
    -      "transport_address" : "10.0.0.247:9300",
    -      "host" : "10.0.0.247",
    -      "ip" : "10.0.0.247",
    -      "block_cache" : {
    -        "default" : {
    -          "type" : "memory",
    -          "block_cache_capacity" : 8192,
    -          "block_cache_blocksize" : 8192,
    -          "block_cache_size" : 12,
    -          "block_cache_hit" : 14,
    -          "block_cache_miss" : 0,
    -          "block_cache_eviction" : 0,
    -          "block_cache_store_fail" : 0
    -        }
    -      },
    -      "obs_stats" : {
    -        "list" : {
    -          "obs_list_count" : 17,
    -          "obs_list_ms" : 265,
    -          "obs_list_avg_ms" : 15
    -        },
    -        "get_meta" : {
    -          "obs_get_meta_count" : 79,
    -          "obs_get_meta_ms" : 183,
    -          "obs_get_meta_avg_ms" : 2
    -        },
    -        "get_obj" : {
    -          "obs_get_obj_count" : 12,
    -          "obs_get_obj_ms" : 123,
    -          "obs_get_obj_avg_ms" : 10
    -        },
    -        "put_obj" : {
    -          "obs_put_obj_count" : 12,
    -          "obs_put_obj_ms" : 2451,
    -          "obs_put_obj_avg_ms" : 204
    -        },
    -        "obs_op_total" : {
    -          "obs_op_total_ms" : 3022,
    -          "obs_op_total_count" : 120,
    -          "obs_op_avg_ms" : 25
    -        }
    -      },
    -      "reader_cache" : {
    -        "hit_count" : 0,
    -        "miss_count" : 1,
    -        "load_success_count" : 1,
    -        "load_exception_count" : 0,
    -        "total_load_time" : 291194714,
    -        "eviction_count" : 0
    -      }
    -    },
    -    "73EDpEqoQES749umJqxOzQ" : {
    -      "name" : "css-zzz1-ess-esn-3-1",
    -      "transport_address" : "10.0.0.201:9300",
    -      "host" : "10.0.0.201",
    -      "ip" : "10.0.0.201",
    -      "block_cache" : {
    -        "default" : {
    -          "type" : "memory",
    -          "block_cache_capacity" : 8192,
    -          "block_cache_blocksize" : 8192,
    -          "block_cache_size" : 12,
    -          "block_cache_hit" : 14,
    -          "block_cache_miss" : 0,
    -          "block_cache_eviction" : 0,
    -          "block_cache_store_fail" : 0
    -        }
    -      },
    -      "obs_stats" : {
    -        "list" : {
    -          "obs_list_count" : 17,
    -          "obs_list_ms" : 309,
    -          "obs_list_avg_ms" : 18
    -        },
    -        "get_meta" : {
    -          "obs_get_meta_count" : 79,
    -          "obs_get_meta_ms" : 216,
    -          "obs_get_meta_avg_ms" : 2
    -        },
    -        "get_obj" : {
    -          "obs_get_obj_count" : 12,
    -          "obs_get_obj_ms" : 140,
    -          "obs_get_obj_avg_ms" : 11
    -        },
    -        "put_obj" : {
    -          "obs_put_obj_count" : 12,
    -          "obs_put_obj_ms" : 1081,
    -          "obs_put_obj_avg_ms" : 90
    -        },
    -        "obs_op_total" : {
    -          "obs_op_total_ms" : 1746,
    -          "obs_op_total_count" : 120,
    -          "obs_op_avg_ms" : 14
    -        }
    -      },
    -      "reader_cache" : {
    -        "hit_count" : 0,
    -        "miss_count" : 1,
    -        "load_success_count" : 1,
    -        "load_exception_count" : 0,
    -        "total_load_time" : 367179751,
    -        "eviction_count" : 0
    -      }
    -    },
    -    "EF8WoLCUQbqJl1Pkqo9-OA" : {
    -      "name" : "css-zzz1-ess-esn-1-1",
    -      "transport_address" : "10.0.0.18:9300",
    -      "host" : "10.0.0.18",
    -      "ip" : "10.0.0.18",
    -      "block_cache" : {
    -        "default" : {
    -          "type" : "memory",
    -          "block_cache_capacity" : 8192,
    -          "block_cache_blocksize" : 8192,
    -          "block_cache_size" : 12,
    -          "block_cache_hit" : 14,
    -          "block_cache_miss" : 0,
    -          "block_cache_eviction" : 0,
    -          "block_cache_store_fail" : 0
    -        }
    -      },
    -      "obs_stats" : {
    -        "list" : {
    -          "obs_list_count" : 17,
    -          "obs_list_ms" : 220,
    -          "obs_list_avg_ms" : 12
    -        },
    -        "get_meta" : {
    -          "obs_get_meta_count" : 79,
    -          "obs_get_meta_ms" : 139,
    -          "obs_get_meta_avg_ms" : 1
    -        },
    -        "get_obj" : {
    -          "obs_get_obj_count" : 12,
    -          "obs_get_obj_ms" : 82,
    -          "obs_get_obj_avg_ms" : 6
    -        },
    -        "put_obj" : {
    -          "obs_put_obj_count" : 12,
    -          "obs_put_obj_ms" : 879,
    -          "obs_put_obj_avg_ms" : 73
    -        },
    -        "obs_op_total" : {
    -          "obs_op_total_ms" : 1320,
    -          "obs_op_total_count" : 120,
    -          "obs_op_avg_ms" : 11
    -        }
    -      },
    -      "reader_cache" : {
    -        "hit_count" : 0,
    -        "miss_count" : 1,
    -        "load_success_count" : 1,
    -        "load_exception_count" : 0,
    -        "total_load_time" : 235706838,
    -        "eviction_count" : 0
    -      }
    -    }
    -  }
    -}
    -
    -
  7. Run the following command to reset the cache status:
    POST _frozen_stats/reset
    -

    Information similar to the following is displayed:

    -
    {
    -  "_nodes" : {
    -    "total" : 1,
    -    "successful" : 1,
    -    "failed" : 0
    -  },
    -  "cluster_name" : "Es-0325-007_01",
    -  "nodes" : {
    -    "mqTdk2YRSPyOSXfesREFSg" : {
    -      "result" : "ok"
    -    }
    -  }
    -}
    -

    This command is used to debug performance issues. If you reset the cache status and run this command, you can check the cache command status. You do not need to run this command during service running.

    -
    -
  8. Run the following command to check all the frozen indexes:
    GET _cat/freeze_indices
    -

    Information similar to the following is displayed:

    -
    green open data2 0bNtxWDtRbOSkS4JYaUgMQ 3 0  5 0  7.9kb  7.9kb
    -green open data3 oYMLvw31QnyasqUNuyP6RA 3 0 51 0 23.5kb 23.5kb
    -

    The parameters and return values of this command are the same as those of _cat/indices of Elasticsearch.

    -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0116.html b/docs/css/umn/css_01_0116.html deleted file mode 100644 index 61f404c7..00000000 --- a/docs/css/umn/css_01_0116.html +++ /dev/null @@ -1,139 +0,0 @@ - - -

Configuring Cache

-

After data is dumped to OBS, some data is cached to reduce access to OBS and improve Elasticsearch query performance. Data that is requested for the first time is obtained from OBS. The obtained data is cached in the memory. In subsequent queries, the system searches for data in the cache first. Data can be cached in memory or files.

-

Elasticsearch accesses different files in different modes. The cache system supports multi-level cache and uses blocks of different sizes to cache different files. For example, a large number of small blocks are used to cache .fdx and .tip files, and a small number of large blocks are used to cache .fdt files.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Cache configurations

Parameter

-

Type

-

Description

-

low_cost.obs.blockcache.names

-

Array

-

The cache system supports multi-level cache for data of different access granularities. This configuration lists the names of all caches. If this parameter is not set, the system has a cache named default. To customize the configuration, ensure there is a cache named default.

-

Default value: default

-

low_cost.obs.blockcache.<NAME>.type

-

ENUM

-

Cache type, which can be memory or file.

-

If it is set to memory, certain memory will be occupied. If it is set to file, cache will be stored in disks. You are advised to use ultra-high I/O disks to improve cache performance.

-

Default value: memory

-

low_cost.obs.blockcache.<NAME>.blockshift

-

Integer

-

Size of each block in the cache. Its value is the number of bytes shifted left. For example, if this parameter is set to 16, the block size is 216 bytes, that is, 65536 bytes (64 KB).

-

Default value: 13 (8 KB)

-

low_cost.obs.blockcache.<NAME>.bank.count

-

Integer

-

Number of cache partitions.

-

Default value: 1

-

low_cost.obs.blockcache.<NAME>.number.blocks.perbank

-

Integer

-

Number of blocks included in each cache partition.

-

Default value: 8192

-

low_cost.obs.blockcache. <NAME>.exclude.file.types

-

Array

-

Extensions of files that are not cached. If the extensions of certain files are neither in the exclude list nor in the include list, they are stored in the default cache.

-

low_cost.obs.blockcache. <NAME>.file.types

-

Array

-

Extensions of cached files. If the extensions of certain files are neither in the exclude list nor in the include list, they are stored in the default cache.

-
-
-

The following is a common cache configuration. It uses two levels of caches, default and large. The default cache uses 64 KB blocks and has a total of 30 x 4096 blocks. It is used to cache files except .fdt files. The large cache uses 2 MB blocks and contains 5 x 1000 blocks. It is used to cache .fdx, .dvd, and .tip files.

-
low_cost.obs.blockcache.names: ["default", "large"]
-low_cost.obs.blockcache.default.type: file
-low_cost.obs.blockcache.default.blockshift: 16
-low_cost.obs.blockcache.default.number.blocks.perbank: 4096
-low_cost.obs.blockcache.default.bank.count: 30
-low_cost.obs.blockcache.default.exclude.file.types: ["fdt"]
-
-low_cost.obs.blockcache.large.type: file
-low_cost.obs.blockcache.large.blockshift: 21
-low_cost.obs.blockcache.large.number.blocks.perbank: 1000
-low_cost.obs.blockcache.large.bank.count: 5
-low_cost.obs.blockcache.large.file.types: ["fdx", "dvd", "tip"]
-

- -
- - - - - - - - - - - - - - - - - - - - - -
Table 2 Other parameters

Parameter

-

Type

-

Description

-

index.frozen.obs.max_bytes_per_sec

-

String

-

Maximum rate of uploading files to OBS during freezing. It takes effect immediately after you complete configuration.

-

Default value: 150MB

-

low_cost.obs.index.upload.threshold.use.multipart

-

String

-

If the file size exceeds the value of this parameter during freezing, the multipart upload function of OBS is used.

-

Default value: 1GB

-

index.frozen.reader.cache.expire.duration.seconds

-

Integer

-

Timeout duration.

-

To reduce the heap memory occupied by frozen indexes, the reader caches data for a period of time after the index shard is started, and stops caching after it times out.

-

Default value: 300s

-

index.frozen.reader.cache.max.size

-

Integer

-

Maximum cache size.

-

Default value: 100

-
-
-

-
-
- -
- diff --git a/docs/css/umn/css_01_0117.html b/docs/css/umn/css_01_0117.html deleted file mode 100644 index e04e6d61..00000000 --- a/docs/css/umn/css_01_0117.html +++ /dev/null @@ -1,29 +0,0 @@ - - -

Vector Retrieval

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0118.html b/docs/css/umn/css_01_0118.html deleted file mode 100644 index 44f81cfc..00000000 --- a/docs/css/umn/css_01_0118.html +++ /dev/null @@ -1,22 +0,0 @@ - - -

Description

-

Image recognition and retrieval, video search, and personalized recommendation impose high requirements on the latency and accuracy of high-dimensional space vector retrieval. To facilitate large-scale vector search, CSS integrates the vector search feature powered by vector search engine and the Elasticsearch plug-in mechanism.

-

Principles

Vector search works in a way similar to traditional search. To improve vector search performance, we need to:

-
  • Narrow down the matched scope

    Similar to traditional text search, vector search use indexes to accelerate the search instead of going through all data. Traditional text search uses inverted indexes to filter out irrelevant documents, whereas vector search creates indexes for vectors to bypass irrelevant vectors, narrowing down the search scope.

    -
  • Reduce the complexity of calculating a single vector

    The vector search method can quantize and approximate high dimensional vectors first. By doing this, you can acquire a smaller and more relevant data set. Then more sophisticated algorithms are applied to this smaller data set to perform computation and sorting. This way, complex computation is performed on only part of the vectors, and efficiency is improved.

    -
-

Vector search means to retrieve the k-nearest neighbors (KNN) to the query vector in a given vector data set by using a specific measurement method. Generally, CSS only focuses on Approximate Nearest Neighbor (ANN), because a KNN search requires excessive computational resources.

-
-

Functions

The engine integrates a variety of vector indexes, such as brute-force search, Hierarchical Navigable Small World (HNSW) graphs, product quantization, and IVF-HNSW. It also supports multiple similarity calculation methods, such as Euclidean, inner product, cosine, and Hamming. The recall rate and retrieval performance of the engine are better than those of open-source engines. It can meet the requirements for high performance, high precision, low costs, and multi-modal computation.

-

The search engine also supports all the capabilities of the native Elasticsearch, including distribution, multi-replica, error recovery, snapshot, and permission control. The engine is compatible with the native Elasticsearch ecosystem, including the cluster monitoring tool Cerebro, the visualization tool Kibana, and the real-time data ingestion tool Logstash. Several client languages, such as Python, Java, Go, and C++, are supported.

-
-

Constraints

  • Only clusters of version 7.6.2 and 7.10.2 support vector search.
  • The vector search plug-in performs in-memory computing and requires more memory than common indexes do. You are advised to use memory-optimized computing specifications.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0121.html b/docs/css/umn/css_01_0121.html deleted file mode 100644 index 82184a28..00000000 --- a/docs/css/umn/css_01_0121.html +++ /dev/null @@ -1,230 +0,0 @@ - - -

Creating a Vector Index

-

Prerequisites

-
-

Creating a Vector Index

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Click Dev Tools in the navigation tree on the left and run the following command to create a vector index.

    Create an index named my_index that contains a vector field my_vector and a text field my_label. The vector field creates the graph index and uses Euclidean distance to measure similarity.

    -
    PUT my_index 
    -{
    -  "settings": {
    -    "index": {
    -      "vector": true
    -    }
    -  },
    -  "mappings": {
    -    "properties": {
    -      "my_vector": {
    -        "type": "vector",
    -        "dimension": 2,
    -        "indexing": true,
    -        "algorithm": "GRAPH",
    -        "metric": "euclidean"
    -      },
    -      "my_label": {
    -        "type": "text"
    -      }
    -    }
    -  }
    -}
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Parameters for creating an index

    Type

    -

    Parameter

    -

    Description

    -

    Index settings parameters

    -

    vector

    -

    To use a vector index, set this parameter to true.

    -

    Field mappings parameters

    -

    -

    type

    -

    Field type, for example, vector.

    -

    dimension

    -

    Vector dimension.

    -

    The default value is 768 and cannot be changed.

    -

    Value range: [1, 4096]

    -

    indexing

    -

    Whether to enable vector index acceleration.

    -
    The value can be:
    • false: disables vector index acceleration. If this parameter is set to false, vector data is written only to docvalues, and only ScriptScore and Rescore can be used for vector query.
    • true: enables vector index acceleration. If this parameter is set to true, an extra vector index is created. The index algorithm is specified by the algorithm field and VectorQuery can be used for data query.
    -
    -

    Default value: false

    -

    algorithm

    -

    Index algorithm. This parameter is valid only when indexing is set to true.

    -
    The value can be:
    • FLAT: brute-force algorithm that calculates the distance between the target vector and all vectors in sequence. The algorithm relies on sheer computing power and its recall rate reaches 100%. You can use this algorithm if you require high recall accuracy.
    • GRAPH: Hierarchical Navigable Small Worlds (HNSW) algorithm for graph indexes. This algorithm is mainly used in scenarios where high performance and precision are required and the data records of a single shard is fewer than 10 million.
    • GRAPH_PQ: combination of the HNSW algorithm and the PQ algorithm. The PQ algorithm reduces the storage overhead of original vectors, so that HNSW can easily search for data among hundreds of millions of records.
    • IVF_GRAPH: combination of IVF and HNSW. The entire space is divided into multiple cluster centroids, which makes search much faster but slightly inaccurate. You can use this algorithm if you require high performance when searching for data among hundreds of millions of records.
    • IVF_GRAPH_PQ: combination of the PQ algorithm with the IVF or HNSW algorithm to further improve the system capacity and reduce the system overhead. This algorithm is applicable to scenarios where there are more than 1 billion files in shards and high retrieval performance is required.
    -
    -
    Default value: GRAPH
    NOTE:

    If IVF_GRAPH or IVF_GRAPH_PQ is specified, you need to pre-build and register a central point index. For details, see (Optional) Pre-Building and Registering a Center Point Vector.

    -
    -
    -

    Table 2

    -

    If Indexing is set to true, CSS provides optional parameters for vector search to achieve higher query performance or precision.

    -

    metric

    -

    Method of calculating the distance between vectors.

    -

    The value can be:

    -
    • euclidean: Euclidean distance
    • inner_product: inner product distance
    • cosine: cosine distance
    • hamming: Hamming distance, which can be used only when dim_type is set to binary.
    -

    Default value: euclidean

    -

    dim_type

    -

    Type of the vector dimension value.

    -

    The value can be binary and float (default).

    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 2 Optional parameters

    Type

    -

    Parameter

    -

    Description

    -

    Graph index configuration parameters

    -

    neighbors

    -

    Number of neighbors of each vector in a graph index. The default value is 64. A larger value indicates higher query precision. A larger index results in a slower build and query speed.

    -

    Value range: [10, 255]

    -

    shrink

    -

    Cropping coefficient during HNSW build. The default value is 1.0f.

    -

    Value range: (0.1, 10)

    -

    scaling

    -

    Scaling ratio of the upper-layer graph nodes during HNSW build. The default value is 50.

    -

    Value range: (0, 128]

    -

    efc

    -

    Queue size of the neighboring node during HNSW build. The default value is 200. A larger value indicates a higher precision and slower build speed.

    -

    Value range: (0, 100000]

    -

    max_scan_num

    -

    Maximum number of nodes that can be scanned. The default value is 10000. A larger value indicates a higher precision and slower indexing speed.

    -

    Value range: (0, 1000000]

    -

    PQ index configuration parameters

    -

    centroid_num

    -

    Number of cluster centroids of each fragment. The default value is 255.

    -

    Value range: (0, 65535]

    -

    fragment_num

    -

    Number of fragments. The default value is 0. The plug-in automatically sets the number of fragments based on the vector length.

    -

    Value range: [0, 4096]

    -
    -
    -
-
-

Importing Vector Data

Run the following command to import vector data. When writing vector data to the my_index index, you need to specify the vector field name and vector data.

-
  • If the input vector data is an array of floating-point numbers separated by commas (,):
    POST my_index/_doc
    -{
    -  "my_vector": [1.0, 2.0]
    -}
    -
-
  • If the input vector data is a Base64 string encoded using little endian:
    When writing binary vectors or high dimensional vectors that have a large number of valid bits, the Base64 encoding format is efficient for data transmission and parsing.
    POST my_index/_doc
    -{
    -  "my_vector": "AACAPwAAAEA="
    -}
    -
    -
  • To write a large amount of data, bulk operations are recommended.
    POST my_index/_bulk
    -{"index": {}}
    -{"my_vector": [1.0, 2.0], "my_label": "red"}
    -{"index": {}}
    -{"my_vector": [2.0, 2.0], "my_label": "green"}
    -{"index": {}}
    -{"my_vector": [2.0, 3.0], "my_label": "red"}
    -
-
-

Advanced Cluster Configurations

  • When importing data offline, you are advised to set refresh_interval of indexes to -1 to disable automatic index refreshing and improve batch write performance.
  • You are advised to set number_of_replicas to 0. After the offline data import is complete, you can modify the parameter value as needed.
  • The parameters of other advanced functions as follows: -
    - - - - - - - - - - - - - - - - - - - -
    Table 3 Cluster parameters

    Parameter

    -

    Description

    -

    native.cache.circuit_breaker.enabled

    -

    Whether to enable the circuit breaker for off-heap memory.

    -

    Default value: true

    -

    native.cache.circuit_breaker.cpu.limit

    -

    Upper limit of off-heap memory usage of the vector index.

    -

    For example, if the overall memory of a host is 128 GB and the heap memory occupies 31 GB, the default upper limit of the off-heap memory usage is 43.65 GB, that is, (128 - 31) x 45%. If the off-heap memory usage exceeds its upper limit, the circuit breaker will be triggered.

    -

    Default value: 45%

    -

    native.cache.expire.enabled

    -

    Whether to enable the cache expiration policy. If this parameter is set to true, some cache items that have not been accessed for a long time will be cleared.

    -

    Value: true or false

    -

    Default value: false

    -

    native.cache.expire.time

    -

    Expiration time.

    -

    Default value: 24h

    -

    native.vector.index_threads

    -

    Number of threads used for creating underlying indexes. Each shard uses multiple threads. Set a relatively small value to avoid resource preemption caused by the build queries of too many threads.

    -

    Default value: 4

    -
    -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0122.html b/docs/css/umn/css_01_0122.html deleted file mode 100644 index e189316b..00000000 --- a/docs/css/umn/css_01_0122.html +++ /dev/null @@ -1,74 +0,0 @@ - - -

Cluster Planning for Vector Retrieval

-

Off-heap memory is used for index construction and query in vector retrieval. Therefore, the required cluster capacity is related to the index type and off-heap memory size. You can estimate the off-heap memory required by full indexing to select proper cluster specifications.

-
There are different methods for estimating the size of off-heap memory required by different types of indexes. The calculation formulas are as follows:
  • Graph Index

    -

    If you need to update indexes in real time, consider the off-heap memory overhead required for vector index construction and automatic merge. The actual size of required mem_needs is at least 1.5 to 2 times of the original estimation.

    -
    -
  • PQ Index

    -
  • FALT and IVF Indexes

    -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Parameter description

Parameter

-

Description

-

dim

-

Vector dimensions

-

neighbors

-

Number of neighbors of a graph node. The default value is 64.

-

dim_size

-

Number of bytes required by each dimension. The default value is four bytes in the float type.

-

num

-

Total number of vectors

-

delta

-

Metadata size. This parameter can be left blank.

-

frag_num

-

Number of vector segments during quantization and coding. If this parameter is not specified when an index is created, the value is determined by the vector dimension dim.

-
if dim <= 256: 
-  frag_num = dim / 4
-elif dim <= 512: 
-  frag_num = dim / 8
-else :
-  frag_num = 64
-

frag_size

-

Size of the center point during quantization and coding. The default value is 1. If the value of frag_num is greater than 256, the value of frag_size is 2.

-
-
-
-

These calculation methods can estimate the size of off-heap memory required by a complete vector index. To determine cluster specifications, you also need to consider the heap memory overhead of each node.

-

Heap memory allocation policy: The size of the heap memory of each node is half of the node physical memory, and the maximum size is 31 GB.

-

For example, if you create a Graph index for the SIFT10M dataset, set dim to 128, dim_size to 4, neighbors to default value 64, and num to 10 million, the off-heap memory required by the Graph index is as follows:

-

-

Considering the overhead of heap memory, a single server with 8 vCPUs and 16 GB memory is recommended. If real-time write or update is required, you need to apply for larger memory.

-
-
- -
- diff --git a/docs/css/umn/css_01_0123.html b/docs/css/umn/css_01_0123.html deleted file mode 100644 index e3ee41fd..00000000 --- a/docs/css/umn/css_01_0123.html +++ /dev/null @@ -1,297 +0,0 @@ - - -

Querying Vectors

-

Standard Query

Standard vector query syntax is provided for vector fields with vector indexes. The following command will return n (specified by size/topk) data records that are most close to the query vector.

-
POST my_index/_search
-{
-  "size":2,
-  "_source": false, 
-  "query": {
-    "vector": {
-      "my_vector": {
-        "vector": [1, 1],
-        "topk":2
-      }
-    }
-  }
-}
- -
- - - - - - - - - - - - - - - - - - - -
Table 1 Parameters for standard query

Parameter

-

Description

-

vector (the first one)

-

Indicates that the query type is VectorQuery.

-

my_vector

-

Indicates the name of the vector field you want to query.

-

vector (the second one)

-

Indicates the vector value you want to query, which can be an array or a Base64 string

-

topk

-

Same as the value of size generally.

-

Table 2

-

Indicates optional query parameters. You can adjust the vector index parameters to achieve higher query performance or precision.

-
-
- -
- - - - - - - - - - - - - - - - -
Table 2 Optional query parameters

Type

-

Parameter

-

Description

-

Graph index configuration parameters

-

ef

-

Queue size of the neighboring node during the query. A larger value indicates a higher query precision and slower query speed. The default value is 200.

-

Value range: (0, 100000]

-

max_scan_num

-

Maximum number of scanned nodes. A larger value indicates a higher query precision and slower query speed. The default value is 10000.

-

Value range: (0, 1000000]

-

IVF index configuration parameters

-

nprobe

-

Number of center points. A larger value indicates a higher query precision and slower query speed. The default value is 100.

-

Value range: (0, 100000]

-
-
-
-

Compound Query

Vector search can be used together with other Elasticsearch subqueries, such as Boolean query and post-filtering, for compound query.

-

In the following two examples, top 10 (topk) results closest to the query vector are queried first. filter retains only the results whose my_label field is red.

-
  • Example of a Boolean query
    POST my_index/_search
    -{
    -  "size": 10,
    -  "query": {
    -    "bool": {
    -      "must": {
    -        "vector": {
    -          "my_vector": {
    -            "vector": [1, 2],
    -            "topk": 10
    -          }
    -        }
    -      },
    -      "filter": {
    -        "term": { "my_label": "red" }
    -      }
    -    }
    -  }
    -}
    -
  • Example of post-filtering
    GET my_index/_search
    -{
    -  "size": 10,
    -  "query": {
    -    "vector": {
    -      "my_vector": {
    -        "vector": [1, 2],
    -        "topk": 10
    -      }
    -    }
    -  },
    -  "post_filter": {
    -    "term": { "my_label": "red" }
    -  }
    -}
    -
-
-

ScriptScore Query

You can use script_score to perform Nearest Neighbor Search (NSS) on vectors. The query syntax is provided below.

-

The pre-filtering condition can be any query. script_score traverses only the pre-filtered results, calculates the vector similarity, and sorts and returns the results. The performance of this query depends on the size of the intermediate result set after the pre-filtering. If the pre-filtering condition is set to match_all, brute-force search is performed on all data.

-
POST my_index/_search 
- { 
-   "size":2, 
-   "query": { 
-   "script_score": { 
-       "query": { 
-         "match_all": {} 
-       }, 
-       "script": { 
-         "source": "vector_score", 
-         "lang": "vector", 
-         "params": { 
-           "field": "my_vector", 
-           "vector": [1.0, 2.0], 
-           "metric": "euclidean" 
-         } 
-       } 
-     } 
-   } 
- }
- -
- - - - - - - - - - - - - - - - - - - -
Table 3 script_score parameters

Parameter

-

Description

-

source

-

Script description. Its value is vector_score if the vector similarity is used for scoring.

-

lang

-

Script syntax description. Its value is vector.

-

field

-

Vector field name

-

vector

-

Vector data to be queried

-

metric

-

Measurement method, which can be euclidean, inner_product, cosine, and hamming.

-

Default value: euclidean

-
-
-
-

Re-Score Query

If the GRAPH_PQ or IVF_GRAPH_PQ index is used, the query results are sorted based on the asymmetric distance calculated by PQ. CSS supports re-scoring and ranking of query results to improve the recall rate.

-

Assuming that my_index is a PQ index, an example of re-scoring the query results is as follows:

-
GET my_index/_search 
- { 
-   "size": 10, 
-   "query": { 
-     "vector": { 
-       "my_vector": { 
-         "vector": [1.0, 2.0], 
-         "topk": 100 
-       } 
-     } 
-   }, 
-   "rescore": { 
-     "window_size": 100, 
-     "vector_rescore": { 
-       "field": "my_vector", 
-       "vector": [1.0, 2.0], 
-       "metric": "euclidean" 
-     } 
-   } 
- }
- -
- - - - - - - - - - - - - - - - -
Table 4 Rescore parameter description

Parameter

-

Description

-

window_size

-

Vector retrieval returns topk search results and ranks the first window_size results.

-

field

-

Vector field name

-

vector

-

Vector data to be queried

-

metric

-

Measurement method, which can be euclidean, inner_product, cosine, and hamming.

-

Default value: euclidean

-
-
-
-

Painless Syntax Extension

CSS extension supports multiple vector distance calculation functions, which can be directly used in customized painless scripts to build flexible re-score formulas.

-

The following is an example:

-
POST my_index/_search
-{
-  "size": 10,
-  "query": {
-    "script_score": {
-      "query": {
-        "match_all": {}
-      },
-      "script": {
-        "source": "1 / (1 + euclidean(params.vector, doc[params.field]))",
-        "params": {
-          "field": "my_vector",
-          "vector": [1, 2]
-        }
-      }
-    }
-  }
-}
-

The following table lists the distance calculation functions supported by the CSS.

- -
- - - - - - - - - - - - - - - - -

Function Signature

-

Description

-

euclidean(Float[], DocValues)

-

Euclidean distance function

-

cosine(Float[], DocValues)

-

Cosine similarity function

-

innerproduct(Float[], DocValues)

-

Inner product function

-

hamming(String, DocValues)

-

Hamming distance function Only vectors whose dim_type is binary are supported. The input query vector must be a Base64-encoded character string.

-
-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0124.html b/docs/css/umn/css_01_0124.html deleted file mode 100644 index 7a76a822..00000000 --- a/docs/css/umn/css_01_0124.html +++ /dev/null @@ -1,86 +0,0 @@ - - -

(Optional) Pre-Building and Registering a Center Point Vector

-

When you perform operations in Creating a Vector Index, if IVF_GRAPH and IVF_GRAPH_PQ index algorithms are selected, you need to pre-build and register the center point vector.

-

Context

The vector index acceleration algorithms IVF_GRAPH and IVF_GRAPH_PQ are suitable for ultra-large-scale computing. These two algorithms allow you to narrow down the query range by dividing a vector space into subspaces through clustering or random sampling. Before pre-build, you need to obtain all center point vectors by clustering or random sampling.

-

Then, pre-construct and register the center point vectors to create the GRAPH or GRAPH_PQ index and register them with the Elasticsearch cluster. All nodes in the cluster can share the index file. Reuse of the center index among shards can effectively reduce the training overhead and the number of center index queries, improving the write and query performance.

-
-

Procedure

  1. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. Click Dev Tools in the navigation tree on the left.
  3. Create a center point index table.
    • For example, if the created index is named my_dict, number_of_shards of the index must be set to 1. Otherwise, the index cannot be registered.
    • If you want to use the IVF_GRAPH index, set algorithm of the center point index to GRAPH.
    • If you want to use the IVF_GRAPH_PQ index, set algorithm of the center point index to GRAPH_PQ.
    -
    PUT my_dict 
    - { 
    -   "settings": { 
    -     "index": { 
    -       "vector": true 
    -     }, 
    -     "number_of_shards": 1, 
    -     "number_of_replicas": 0 
    -   }, 
    -   "mappings": { 
    -     "properties": { 
    -       "my_vector": { 
    -         "type": "vector", 
    -         "dimension": 2, 
    -         "indexing": true, 
    -         "algorithm": "GRAPH", 
    -         "metric": "euclidean" 
    -       } 
    -     } 
    -   } 
    - }
    -
  4. Write the center point vector to the created index.

    Write the center point vector obtained through sampling or clustering into the created my_dict index by referring to Importing Vector Data.

    -
  5. Call the registration API.

    Register the created my_dict index with a Dict object with a globally unique identifier name (dict_name).

    -
    PUT _vector/register/my_dict 
    - { 
    -   "dict_name": "my_dict" 
    - }
    -
  6. Create an IVF_GRAPH or IVF_GRAPH_PQ index.

    You do not need to specify the dimension and metric information. Simply specify the registered dictionary name.

    -
    PUT my_index 
    - { 
    -   "settings": { 
    -     "index": { 
    -       "vector": true 
    -     } 
    -   }, 
    -   "mappings": { 
    -     "properties": { 
    -       "my_vector": { 
    -         "type": "vector", 
    -         "indexing": true, 
    -         "algorithm": "IVF_GRAPH", 
    -         "dict_name": "my_dict", 
    -         "offload_ivf": false 
    -       } 
    -     } 
    -   } 
    - }
    - -
    - - - - - - - - - - -
    Table 1 Field mappings parameters

    Parameter

    -

    Description

    -

    dict_name

    -

    Specifies the name of the depended central point index. The vector dimension and measurement metric of the index are the same as those of the Dict index.

    -

    offload_ivf

    -

    Unloads the IVF inverted index implemented by the underlying index to Elasticsearch. In this way, the use of non-heap memory and the overhead of write and merge operations are reduced. However, the query performance also deteriorates. You can use the default value.

    -

    Value: true or false

    -

    Default value: false

    -
    -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0125.html b/docs/css/umn/css_01_0125.html deleted file mode 100644 index d2863e5e..00000000 --- a/docs/css/umn/css_01_0125.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

Kibana Usage Restrictions

-

You can customize the username, role name, and tenant name in Kibana.

-
-
- -
- diff --git a/docs/css/umn/css_01_0126.html b/docs/css/umn/css_01_0126.html deleted file mode 100644 index c8053766..00000000 --- a/docs/css/umn/css_01_0126.html +++ /dev/null @@ -1,51 +0,0 @@ - - -

Optimizing the Performance of Vector Retrieval

-

Optimizing Write Performance

  • To reduce the cost of backup, disable the backup function before data import and enable it afterwards.
  • Set refresh_interval to 120s or a larger value. Larger segments can reduce the vector index build overhead caused by merging.
  • Increase the value of native.vector.index_threads (the default value is 4) to increase the number of threads for vector index build.
    PUT _cluster/settings
    -{
    -  "persistent": {
    -    "native.vector.index_threads": 8
    -  }
    -}
    -
-
-

Optimizing Query Performance

  • After importing data in batches, you can run the forcemerge command to improve the query efficiency.
    POST index_name/_forcemerge?max_num_segments=1
    -
-
  • If the off-heap memory required by the vector index exceeds the circuit breaker limit, index entry swap-in and swap-out occur, which affects the query performance. In this case, you can increase the circuit breaker threshold of off-heap memory.
    PUT _cluster/settings
    -{
    -  "persistent": {
    -    "native.cache.circuit_breaker.cpu.limit": "75%"
    -  }
    -}
    -
  • If the end-to-end latency is greater than the took value in the returned result, you can configure _source to reduce the fdt file size and reduce the fetch overhead.
    PUT my_index
    -{
    -  "settings": {
    -    "index": {
    -      "vector": "true"
    -    },
    -    "index.soft_deletes.enabled": false
    -  },
    -  "mappings": {
    -    "_source": {
    -      "excludes": ["my_vector"]
    -    },
    -    "properties": {
    -      "my_vector": {
    -        "type": "vector",
    -        "dimension": 128,
    -        "indexing": true,
    -        "algorithm": "GRAPH",
    -        "metric": "euclidean"
    -      }
    -    }
    -  }
    -}
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0130.html b/docs/css/umn/css_01_0130.html deleted file mode 100644 index 3751894b..00000000 --- a/docs/css/umn/css_01_0130.html +++ /dev/null @@ -1,19 +0,0 @@ - - -

Managing the Vector Index Cache

-

The vector retrieval engine is developed in C++ and uses off-heap memory. You can use the following APIs to manage the index cache.

-
  • View cache statistics.
    GET /_vector/stats
    -

    In the implementation of the vector plug-in, the vector index is the same as other types of Lucene indexes. Each segment constructs and stores an index file. During query, the index file is loaded to the non-heap memory. The plug-in uses the cache mechanism to manage the non-heap memory. You can use this API to query the non-heap memory usage, number of cache hits, and number of loading times.

    -
  • Preload the vector index.
    PUT /_vector/warmup/{index_name}
    -

    You can use this API to preload the vector index specified by index_name to the off-heap memory for query.

    -
  • Clear the cache.
    PUT /_vector/clear/cache 
    -
    PUT /_vector/clear/cache/index_name
    -

    The caching mechanism limits the non-heap memory usage when vector indexes are used. When the total index size exceeds the cache size limit, index entry swap-in and swap-out occur, which affects the query performance. You can use this API to clear unnecessary index cache to ensure the query performance of hot data indexes.

    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0131.html b/docs/css/umn/css_01_0131.html deleted file mode 100644 index 3463e806..00000000 --- a/docs/css/umn/css_01_0131.html +++ /dev/null @@ -1,18 +0,0 @@ - - -

Large Query Isolation

-

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0132.html b/docs/css/umn/css_01_0132.html deleted file mode 100644 index 7524edae..00000000 --- a/docs/css/umn/css_01_0132.html +++ /dev/null @@ -1,14 +0,0 @@ - - -

Context

-

The large query isolation feature allows you to separately manage large queries. You can isolate query requests that consume a large amount of memory or take a long period of time. If the heap memory usage of a node is too high, the interrupt control program will be triggered. The program will interrupt a large query based on the policies you configured and cancel the running query tasks of the query.

-

You can also configure a global query timeout duration. Long queries will be intercepted.

-

Currently, only versions 7.6.2 and 7.10.2 support large query isolation.

-
-
-
- -
- diff --git a/docs/css/umn/css_01_0133.html b/docs/css/umn/css_01_0133.html deleted file mode 100644 index 75f308a3..00000000 --- a/docs/css/umn/css_01_0133.html +++ /dev/null @@ -1,219 +0,0 @@ - - -

Procedure

-

The large query isolation and global timeout features are disabled by default. If you enable them, the configuration will take effect immediately. Perform the following steps to configure the features:

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  3. In the navigation pane of Kibana on the left, choose Dev Tools. Run the following command to enable large query isolation and global timeout features:
    PUT _cluster/settings
    -{
    -  "persistent": {
    -    "search.isolator.enabled": true,
    -    "search.isolator.time.enabled": true
    -  }
    -}
    -

    The two features each has an independent switch and the following parameters.

    - -
    - - - - - - - - - - - - - - - - - - - -
    Table 1 Parameters for large query isolation and global timeout duration

    Switch

    -

    Parameter

    -

    Description

    -

    search.isolator.enabled

    -

    search.isolator.memory.task.limit

    -

    search.isolator.time.management

    -

    Thresholds of a shard query task. A query task exceeding one of these thresholds is regarded as a large query task.

    -

    search.isolator.memory.pool.limit

    -

    search.isolator.memory.heap.limit

    -

    search.isolator.count.limit

    -

    Resource usage thresholds in the isolation pool. If the resource usage of a query task exceeds one of these thresholds, the task will be intercepted.

    -
    NOTE:

    search.isolator.memory.heap.limit defines the limit on the heap memory consumed by write, query, and other operations of a node. If the limit is exceeded, large query tasks in the isolation pool will be interrupted.

    -
    -

    search.isolator.strategy

    -

    search.isolator.strategy.ratio

    -

    Policy for selecting a query task in the isolation pool.

    -

    search.isolator.time.enabled

    -

    search.isolator.time.limit

    -

    Global timeout interval of query tasks.

    -
    -
    -
  4. Configure the large query isolation and global timeout duration separately.
    • Configure the thresholds of a shard query task. A query task exceeding one of these thresholds is regarded as a large query task.
      PUT _cluster/settings
      -{
      -  "persistent": {
      -    "search.isolator.memory.task.limit": "50MB",
      -    "search.isolator.time.management": "10s"
      -  }
      -}
      - -
      - - - - - - - - - - - - - -
      Table 2 Parameter description

      Parameter

      -

      Data Type

      -

      Description

      -

      search.isolator.memory.task.limit

      -

      String

      -

      Threshold of the memory requested by a query task to perform aggregation or other operations. If the requested memory exceeds the threshold, the task will be isolated and observed.

      -

      Value range: 0b to the maximum heap memory of a node

      -

      Default value: 50MB

      -
      NOTE:

      You can run the following command to query the current heap memory and the maximum heap memory of a cluster:

      -

      GET _cat/nodes?&h=id,ip,port,r,ramPercent,ramCurrent,heapMax,heapCurrent

      -
      -

      search.isolator.time.management

      -

      String

      -

      Threshold of the duration of a query. (started when cluster resources are used for query). If the duration of a query exceeds the threshold, it will be isolated and observed.

      -

      Value range: ≥ 0ms

      -

      Default value: 10s

      -
      -
      -
    • Configure the resource usage thresholds in the isolation pool. If the resource usage of a query task exceeds one of these thresholds, the task will be intercepted.
      PUT _cluster/settings
      -{
      -  "persistent": {
      -    "search.isolator.memory.pool.limit": "50%",
      -    "search.isolator.memory.heap.limit": "90%",
      -    "search.isolator.count.limit": 1000
      -  }
      -}
      - -
      - - - - - - - - - - - - - - - - - -
      Table 3 Parameter description

      Parameter

      -

      Data Type

      -

      Description

      -

      search.isolator.memory.pool.limit

      -

      String

      -

      Threshold of the heap memory percentage of the current node. If the total memory requested by large query tasks in the isolation pool exceeds the threshold, the interrupt control program will be triggered to cancel one of the tasks.

      -

      Value range: 0.0 to 100.0%

      -

      Default value: 50%

      -

      search.isolator.memory.heap.limit

      -

      String

      -

      Heap memory threshold of the current node. If the heap memory of the node exceeds the threshold, the interrupt control program will be triggered to cancel a large query task in the isolation pool.

      -

      Value range: 0.0 to 100.0%

      -

      Default value: 90%

      -

      search.isolator.count.limit

      -

      Integer

      -

      Threshold of the number of large query tasks in the current node isolation pool. If the number of observed query tasks exceeds the threshold, the interrupt control program will be triggered to stop accepting new large queries. New large query requests will be directly canceled.

      -

      Value range: 10–50000

      -

      Default value: 1000

      -
      -
      -

      In addition to search.isolator.memory.pool.limit and search.isolator.count.limit parameters, you can configure search.isolator.memory.task.limit and search.isolator.time.management to control the number of query tasks that enter the isolation pool.

      -
      -
    • Policy for selecting a query task in the isolation pool.
      PUT _cluster/settings
      -{
      -  "persistent": {
      -    "search.isolator.strategy": "fair",
      -    "search.isolator.strategy.ratio": "0.5%"
      -  }
      -}
      - -
      - - - - - - - - - - - - - -

      Parameter

      -

      Data Type

      -

      Description

      -

      search.isolator.strategy

      -

      String

      -

      Policy for selecting large queries when the interrupt control program is triggered. The selected query will be interrupted.

      -
      NOTE:

      The large query isolation pool is checked every second until the heap memory is within the safe range.

      -
      -
      Values: fair, mem-first, or time-first
      • mem-first: The query task that uses the most heap memory in the isolation pool is interrupted.
      • time-first: The query task that has been running for the longest time in the isolation pool is interrupted.
      • fair: If the difference between the heap memory of shard queries is smaller than Maximum_heap_memory x search.isolator.strategy.ratio, the query that takes the longest time should be interrupted. Otherwise, the query that uses the most heap memory is interrupted.
      -
      -

      Default value: fair

      -

      search.isolator.strategy.ratio

      -

      String

      -

      Threshold of the fair policy. This parameter takes effect only if search.isolator.strategy is set to fair. If the difference between the memory usage of large query tasks does not exceed the threshold, the query that takes the longest time should be interrupted. If the difference between the memory usage of large query tasks exceeds the threshold, the query that uses the most memory is interrupted.

      -

      Value range: 0.0 to 100.0%

      -

      Default value: 1%

      -
      -
      -
    • Configure the global timeout duration of query tasks.
      PUT _cluster/settings
      -{
      -  "persistent": {
      -    "search.isolator.time.limit": "120s"
      -  }
      -}
      - -
      - - - - - - - - - -

      Parameter

      -

      Data Type

      -

      Description

      -

      search.isolator.time.limit

      -

      String

      -

      Global query timeout duration. If this function is enabled, all the query tasks that exceed the specified duration will be canceled.

      -

      Value range: ≥ 0ms

      -

      Default value: 120s

      -
      -
      -
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0134.html b/docs/css/umn/css_01_0134.html deleted file mode 100644 index c33dbe46..00000000 --- a/docs/css/umn/css_01_0134.html +++ /dev/null @@ -1,24 +0,0 @@ - - -

Index Monitoring

-

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0135.html b/docs/css/umn/css_01_0135.html deleted file mode 100644 index 54c5f0a9..00000000 --- a/docs/css/umn/css_01_0135.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Context

-

CSS monitors various metrics of the running status and change trend of cluster indexes to measure service usage and handle potential risks in a timely manner, ensuring that clusters can run stably.

-

During index monitoring, the stats information about indexes is collected and saved to the monitoring index (monitoring-eye-css-[yyyy-mm-dd]) of the cluster, and retained for one week by default.

-

Currently, only clusters of the version 7.6.2 and 7.10.2 support index monitoring.

-
-
- -
- diff --git a/docs/css/umn/css_01_0136.html b/docs/css/umn/css_01_0136.html deleted file mode 100644 index 8b852309..00000000 --- a/docs/css/umn/css_01_0136.html +++ /dev/null @@ -1,76 +0,0 @@ - - -

Enabling Index Monitoring

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Choose Dev Tools in the navigation pane on the left and run the following command to enable index monitoring:
    PUT _cluster/settings
    -{
    -  "persistent": {
    -    "css.monitoring.index.enabled": "true"
    -  }
    -}
    -
  4. (Optional) To monitor a specific index, run the following command on the Dev Tools page of Kibana:
    PUT _cluster/settings
    -{
    -  "persistent": {
    -    "css.monitoring.index.enabled": "true",
    -    "css.monitoring.index.interval": "30s",
    -    "css.monitoring.index.indices": ["index_name"],
    -    "css.monitoring.history.duration": "3d"
    -  }
    -}
    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Parameter description

    Parameter

    -

    Data Type

    -

    Description

    -

    css.monitoring.index.enabled

    -

    Boolean

    -

    Whether to enable index monitoring. If this parameter is set to true, the monitoring will be enabled.

    -

    Default value: false

    -

    css.monitoring.index.interval

    -

    Time

    -

    Interval for collecting index monitoring data.

    -

    Minimum value: 1s

    -

    Default value: 10s

    -

    css.monitoring.index.indices

    -

    String

    -

    Name of an index to be monitored. By default, all indexes are monitored. You can configure specific indexes or a type of indexes to monitor.

    -

    Example:

    -
    • ""css.monitoring.index.indices": ["index_name"]" indicates only index_name is monitored.
    • "css.monitoring.index.indices": ["log_*"] indicates that only indexes starting with log_ are monitored.
    • "css.monitoring.index.indices": ["index1", "index2"] indicates that index1 and index2 are monitored.
    -

    Default value: * (indicating that all indexes are monitored)

    -

    css.monitoring.history.duration

    -

    Time

    -

    Retention period of monitoring data storage. The default period is a week.

    -

    Minimum value: 1d

    -

    Default value: 7d

    -
    -
    -

    Indexes starting with monitoring-eye-css-* are regarded as monitoring indexes and will not be monitored.

    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0137.html b/docs/css/umn/css_01_0137.html deleted file mode 100644 index abeed18b..00000000 --- a/docs/css/umn/css_01_0137.html +++ /dev/null @@ -1,142 +0,0 @@ - - -

Checking the Index Read and Write Traffic

-

You can call an API to query the index read and write traffic within a period of time.

-

Prerequisites

A cluster has been created and index monitoring has been enabled.

-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  3. Choose Dev Tools in the navigation pane on the left and run the following commands to query the index read and write traffic:
    • Check read and write traffic of all the indexes.
      GET  /_cat/monitoring
      -
    • Check read and write traffic of a specific index.
      GET  /_cat/monitoring/{indexName}
      -

      {indexName} indicates the name of the index whose read and write traffic you want to check.

      -
    • Check the read and write traffic of indexes for different periods.
      GET _cat/monitoring?begin=1650099461000
      -GET _cat/monitoring?begin=2022-04-16T08:57:41
      -GET _cat/monitoring?begin=2022-04-16T08:57:41&end=2022-04-17T08:57:41
      - -
      - - - - - - - - - - - - - -
      Table 1 Parameter description

      Parameter

      -

      Mandatory

      -

      Description

      -

      begin

      -

      No

      -

      Start time (UTC time) of the monitoring data you want to view.

      -

      Time format: strict_date_optional_time|epoch_millis

      -

      The default start time is five minutes before the current time.

      -

      end

      -

      No

      -

      End time (UTC time) of the monitoring data you want to view.

      -

      Time format: strict_date_optional_time|epoch_millis

      -

      The default end time is the current time.

      -
      -
      -
    -

    These parameters cannot be used for system indexes, whose names start with a dot (.).

    -
    -

    Information similar to the following is displayed:

    -
    index   begin               end                 status pri rep init unassign docs.count docs.deleted store.size pri.store.size delete.rate indexing.rate search.rate
    -test 2022-03-25T09:46:53.765Z 2022-03-25T09:51:43.767Z yellow  1   1  0    1     9         0      5.9kb        5.9kb         0/s           0/s         0/s
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 2 Parameters in the returned information

    Parameter

    -

    Description

    -

    index

    -

    Index name

    -

    begin

    -

    Start time of the monitoring data you queried.

    -

    end

    -

    End time of the monitoring data you queried.

    -

    status

    -

    Index status within the queried monitoring interval.

    -

    pri

    -

    The number of index shards within the queried monitoring interval.

    -

    rep

    -

    The number of index replicas within the queried monitoring interval.

    -

    init

    -

    The number of initialized indexes within the queried monitoring interval.

    -

    unassign

    -

    The number of unallocated indexes within the queried monitoring interval.

    -

    docs.count

    -

    The number of documents within the queried monitoring interval.

    -

    docs.deleted

    -

    The number of deleted documents within the queried monitoring interval.

    -

    store.size

    -

    Index storage size within the queried monitoring interval.

    -

    pri.store.size

    -

    Size of the primary index shard within the queried monitoring interval.

    -

    delete.rate

    -

    Number of indexes deleted per second within the queried monitoring interval.

    -

    indexing.rate

    -

    Number of indexes wrote per second within the queried monitoring interval.

    -

    search.rate

    -

    Number of indexes queried per second within the queried monitoring interval.

    -
    -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0138.html b/docs/css/umn/css_01_0138.html deleted file mode 100644 index b212b6e4..00000000 --- a/docs/css/umn/css_01_0138.html +++ /dev/null @@ -1,114 +0,0 @@ - - -

Checking Index Monitoring Information

-

You can check preconfigured index monitoring visualizations on the Dashboard and Visualizations pages of Kibana. You can also customize tables and charts.

-

Prerequisites

A cluster has been created and index monitoring has been enabled.

-
-

Checking Dashboard Charts

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  3. In the navigation tree on the left, click Dashboard.
  4. Click [Monitoring] Index Monitoring Dashboard to view the preconfigured dashboard.
    Figure 1 Preconfigured dashboard charts
    -

    The preconfigured dashboard displays the number of read and write operations per second in the cluster and the top 10 indexes with the most read and write operations per second.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Preconfigured charts

    Chart Name

    -

    Description

    -

    [monitoring] markdown

    -

    Markdown chart, which briefly describes the dashboard content.

    -

    [monitoring] Indexing Rate (/s)

    -

    Number of documents written to a cluster per second.

    -

    [monitoring] Search Rate (/s)

    -

    Average number of queries per second in a cluster.

    -

    [monitoring] indexing rate of index for top10

    -

    Top 10 indexes with the most documents written per second.

    -

    [monitoring] search rate of index for top10

    -

    Top 10 indexes with the most queries per second.

    -

    [monitoring] total docs count

    -

    Total number of documents in a cluster.

    -

    [monitoring] total docs delete

    -

    Total number of deleted documents in a cluster.

    -

    [monitoring] total store size in bytes

    -

    Total storage occupied by documents in a cluster.

    -

    [monitoring] indices store_size for top10

    -

    Top 10 indexes that occupy the largest storage space.

    -

    [monitoring] indices docs_count for top10

    -

    Top 10 indexes with the largest number of documents.

    -

    [monitoring] indexing time in millis of index for top10(ms)

    -

    Top 10 indexes with the longest document write latency in a unit time (ms).

    -

    [monitoring] search query time in millis of index for top10(ms)

    -

    Top 10 indexes with the longest index query time in a unit time (ms).

    -

    [monitoring] segment count of index for top10

    -

    Top 10 indexes with the largest number of index segments.

    -

    [monitoring] segment memory in bytes of index for top10

    -

    Top 10 indexes with the largest heap memory usage of index segments.

    -
    -
    -

    The index pattern of monitoring-eye-css-* cannot be deleted during index monitoring. Otherwise, the monitoring chart will be abnormal.

    -
    -
-
-

Customizing Visualizations Charts

The index monitoring module periodically stores the index/stats information in the monitoring-eys-css index. You can use the Kibana chart function to draw customized charts.

-

The following procedure describes how to check the trend of the document quantity in a chart as an example.

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Choose Visualize.
  4. Click Create visualization and select TSVB.
  5. Set chart parameters and view the visualizations.
    On the Data tab page, index_stats.primaries.docs.count indicates the number of documents in the primary shard. Derivative indicates the difference between aggregation buckets. Set Unit to 1s, visualizing network rates as "per second". Select Positive only to prevent negative numbers after resetting. To sort statistics by index, set Group by to Terms and By to index_stats.index. Statistics will be grouped by index name.
    Figure 2 TSVB page
    -
    -

    To view data in different time segments, set the aggregation interval, or the displayed data will be incomplete. On the Panel options tab page, set Interval to 1m or 30m to adjust the interval of timestamp.

    -
    Figure 3 Setting the interval
    -
-
-

Importing Index Monitoring Charts

You can import or export charts on Kibana. If the index monitoring charts are not displayed, you can import the charts to Kibana again to load the monitoring view.

-

The following describes how to import a chart to Kibana:

-
  1. Create the monitoring-kibana.ndjson file by referring to kibana-monitor.
  2. Log in to Kibana and choose Management > Stack Management > Saved objects.
    Figure 4 Selecting saved objects
    -
  3. Click Import and upload the monitoring-kibana.ndjson file created in step 1.
    Figure 5 Uploading a file
    -
  4. After the upload is complete, click Done. The index monitoring chart is successfully imported.
    Figure 6 Successfully importing index monitoring charts
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0139.html b/docs/css/umn/css_01_0139.html deleted file mode 100644 index f6907ffe..00000000 --- a/docs/css/umn/css_01_0139.html +++ /dev/null @@ -1,31 +0,0 @@ - - -

Flow Control 1.0

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0140.html b/docs/css/umn/css_01_0140.html deleted file mode 100644 index fec5adbe..00000000 --- a/docs/css/umn/css_01_0140.html +++ /dev/null @@ -1,18 +0,0 @@ - - -

Context

-

Feature Description

CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a node. You can also configure the maximum heap memory used by specific request paths, the maximum CPU usage, and block access in one click, and collect statistics on node access IP addresses and URIs. Each function has an independent control switch, which is disabled by default. To restore default values of parameters, set them to null.

-

If flow control is enabled, requests will be blocked at the entry, which relieves the cluster pressure in high-concurrency scenario and avoids unavailability issues.

-
  • HTTP/HTTPS flow control:
    • You can control client IP address access by setting IP addresses and subnets in HTTP/HTTPS blacklist or whitelist. If an IP address is in the blacklist, the client is disconnected and all its request are rejected. Whitelist rules take precedence over blacklist rules. If a client IP address exists in both the blacklist and whitelist, the client request will not be rejected.
    • HTTP/HTTPS concurrent connection flow control limits the total number of HTTP connections to a node per second.
    • HTTP/HTTPS new connection flow control limits the number of new connections to a node.
    -
  • Memory flow control limits request paths based on the node heap memory. You can configure memory flow control whitelist, global memory usage threshold, and heap memory threshold for a single path. Global memory flow control threshold takes precedence over the memory threshold of a single path. Paths in the whitelist will not be blocked in memory flow control.
  • You can configure the global path whitelist for flow control as required when you need to use custom plug-ins.
  • Request sampling can record the number of access requests from client IP addresses and the request paths of sampled users. Based on the statistics, you can identify the access traffic of client IP addresses and analyze the access traffic of request paths.
  • Flow control provides an independent API for viewing traffic statistics and records the number of times the API is triggered. You can evaluate the flow control threshold and analyze the cluster load based on the statistics.
  • Access logs record the URLs and bodies of HTTP/HTTPS requests received by nodes within a period of time. You can analyze the current traffic pressure based on the access logs.
  • You can configure the node CPU usage threshold to limit the accessed traffic on a single node.
  • One-click access blocking can block all the access traffic of a node, excluding the traffic from Kibana and Elasticsearch monitor APIs.
-
-

Constraints

  • Currently, only versions 7.6.2 and 7.10.2 support the flow control feature.
  • Flow control may affect the performance of some nodes.
-
  • If flow control is enabled, user requests that exceed the flow control threshold will be rejected.
  • Memory flow control and CPU flow control are based on request paths. The length and number of paths cannot be too large, or the cluster performance will be affected.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0141.html b/docs/css/umn/css_01_0141.html deleted file mode 100644 index cc95eebc..00000000 --- a/docs/css/umn/css_01_0141.html +++ /dev/null @@ -1,99 +0,0 @@ - - -

HTTP/HTTPS Flow Control

-

Context

You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster. The command parameters are as follows.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 HTTP/HTTPS flow control parameters

Parameter

-

Type

-

Description

-

flowcontrol.http.enabled

-

Boolean

-

Whether to enable HTTP/HTTPS flow control. This function is disabled by default. Enabling it may affect node access performance.

-

Value: true or false

-

Default value: false

-

flowcontrol.http.allow

-

List<String>

-

IP address whitelist.

-

It can contain multiple IP addresses and masks, or an IP address list. Use commas (,) to separate multiple values. Example: xx.xx.xx.xx/24,xx.xx.xx.xx/24, or xx.xx.xx.xx.xx,xx.xx.xx.

-

The default value is null.

-

flowcontrol.http.deny

-

List<String>

-

IP address blacklist.

-

Multiple IP addresses and masks or an IP address list can be configured. Use commas (,) to separate multiple IP addresses and masks.

-

The default value is null.

-

flowcontrol.http.concurrent

-

Integer

-

Maximum concurrent HTTP/HTTPS connections.

-

Default value: Number of available cores on a node x 400

-

flowcontrol.http.newconnect

-

Integer

-

Maximum new connections that can be created for HTTP/HTTPS requests per second.

-

Default value: Number of available cores on a node x 200

-

flowcontrol.http.warmup_period

-

Integer

-

Time required for the HTTP/HTTPS connection setup speed to reach the maximum. If flowcontrol.http.newconnect is set to 100 and flowcontrol.http.warmup_period is set to 5000ms, it indicates the system can set up 100 connections per second in 5 seconds.

-

Value range: 0–10000

-

Unit: ms

-

Default value: 0

-
-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable HTTP/HTTPS flow control.
    • Enabling HTTP/HTTPS flow control for a node
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.http.enabled": true,
      -    "flowcontrol.http.allow": ["192.168.0.1/24", "192.168.2.1/24"],
      -    "flowcontrol.http.deny": "192.168.1.1/24",
      -    "flowcontrol.http.concurrent": 1000,
      -    "flowcontrol.http.newconnect": 1000,
      -    "flowcontrol.http.warmup_period": 0
      -  }
      -}
      -

      If all parameters are set to null, they will be restored to default values.

      -
      -
    • Disabling HTTP/HTTPS flow control for a node
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.http.enabled": false
      -  }
      -}
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0142.html b/docs/css/umn/css_01_0142.html deleted file mode 100644 index 8d970bf5..00000000 --- a/docs/css/umn/css_01_0142.html +++ /dev/null @@ -1,122 +0,0 @@ - - -

Memory Flow Control

-

Context

Elasticsearch provides a circuit breaker, which will terminate requests if the memory usage exceeds its threshold. However, Elasticsearch does not check the heap memory usage when an API is called, and does not allow users to configure the threshold for a single request. In this case, memory usage can only be calculated during request processing, which may lead to frequent circuit breaking and cannot avoid heap memory waste. To solve this problem, CSS checks the heap memory usage when receiving REST requests, blocking excess API requests and protecting nodes. You can configure global memory flow control, or configure the request path and heap memory threshold for a specific request path. Before a request is processed, the system checks the configured heap memory threshold. If the threshold is exceeded, the request path will be blocked.

-
  • Memory flow control may affect request processing performance.
  • If the memory flow control is enabled, some Kibana search requests may fail.
  • If memory flow control is enabled in Elasticsearch 5.5.1, _mget requests will be blocked and Kibana access will be abnormal. You can add _mget requests to the request whitelist to avoid this problem.
-
-

The following table describes memory flow control parameters.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Memory flow control parameters

Parameter

-

Type

-

Description

-

flowcontrol.memory.enabled

-

Boolean

-

Whether to enable memory flow control. This function is disabled by default. Enabling memory flow control may slightly affect node performance.

-

Value: true or false

-

Default value: false

-

flowcontrol.memory.allow_path

-

List<String>

-

Request path whitelist for memory flow control.

-

Whitelisted paths are blocked in memory flow control. Wildcard characters are supported. By default, query APIs controlled by the cluster are not blocked in memory flow control. This prevents the failure to query cluster information when the memory usage reaches the threshold.

-

Example:

-
  • "flowcontrol.memory.allow_path": "/index/_search",
  • "flowcontrol.memory.allow_path": "/index*/_search",
  • "flowcontrol.memory.allow_path": ["/index/_search", "/index1/_bulk"],
-

A maximum of 10 paths can be configured. A path can contain up to 32 characters.

-

The default value is null.

-

flowcontrol.memory.heap_limit

-

String

-

Maximum global heap memory usage of a node. The value cannot be less than 10% of the heap memory.

-

Value range: 10%–100%

-

Default value: 90%

-

flowcontrol.memory.*.filter_path

-

String

-

Paths under memory flow control.

-

The default value is **, indicating all paths. If flowcontrol.memory.heap_limit is configured and flowcontrol.memory.*.filter_path is not, it indicates that all the paths, except those in the whitelist, are under control. The whitelist takes precedence over the single-path rule. If a path is specified in both flowcontrol.memory.allow_path and flowcontrol.memory.*.filter_path, the requests from the path will be allowed.

-

For example, if flowcontrol.memory.allow_path and flowcontrol.memory.*.filter_path are both set to abc/_search, then abc/_search will not be under flow control.

-

Maximum length: 32 characters

-

flowcontrol.memory.*.heap_limit

-

String

-

Heap memory usage threshold of request paths. If the heap memory usage exceeds the threshold, flow control will be triggered.

-

Value range: 0–100%

-

Default value: 90%

-
-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable memory flow control.
    • Enabling memory flow control
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.memory.enabled": true,
      -    "flowcontrol.memory.allow_path": "/index/_search",
      -    "flowcontrol.memory.heap_limit": "85%"
      -  }
      -}
      -
    • Enabling memory flow control for a request path

      Configure the heap memory usage threshold for a request path. You can configure the priorities of such threshold rules.

      -
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.memory.enabled": true,
      -    "flowcontrol.memory": {
      -      "flowcontrol_search": {
      -        "filter_path": "index1/_search",
      -        "heap_limit": "50%"
      -      },
      -      "flowcontrol_bulk": {
      -        "filter_path": "index*/_bulk",
      -        "heap_limit": "50%"
      -      }
      -    }
      -  }
      -}
      -
    • Deleting the memory flow control configuration of a request path
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.memory.enabled": true,
      -    "flowcontrol.memory": {
      -      "flowcontrol_search": {
      -        "filter_path": null,
      -        "heap_limit": null
      -      }
      -    }
      -  }
      -}
      -
    • Disabling cluster memory flow control
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.memory.enabled": false
      -  }
      -}
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0143.html b/docs/css/umn/css_01_0143.html deleted file mode 100644 index 62423ca1..00000000 --- a/docs/css/umn/css_01_0143.html +++ /dev/null @@ -1,43 +0,0 @@ - - -

Global Path Whitelist for Flow Control

-

Context

The following table describes the global path whitelist parameters for flow control.

- -
- - - - - - - - - -
Table 1 Global path whitelist parameters for flow control

Parameter

-

Type

-

Description

-

flowcontrol.path.white_list

-

List<String>

-

Paths that are not under flow control. These paths are not affected by memory flow control, CPU flow control, or one-click blocking; but are under IP address-based flow control.

-

A maximum of 10 paths can be configured. A path can contain up to 32 characters.

-

This parameter is left blank by default.

-
NOTE:

You are advised not to configure this parameter, unless required by plug-ins.

-
-
-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation tree on the left, choose Dev Tools. Run the following command to configure the global path whitelist for flow control:
    PUT _cluster/settings
    -{
    -  "persistent": {
    -    "flowcontrol.path.white_list": "xxxx"
    -  }
    -}
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0144.html b/docs/css/umn/css_01_0144.html deleted file mode 100644 index 96add501..00000000 --- a/docs/css/umn/css_01_0144.html +++ /dev/null @@ -1,73 +0,0 @@ - - -

Request Sampling

-

Context

Request sampling can record the access IP addresses, the number of accessed nodes, request paths, request URLs, and request bodies, which can be used to obtain the IP addresses and paths of clients that have sent a large number of access requests.

-

The following table describes request sampling parameters.

- -
- - - - - - - - - - - - - - - - - -
Table 1 Request sampling parameters

Parameter

-

Type

-

Description

-

flowcontrol.statics.enabled

-

Boolean

-

Whether to enable request sampling. Request sampling may affect node performance.

-

Value: true or false

-

Default value: false

-

flowcontrol.statics.threshold

-

Integer

-

Number of recent access requests whose statistics are collected. The value 100 indicates that statistics will be collected on the 100 IP addresses and 100 URLs that are most frequently accessed.

-

Minimum value: 10

-

Maximum value: 1000

-

Default value: 100

-

flowcontrol.statics.sample_frequency

-

Integer

-

Path sampling frequency. If this parameter is set to 100, samples are collected from every 100 requests.

-

Minimum value: 50

-

Default value: 100

-
-
-
  • The IP address statistics and URL sampling statistics are cached based on their access time. If the cache space reaches the threshold (flowcontrol.statics.threshold), the records of the earliest access will be deleted.
  • In URL sampling, an access path is uniquely identified by its URL hash.
-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable sampling.
    • Enabling sampling
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.statics.enabled": true,
      -    "flowcontrol.statics.threshold": 100,
      -    "flowcontrol.statics.sample_frequency": 50
      -  }
      -}
      -
    • Disabling sampling
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.statics.enabled": false
      -  }
      -}
      -

      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0145.html b/docs/css/umn/css_01_0145.html deleted file mode 100644 index ce1a10c3..00000000 --- a/docs/css/umn/css_01_0145.html +++ /dev/null @@ -1,176 +0,0 @@ - - -

Flow Control

-

Flow control can be implemented via an independent API.

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run the commands to query traffic control information.
    • Check the traffic control status of all nodes.
      GET /_nodes/stats/filter
      -
    • View the traffic control status of a specific node.
      GET /_nodes/{nodeId}/stats/filter
      -

      {nodeId} indicates the ID of the node you want to check.

      -
    -

    Example response:

    -
    {
    -  "_nodes" : {
    -    "total" : 1,
    -    "successful" : 1,
    -    "failed" : 0
    -  },
    -  "cluster_name" : "css-flowcontroller",
    -  "nodes" : {
    -    "ElBRNCMbTj6L1C-Wke-Dnw" : {
    -      "name" : "css-flowcontroller-ess-esn-1-1",
    -      "host" : "10.0.0.133",
    -      "timestamp" : 1613979513747,
    -      "flow_control" : {
    -        "transport" : {
    -          "concurrent_req" : 0,
    -          "rejected_concurrent" : 0,
    -          "rejected_new" : 0,
    -          "rejected_deny" : 0
    -        },
    -        "http" : {
    -          "concurrent_req" : 0,
    -          "rejected_concurrent" : 0,
    -          "rejected_new" : 0,
    -          "rejected_deny" : 0
    -        },
    -        "memory" : {
    -          "memory_allow" : 41,
    -          "memory_rejected" : 0
    -        },
    -        "cpu": {
    -          "rejected_cpu" : 0
    -        }
    -        "ip_address" : [
    -          {
    -            "ip" : "/10.0.0.198",
    -            "count" : 453
    -          },
    -          {
    -            "ip" : "/198.19.49.1",
    -            "count" : 42
    -          }
    -        ],
    -        "url_sample" : [
    -          {
    -            "url" : "/*/_search?pretty=true",
    -            "method" : "GET",
    -            "remote_address" : "/10.0.0.198:16763",
    -            "count" : 1
    -          }
    -        ]
    -      }
    -  }
    -}
    -

    In the response, the information of each node is separated. The http field records the numbers of concurrent connections and new connections. The memory records memory flow control statistics. The ip_address field records the recent client IP addresses that are accessed most recently. The url_sample field records the recent URLs that are requested most frequently. The cpu field records CPU flow control statistics.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Response parameters

    Parameter

    -

    Description

    -

    concurrent_req

    -

    Number of TCP connections of a node, which is recorded no matter whether flow control is enabled. This value is similar to the value of current_open of the GET /_nodes/stats/http API but is smaller, because whitelisted IP addresses and internal node IP addresses are not counted.

    -

    rejected_concurrent

    -

    Number of concurrent connections rejected during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

    -

    rejected_new

    -

    Number of new connections rejected during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

    -

    rejected_deny

    -

    Number of requests rejected based on the blacklist during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

    -

    memory_allow

    -

    Number of allowed requests during memory flow control. This parameter takes effect when memory flow control is enabled, and its value is not cleared after memory flow control is disabled. The requests from the paths in the allow_path whitelist are not recorded. If allow_path is set to **, no requests are recorded.

    -

    memory_rejected

    -

    Number of rejected requests during memory flow control. This parameter takes effect when memory flow control is enabled, and its value is not cleared after memory flow control is disabled. The requests from the paths in the allow_path whitelist are not recorded. If allow_path is set to **, no requests are recorded.

    -

    rejected_cpu

    -

    Number of requests rejected when the CPU flow control threshold is exceeded. This parameter takes effect when CPU flow control is enabled, and its value is not cleared after CPU flow control is disabled.

    -

    ip_address

    -

    IP addresses and the number of requests. For details, see Table 2.

    -

    url_sample

    -

    Request path sampling. The number of URLs of a request are collected based on the configured time and sampling interval. For details, see Table 3.

    -
    -
    - -
    - - - - - - - - - - -
    Table 2 ip_address

    Parameter

    -

    Description

    -

    ip

    -

    Source IP address for accessing the node.

    -

    method

    -

    Number of access requests from an IP address.

    -
    -
    - -
    - - - - - - - - - - - - - - - - -
    Table 3 url_sample

    Parameter

    -

    Description

    -

    url

    -

    Request URL

    -

    method

    -

    Method corresponding to the request path

    -

    remote_address

    -

    Source IP address and port number of the request

    -

    count

    -

    How many times a path is sampled

    -
    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0146.html b/docs/css/umn/css_01_0146.html deleted file mode 100644 index 982ab8de..00000000 --- a/docs/css/umn/css_01_0146.html +++ /dev/null @@ -1,170 +0,0 @@ - - -

Access Logs

-

Context

You can check access logs in either of the following ways:

-
  • Enable and check access logs via an independent API. Configure the API parameters to record the access log time and size. The access log content is returned through a REST API.
  • Print access logs. Your access logs are printed as files in backend logs.
-

Enabling the access log function may affect cluster performance.

-

The following table describes access log parameters.

- -
- - - - - - - - - - - - - -
Table 1 Access log parameters

Parameter

-

Type

-

Description

-

duration_limit

-

String

-

Duration recorded in an access log.

-

Value range: 10 to 120

-

Unit: s

-

Default value: 30

-

capacity_limit

-

String

-

Size of an access log. After access logging is enabled, the size of recorded requests is checked. If the size exceeds the value of this parameter, the access logging stops.

-

Value range: 1 to 5

-

Unit: MB

-

Default value: 1

-
-
-

Access logging stops if either duration_limit or capacity_limit reaches the threshold.

-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable access logs.
    • Enabling access logs for all nodes in a cluster
      PUT /_access_log?duration_limit=30s&capacity_limit=1mb
      -
    • Enabling access logs for a node in a cluster
      PUT /_access_log/{nodeId}?duration_limit=30s&capacity_limit=1mb
      -

      {nodeId} indicates the ID of the node where you want to enable access logs.

      -
    -
  4. Use APIs to check access logs.
    • API for checking the access logs of all nodes in a cluster
      GET /_access_log
      -
    • API for checking the access logs of a node in a cluster
      GET /_access_log/{nodeId}
      -

      {nodeId} indicates the ID of the node where you want to enable access logs.

      -
    -
    Example response:
    {
    -  "_nodes" : {
    -    "total" : 1,
    -    "successful" : 1,
    -    "failed" : 0
    -  },
    -  "cluster_name" : "css-flowcontroller",
    -  "nodes" : {
    -    "8x-ZHu-wTemBQwpcGivFKg" : {
    -      "name" : "css-flowcontroller-ess-esn-1-1",
    -      "host" : "10.0.0.98",
    -      "count" : 2,
    -      "access" : [
    -        {
    -          "time" : "2021-02-23 02:09:50",
    -          "remote_address" : "/10.0.0.98:28191",
    -          "url" : "/_access/security/log?pretty",
    -          "method" : "GET",
    -          "content" : ""
    -        },
    -        {
    -          "time" : "2021-02-23 02:09:52",
    -          "remote_address" : "/10.0.0.98:28193",
    -          "url" : "/_access/security/log?pretty",
    -          "method" : "GET",
    -          "content" : ""
    -        }
    -      ]
    -    }
    -  }
    -}
    - -
    - - - - - - - - - - - - - - - - -
    Table 2 Response parameters

    Parameter

    -

    Description

    -

    name

    -

    Node name

    -

    host

    -

    Node IP address

    -

    count

    -

    Number of node access requests in a statistical period

    -

    access

    -

    Details about node access requests in a statistical period For details, see Table 3.

    -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - -
    Table 3 access

    Parameter

    -

    Description

    -

    time

    -

    Request time

    -

    remote_address

    -

    Source IP address and port number of the request

    -

    url

    -

    Original URL of the request

    -

    method

    -

    Method corresponding to the request path

    -

    content

    -

    Request content

    -
    -
    -
  5. Enable or disable the access log function.

    All user access operation can be logged. By default, logs are recorded in the acces_log.log file in the background. The maximum size of a log file is 250 MB, and there can be a maximum of five log files. You can back up access log files to OBS.

    -
    • Enabling access logs
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.accesslog.enabled": true  
      -   }
      -}
      -
    • Disabling access logs
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.accesslog.enabled": false
      -   }
      -}
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0147.html b/docs/css/umn/css_01_0147.html deleted file mode 100644 index cb51bdf2..00000000 --- a/docs/css/umn/css_01_0147.html +++ /dev/null @@ -1,92 +0,0 @@ - - -

CPU Flow Control

-

Context

CPU flow control can be implemented based on the CPU usage of a node.

-

You can configure the CPU usage threshold of a node to prevent the node from breaking down due to heavy traffic. You can determine the CPU usage threshold based on the traffic threshold. If the CPU usage of a node exceeds the configured threshold, CPU flow control discards excess node requests to protect the cluster. Traffic within the node or passing through Elasticsearch monitoring APIs are not affected.

-

The following table describes CPU flow control parameters.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 CPU flow control parameters

Parameter

-

Type

-

Description

-

flowcontrol.cpu.enabled

-

Boolean

-

Whether to enable CPU flow control. If this function is enabled, the node access performance may be affected.

-

Value: true or false

-

Default value: false

-

flowcontrol.cpu.percent_limit

-

Integer

-

Maximum CPU usage of a node.

-

Value range: 0–100

-

Default value: 90

-

flowcontrol.cpu.allow_path

-

List

-

Path whitelist for CPU flow control. The paths specified in the allow_path whitelist are not under CPU flow control.

-

The default value is null.

-

A path can contain up to 32 characters. A maximum of 10 request paths can be configured. Wildcard characters are supported. For example, if this parameter is set to auto_*/_search, all the search requests of the indexes prefixed with auto_ are not under the flow control.

-

flowcontrol.cpu.*.filter_path

-

String

-

Paths under CPU flow control.

-

Maximum length: 32 characters

-

Example:

-

"flowcontrol.cpu.search.filter_path": "/index/_search",

-

"flowcontrol.cpu.search.limit": 60,

-

The default value is **, indicating all paths. If limit is configured and filter_path is not, it indicates that all the paths, except those in the whitelist, are under control. The whitelist takes precedence over the single-path rule. If a path is specified in both allow_path and filter_path, the requests from the path will be allowed.

-

For example, if both filter_path and allow_path both set to abc/_search, then abc/_search will not be under flow control.

-

flowcontrol.cpu.*.limit

-

Integer

-

CPU threshold of request paths. If the CPU usage exceeds the threshold, flow control will be triggered.

-

Value range: 0–100

-

Default value: 90

-
-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable memory flow control.
    • Enabling CPU flow control
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.cpu.enabled": true,
      -    "flowcontrol.cpu.percent_limit": 80,
      -    "flowcontrol.cpu.allow_path": ["index/_search"]
      -  }
      -}
      -
    • Disabling CPU flow control
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.cpu.enabled": false
      -  }
      -}
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0148.html b/docs/css/umn/css_01_0148.html deleted file mode 100644 index aa921334..00000000 --- a/docs/css/umn/css_01_0148.html +++ /dev/null @@ -1,25 +0,0 @@ - - -

One-click Traffic Blocking

-

You can block all traffic in one click, except the traffic that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable one-click traffic blocking.
    • Enabling one-click traffic blocking
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.break.enabled": true
      -  }
      -}
      -
    • Disabling one-click traffic blocking
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.break.enabled": false
      -  }
      -}
      -
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0149.html b/docs/css/umn/css_01_0149.html deleted file mode 100644 index ae9956df..00000000 --- a/docs/css/umn/css_01_0149.html +++ /dev/null @@ -1,32 +0,0 @@ - - -

Changing the Elasticsearch Cluster Form

-

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0150.html b/docs/css/umn/css_01_0150.html deleted file mode 100644 index 243ad27f..00000000 --- a/docs/css/umn/css_01_0150.html +++ /dev/null @@ -1,29 +0,0 @@ - - -

Overview

-

You can scale in or out a cluster and change cluster specifications. In this way, you can improve cluster efficiency and reduce O&M costs.

-
Scaling Out a Cluster
  • If a data node (ess) processes many data writing and querying requests and responds slowly, you can expand its storage capacity to improve its efficiency. If some nodes turn unavailable due to the excessive data volume or misoperations, you can add new nodes to ensure the cluster availability.
  • Cold data nodes (ess-cold) are used to share the workload of data nodes. To prevent cold data loss, you can expand the storage capacity of the cold data node or add new ones.
-
-
Changing Specifications
  • If the allocation of new indexes or shards takes too long or the node coordination and scheduling are inefficient, you can change the master node (ess-master) specifications.
  • If too many tasks need to be distributed or too many results have been aggregated, you can change the client node (ess-client) specifications.
  • If the speed of data writing and query decreases suddenly, you can change the data node (ess) specifications.
  • If cold data query becomes slow, you can change the cold node (ess-cold) specifications.
-
-
Scaling in a Cluster
  • If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs.
-
-
Removing Specified Nodes
  • If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs.
-
-
Replacing a Specified Node
  • If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.
-
-
Adding Master/Client Nodes
  • If the workloads on the data plane of a cluster increase, you can dynamically scale the cluster by adding master/client nodes.
-
-

Changing the Security Mode

-
After a cluster is created, its security mode can be changed using the following methods:
  • Change a non-security cluster to a security cluster that uses HTTP or HTTPS protocol.
  • Change a security cluster that uses HTTP or HTTPS protocol to a non-security cluster.
  • Change the protocol of a security cluster.
-
-

Changing AZs

-
You can Add AZ or Migrate AZ.
  • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster to improve cluster availability.
  • Migrate AZ: Completely migrate data from the current AZ to another AZ that has sufficient resources.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0151.html b/docs/css/umn/css_01_0151.html deleted file mode 100644 index 74a57c7c..00000000 --- a/docs/css/umn/css_01_0151.html +++ /dev/null @@ -1,85 +0,0 @@ - - -

Scaling Out a Cluster

-

If the workloads on the data plane of a cluster change, you can scale out the cluster by increasing the number or capacity of its nodes. Services are not interrupted during cluster scale-out.

-

Prerequisites

  • The target cluster is available and has no tasks in progress.
  • The target cluster has sufficient quotas available.
-
-

Constraints

  • The Node Specifications cannot be modified during scale-out. You can modify Node Specifications by referring to Changing Specifications.
  • If you change the number and storage capacity of a specified type of node, nodes in other types will not be changed.
  • The quota of nodes in different types varies. For details, see Table 1. -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Number of nodes in different types

    Node Type

    -

    Number

    -

    ess

    -

    ess: 1-32

    -

    ess, ess-master

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess, ess-client

    -

    ess: 1-32

    -

    ess-client: 1-32

    -

    ess, ess-cold

    -

    ess: 1-32

    -

    ess-cold: 1-32

    -

    ess, ess-master, ess-client

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-client: 1-32

    -

    ess, ess-master, ess-cold

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-cold: 1-32

    -

    ess, ess-client, ess-cold

    -

    ess: 1-32

    -

    ess-client: 1-32

    -

    ess-cold: 1-32

    -

    ess, ess-master, ess-client, ess-cold

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-client: 1-32

    -

    ess-cold: 1-32

    -
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    -
    -
    -
    -
-
-

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Scale out to set parameters.
    • Action: Select Scale out.
    • Resource: The changed amount of resources.
    • Nodes: The number of nodes and node storage capacity of the default data node.
      • Nodes: For details, see Table 1.
      • The value range of Node Storage Type depends on the Node Specifications. The value must be a multiple of 20.
      -
    -
  5. Click Next.
  6. Confirm the information and click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling out. When Cluster Status changes to Available, the cluster has been successfully scaled out.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0152.html b/docs/css/umn/css_01_0152.html deleted file mode 100644 index ccdccc87..00000000 --- a/docs/css/umn/css_01_0152.html +++ /dev/null @@ -1,20 +0,0 @@ - - -

Changing Specifications

-

If the workloads on the data plane of a cluster change, you can change its node specifications as needed.

-

Prerequisites

  • The target cluster is available and has no tasks in progress.
  • The target cluster has sufficient quotas available.
  • When changing the node specifications, ensure that all service data has copies so the services will not be interrupted.

    Run the GET _cat/indices?v command in Kibana. If the returned rep value is greater than 0, the data has copies. If the returned rep value is 0, the data has no copies. In this case, create snapshot for the cluster by referring to Manually Creating a Snapshot.

    -
  • If the data volume is large, it may take long to modify the node specifications. You are advised to modify specifications during off-peak hours.
-
-

Constraints

  • The number of nodes and the capacity of node storage cannot be changed. You can add nodes and increase the node storage capacity by referring to Scaling Out a Cluster. For details about how to reduce the number of nodes, see Scaling in a Cluster.
  • After decreasing cluster specifications, the cluster performance will deteriorate and service capabilities will be affected. Exercise caution when performing this operation.
  • If a cluster has multiple node types, you can change the specifications of only one type at a time. After the change, nodes in other types still maintain their original specifications.
  • Kibana is unavailable during specification change.
  • During the specification modification, the nodes are stopped and restarted in sequence. It is a rolling process.
-
-

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Change Specifications to set parameters.
    • Action: select Change specifications.
    • Resources: The changed amount of resources.
    • Nodes: Specifications of the default data nodes. Select the required specifications from the Node Specifications drop-down list and select the node that you want to change the specifications.
    • If a cluster has master nodes, client nodes, or cold data nodes, you can change their specifications.
    -
  5. Click Next.
  6. Confirm the information and click Submit.
  7. In the displayed Verify Index Copy dialog box, select Verify index copies if you need. Click OK.
    • If you selected Verify index copies and the cluster has no master node, indexes must have at least one copy and the cluster must have at least three nodes.
    • If you selected Verify index copies and the cluster has no master node, indexes must have at least one copy.
    -
  8. Click Back to Cluster List to switch to the Clusters page. The Cluster Status is Configuration modified. When Cluster Status changes to Available, the cluster specifications have been successfully modified.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0153.html b/docs/css/umn/css_01_0153.html deleted file mode 100644 index 4e59d3a6..00000000 --- a/docs/css/umn/css_01_0153.html +++ /dev/null @@ -1,87 +0,0 @@ - - -

Scaling in a Cluster

-

If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. Services are not interrupted during cluster scale-in.

-

Prerequisites

The target cluster is available and has no tasks in progress.

-
-

Constraints

  • Only the number of nodes can be modified during cluster scale-in. The node specifications and node storage capacity cannot be modified. For details about how to change node specifications and node storage capacity, see Changing Specifications and Scaling Out a Cluster, respectively.
  • If you change the number and storage capacity of a specified type of node, nodes in other types will not be changed.
  • Ensure that the disk usage after scale-in is less than 80% and each AZ of each node type has at least one node.
  • When scaling in a cluster, the data in the node to be deleted is migrated to other nodes. The timeout threshold for data migration is five hours. If data migration is not complete within 5 hours, the cluster scale-in fails. You are advised to perform scale-in for multiple times when the cluster has huge amounts of data.
  • For a cluster without master nodes, the number of remaining data nodes (including cold data nodes and other types of nodes) after scale-in must be greater than half of the original node number, and greater than the maximum number of index replicas.
  • For a cluster with master nodes, the number of removed master nodes in a scale-in must be fewer than half of the original master node number. After scale-in, there has to be an odd number of master nodes, and there has to be at least three of them.
  • A cluster with two nodes cannot be scaled in. You can create a cluster using a single node and then .
  • The quota of nodes in different types varies. For details, see Table 1. -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Number of nodes in different types

    Node Type

    -

    Number

    -

    ess

    -

    ess: 1-32

    -

    ess, ess-master

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess, ess-client

    -

    ess: 1-32

    -

    ess-client: 1-32

    -

    ess, ess-cold

    -

    ess: 1-32

    -

    ess-cold: 1-32

    -

    ess, ess-master, ess-client

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-client: 1-32

    -

    ess, ess-master, ess-cold

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-cold: 1-32

    -

    ess, ess-client, ess-cold

    -

    ess: 1-32

    -

    ess-client: 1-32

    -

    ess-cold: 1-32

    -

    ess, ess-master, ess-client, ess-cold

    -

    ess: 1-200

    -

    ess-master: an odd number ranging from 3 to 9

    -

    ess-client: 1-32

    -

    ess-cold: 1-32

    -
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    -
    -
    -
    -
-
-

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Scale in to set parameters.
    • Action: Select Scale in.
    • Resources: The changed amount of resources.
    • Agency: Select an IAM agency to grant the current account the permission to switch AZs.

      If no agency is available, click Create IAM Agency to go to the IAM console and create an agency.

      -

      The selected agency must be assigned the Tenant Administrator or VPC Administrator policy.

      -
      -
    • Nodes: The number of the default data nodes. For details about the value range that can be changed, see Table 1.
    -
  5. Click Next.
  6. Confirm the information and click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling in. When Cluster Status changes to Available, the cluster has been successfully scaled in.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0154.html b/docs/css/umn/css_01_0154.html deleted file mode 100644 index 64782c11..00000000 --- a/docs/css/umn/css_01_0154.html +++ /dev/null @@ -1,22 +0,0 @@ - - -

Removing Specified Nodes

-

If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs. Services will not be interrupted during the removal of specified nodes.

-

Prerequisites

The target cluster is available and has no tasks in progress.

-
-

Constraints

  • Ensure that the disk usage after scale-in is less than 80% and each AZ of each node type has at least one node.
  • In a cross-AZ cluster, the difference between the numbers of the same type nodes in different AZs cannot exceed 1.
  • For a cluster without master nodes, the number of removed data nodes and cold data nodes in a scale-in must be fewer than half of the original number of data nodes and cold data nodes, and the number of remaining data nodes and cold data nodes after a scale-in must be greater than the maximum number of index replicas.
  • For a cluster with master nodes, the number of removed master nodes in a scale-in must be fewer than half of the original master node number. After scale-in, there has to be an odd number of master nodes, and there has to be at least three of them.
-
-

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, click the Scale In tab.
  5. On the Scale In tab page, set the following parameters:
    • Agency: Select an IAM agency to grant the current account the permission to switch AZs.

      If no agency is available, click Create IAM Agency to go to the IAM console and create an agency.

      -

      The selected agency must be assigned the Tenant Administrator or VPC Administrator policy.

      -
      -
    -
    • Whether to perform data migration: If this option is selected, data migration is performed. If the target node contains disabled indexes or indexes that have no replicas, this option must be selected.
    • In the data node table, select the node to be scaled in.
    -
  6. Click Next.
  7. Confirm the information and click Submit.
  8. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling in. When Cluster Status changes to Available, the cluster has been successfully scaled in.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0155.html b/docs/css/umn/css_01_0155.html deleted file mode 100644 index 5c24c334..00000000 --- a/docs/css/umn/css_01_0155.html +++ /dev/null @@ -1,79 +0,0 @@ - - -

Configuring Cluster Monitoring

-

You can use Cloud Eye to monitor the created clusters. After configuring the cluster monitoring, you can log in to the Cloud Eye management console to view cluster metrics.

-

The procedure for configuring cluster monitoring:

-
  1. Creating Alarm Rules: Customize alarm rules for the monitoring metrics. Once a metric exceeds the threshold, the system will notify you by sending emails or HTTP/HTTPS requests.
  2. Configuring Monitoring Metrics: Configure monitoring metrics for a cluster or a node in the cluster.
  3. Viewing Monitoring Metrics: View the statistics of the monitoring metrics in specific periods.
-

Prerequisites

  • The cluster is in the Available or Processing status.
  • The cluster has been running properly for more than 10 minutes.
-
-

Recommended Monitoring Metrics

  • Cluster CPU and JVM usage. You are advised to configure the following monitoring metrics: average JVM heap usage, maximum JVM heap usage, average CPU usage, and maximum CPU usage.
  • Cluster write and query latency and throughput. You are advised to configure the following monitoring metrics: average index latency, average index rate, average search latency, and average QPS.
  • Cluster write and query queue and rejected tasks. You are advised to configure the following monitoring metrics: tasks in write queue, tasks in search queue, rejected tasks in write queue, and rejected tasks in search queue.
-
-

Creating Alarm Rules

  1. Log in to the Cloud Eye console.
  2. In the navigation pane on the left, choose Alarm Management > Alarm Rules.
  3. In the Resource Type column, select Cloud Search Service as criteria to search for alarm rules that meet the requirements.

    If no alarm rules are available, create one by referring to the "Creating an Alarm Rule" section. For details about how to set Resource Type and Dimension, see Table 1.

    - -
    - - - - - - - - - - - - - -
    Table 1 Alarm rule configuration parameter

    Parameter

    -

    Description

    -

    Remark

    -

    Resource Type

    -

    Type of the resource that the alarm rule is created for

    -

    Select Cloud Search Service.

    -

    Dimension

    -

    Metric dimension of the selected resource type

    -

    CSS supports two dimensions. Select a dimension as required.

    -
    • CSS Clusters: Alarm rules are specified by cluster.
    • CSS Clusters - CSS Instances: Alarm rules are specified by node in a cluster.
    -
    -
    -
-
-

Configuring Monitoring Metrics

  1. Create a monitoring panel by referring to the "Creating a Dashboard" section. If an available monitoring panel has been created, skip this step.
  2. Add CSS monitoring graphs by referring to the "Adding a Graph" section.

    For details about how to set Resource Type and Dimension, see Table 2.

    - -
    - - - - - - - - - - - - - -
    Table 2 Graph configuration parameter

    Parameter

    -

    Description

    -

    Remark

    -

    Resource Type

    -

    Type of the resource to be monitored

    -

    Select Cloud Search Service.

    -

    Dimension

    -

    Metric dimension

    -

    CSS supports two dimensions. Select a dimension as required.

    -
    • CSS Clusters: Monitoring is executed by cluster.
    • CSS Clusters - CSS Instances: Monitoring is executed by node in a cluster.
    -
    -
    -
-
-

Viewing Monitoring Metrics

  1. Log in to the CSS management console.
  2. Choose Clusters. Locate the target cluster and choose More > View Metric in the Operation column.
  3. Select a time range.
  4. View the monitoring metrics.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0156.html b/docs/css/umn/css_01_0156.html deleted file mode 100644 index 198ede90..00000000 --- a/docs/css/umn/css_01_0156.html +++ /dev/null @@ -1,23 +0,0 @@ - - -

Replacing a Specified Node

-

If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.

-

Prerequisites

The target cluster is available and has no tasks in progress.

-
-

Constraints

  • Only one node can be replaced at a time.
  • The ID, IP address, specifications, and AZ of the new node will be the same as those of the original one.
  • The configurations you modified manually will not be retained after node replacement. For example, if you have manually added a return route to the original node, you need to add it to the new node again after the node replacement is complete.
  • If the node you want to replace is a data node (ess) or cold data node (ess-cold), pay attention to the following precautions:
    1. Before a data node or cold data node is replaced, its data needs to be migrated to other nodes. To properly store the data, ensure the maximum sum of replicas and primary shards of an index is smaller than the total number of data nodes (ess and ess-cold nodes) in the cluster. The node replacement duration depends heavily on the migration speed.
    2. Clusters whose version is earlier than 7.6.2 cannot have closed indexes. Otherwise, data nodes or cold data nodes cannot be replaced.
    3. The AZ of the node to be replaced must have two or more data nodes (including ess and ess-cold).
    4. If the cluster of the node to be replaced does not have a master node (ess-master), the number of available data nodes (including ess and ess-cold) in the cluster must be greater than or equal to 3.
    5. The preceding precautions do not apply if you are replacing a master node (ess-master) or client node (ess-client).
    6. The precautions 1 to 4 do not apply if you are replacing a faulty node, regardless of its type. Faulty nodes are not included in _cat/nodes.
    -
-
-

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, click the Replace Node tab.
  5. On the Replace Node tab page, set the following parameters:
    • Agency: Select an IAM agency to grant the current account the permission to switch AZs.

      If no agency is available, click Create IAM Agency to go to the IAM console and create an agency.

      -

      The selected agency must be assigned the Tenant Administrator or VPC Administrator policy.

      -
      -
    -
    • Whether to perform data migration: If this option is selected, data migration is performed. If the target node have disabled indexes or indexes that have no replicas, this option must be selected.
    • Select the node to be replaced in the data node table.
    -
  6. Click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Upgrading. When Cluster Status changes to Available, the node has been successfully replaced.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0157.html b/docs/css/umn/css_01_0157.html deleted file mode 100644 index 8949f861..00000000 --- a/docs/css/umn/css_01_0157.html +++ /dev/null @@ -1,43 +0,0 @@ - - -

Adding Master/Client Nodes

-

If workloads on the data plane of a cluster increase, you can add master or client nodes as needed. Services are not interrupted while they are added.

-

Prerequisites

The target cluster is available and has no tasks in progress.

-
-

Constraints

  • If a cluster already has master and client nodes, the Add Master/Client Node tab is not displayed on the Modify Configuration page. In this case, you need to add the master or client nodes by referring to Scaling Out a Cluster.
  • When you add master or client nodes, the number of nodes that can be configured varies depending on the node type. For details, see Table 1. -
    - - - - - - - - - - -
    Table 1 Number of nodes in different types

    Node Flavor

    -

    Number

    -

    Master node

    -

    An odd number ranging from 3 to 9

    -

    Client node

    -

    1 to 32

    -
    -
    -
-
-

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Add Master/Client Node tab.
  5. Select the target node type and set the node specifications, quantity, and storage.
    • Master and client nodes cannot be added at the same time.
    • If a cluster already has a master or client node, you can only add nodes of the other type.
    -
    Figure 1 Adding a master or client node
    -
  6. Click Next.
  7. Confirm the information and click Submit.

    Return to the cluster list page. The Task Status of the cluster is Scaling out.

    -
    • If you added a master node and Cluster Status changed to Available, the master node has been successfully added.

      If the cluster version is earlier than 7.x, when the Cluster Status changes to Available, you need to restart all data nodes and cold data nodes in the cluster to make the new node take effect. Before the restart, the cluster may be unavailable. For details, see Restarting a Cluster.

      -
      -
    • If you added a client node and Cluster Status changed to Available, the client node has been added. You can restart data nodes and cold data nodes to shut down Cerebro and Kibana processes on the nodes.
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0158.html b/docs/css/umn/css_01_0158.html deleted file mode 100644 index b86f3431..00000000 --- a/docs/css/umn/css_01_0158.html +++ /dev/null @@ -1,82 +0,0 @@ - - -

Changing the Security Mode

-
-

Context

You can create clusters in multiple security modes. For details about the differences between security modes, see Table 1. -
- - - - - - - - - - - - - - - - - - - - - -
Table 1 Cluster security modes

Security Mode

-

Scenario

-

Advantage

-

Disadvantage

-

Non-Security Mode

-

Intranet services and test scenarios

-

Simple. Easy to access.

-

Poor security. Anyone can access such clusters.

-

Security Mode + HTTP Protocol

-

User permissions can be isolated, which is applicable to scenarios sensitive to cluster performance.

-

Security authentication is required for accessing such clusters, which improves cluster security. Accessing a cluster through HTTP protocol can retain the high performance of the cluster.

-

Cannot be accessed from the public network.

-

Security Mode + HTTPS Protocol

-

Scenarios that require high security and public network access.

-

Security authentication is required for accessing such clusters, which improves cluster security. HTTPS protocol allows public network to access such clusters.

-

The performance of clusters using HTTPS is 20% lower than that of using HTTP.

-
-
-
-
-

Prerequisites

  • You are advised to back up data before changing the cluster security mode.
  • The target cluster is available and has no tasks in progress.
-
-

Constraints

  • Only clusters (whose version is 6.5.4 or later) created after November 2022 support security mode switching.
  • A cluster automatically restarts when its security mode is being changed. Services are interrupted during the restart. The authentication mode for invoking the cluster will change after the restart, and client configurations need to be adjusted accordingly.
  • If a cluster has already opened the Kibana session box, a session error message will be displayed after you change the cluster security mode. In this case, clear the cache and open Kibana again.
-
-

Switching from the Non-Security Mode to Security Mode

You can change a non-security cluster to a security cluster that uses HTTP or HTTPS. After a cluster's security mode is enabled, security authentication is required for accessing the cluster.

-
  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. Choose the Configure Security Mode tab.
  5. Enable the security mode. Enter and confirm the administrator password of the cluster.
    Figure 1 Enabling the security mode
    -
  6. Enable or disable HTTPS Access.
    • If you enable HTTPS Access: The HTTPS protocol is used to encrypt cluster communication and you can configure public networks to access the cluster.
    • If you disable HTTPS Access: The HTTP protocol is used and you cannot configure public networks to access the cluster.
    -
  7. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    -
-
-

Switching from the Security to Non-Security Mode

You can change a security cluster that uses HTTP or HTTPS to a non-security cluster. After a cluster's security mode is disabled, security authentication is no longer required for accessing the cluster.

-
  • Clusters in non-security mode can be accessed without security authentication, and HTTP protocol is used to transmit data. Ensure the security of the cluster access environment and do not expose the access interface to the public network.
  • During the switchover from the security mode to the non-security mode, the indexes of the original security cluster will be deleted. Back up data before disabling the security mode.
  • If a security cluster has been bound to a public IP address, unbind it before changing the security mode.
  • If a security cluster has enabled Kibana public network access, disable it before changing the security mode.
-
-
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the displayed Clusters page, locate the target cluster and choose More > Modify Configuration in the Operation column.
  3. Choose the Configure Security Mode tab.
  4. Disable the security mode.
    Figure 2 Disabling the security mode
    -
  5. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    -
-
-

Switching the Protocol of Security Clusters

You can change the protocol of a security cluster.

-

If a security cluster has been bound to a public IP address, you need to unbind it before changing HTTPS protocol to HTTP.

-
-
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the displayed Clusters page, locate the target cluster and choose More > Modify Configuration in the Operation column.
  3. Choose the Configure Security Mode tab.
  4. Enable or disable HTTPS Access.
    Figure 3 Configuring the protocol
    -
    • If you enable HTTPS Access:

      HTTPS protocol is used to encrypt cluster communication and you can configure public network access.

      -
    • If you disable HTTPS Access: An alarm message is displayed. Click OK to disable the function.

      Cluster communication is no longer encrypted and the public network access function cannot be enabled.

      -
    -
  5. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0161.html b/docs/css/umn/css_01_0161.html deleted file mode 100644 index 6c5df62b..00000000 --- a/docs/css/umn/css_01_0161.html +++ /dev/null @@ -1,19 +0,0 @@ - - -

Read/Write Splitting

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0162.html b/docs/css/umn/css_01_0162.html deleted file mode 100644 index db65359d..00000000 --- a/docs/css/umn/css_01_0162.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Features

-

CSS supports read/write splitting. Data written to the primary cluster (Leader) can be automatically synchronized to the secondary cluster (Follower). In this way, data is written to the primary cluster and queried in the secondary cluster. The read and write can be separated to improve the query performance (as shown in the left part of Figure 1). When the primary cluster is unavailable, the secondary cluster can provide data write and query services (as shown in the right part of Figure 1).

-
Figure 1 Two application scenarios of read/write splitting
-

Currently, only clusters of versions 7.6.2 and 7.10.2 support read/write isolation.

-
-
- -
- diff --git a/docs/css/umn/css_01_0164.html b/docs/css/umn/css_01_0164.html deleted file mode 100644 index 3c4ae16a..00000000 --- a/docs/css/umn/css_01_0164.html +++ /dev/null @@ -1,23 +0,0 @@ - - -

Instructions

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0165.html b/docs/css/umn/css_01_0165.html deleted file mode 100644 index 154eb206..00000000 --- a/docs/css/umn/css_01_0165.html +++ /dev/null @@ -1,32 +0,0 @@ - - -

Basic Settings

-
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  3. Click Dev Tools in the navigation tree on the left and perform the following operations:
    Configure the primary cluster information.
    PUT /_cluster/settings
    -{
    -  "persistent" : {
    -    "cluster" : {
    -      "remote.rest" : {
    -        "leader1" : {
    -          "seeds" : [
    -            "http://10.0.0.1:9200",
    -            "http://10.0.0.2:9200",
    -            "http://10.0.0.3:9200"
    -          ] ,
    -            "username": "elastic",
    -            "password": "*****"
    -        }
    -      }
    -    }
    -  }
    -}
    -
    • Secondary clusters must be able to access the REST API (default port: 9200) of the primary cluster.
    • The primary cluster name is leader1 and can be changed.
    • The value of seeds is the REST address of the primary cluster. Multiple values are supported. When HTTPS access is enabled, the URI schema must be changed to HTTPS.
    • username and password are required only when the security mode is enabled for the primary cluster.
    • After the configuration is complete, you can use the GET _remote/rest/info API to obtain the connection status with the primary cluster.
    -
    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0166.html b/docs/css/umn/css_01_0166.html deleted file mode 100644 index d3f14957..00000000 --- a/docs/css/umn/css_01_0166.html +++ /dev/null @@ -1,64 +0,0 @@ - - -

Synchronizing Specified Indexes

-

Synchronize a single index.

-

The request URL and request body parameters are as follows:

-
PUT start_remote_sync
- -
- - - - - - - - - - - - - - - - -
Table 1 Request body parameters

Parameter

-

Description

-

remote_cluster

-

Name of the primary cluster. The default name is leader1. You can change the name by configuring the primary cluster information.

-

remote_index

-

Name of the index to be synchronized in the primary cluster

-

local_index

-

Name of the index being synchronized to the secondary cluster

-

settings

-

Index settings of the index being synchronized

-
-
-

After the synchronization function is enabled, indexes in the secondary cluster become read-only and are periodically synchronized with indexes in the primary cluster.

-

The following are two examples:

-
  1. Synchronize a single index from the primary cluster to the secondary cluster.
    PUT start_remote_sync
    -{
    -  "remote_cluster": "leader1",
    -  "remote_index": "data1_leader",
    -  "local_index": "data1_follower"
    -}
    -
  2. Synchronize a single index from the primary cluster to the secondary cluster and modify the index configurations.
    PUT start_remote_sync
    -{
    -  "remote_cluster": "leader1",
    -  "remote_index": "data1_leader",
    -  "local_index": "data1_follower",
    -  "settings": {
    -    "number_of_replicas": 4
    -  }
    -}
    -

    The following index configurations cannot be modified:

    -
    • number_of_shards
    • version.created
    • uuid
    • creation_date
    • soft_deletes.enabled
    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0167.html b/docs/css/umn/css_01_0167.html deleted file mode 100644 index a2c59bc8..00000000 --- a/docs/css/umn/css_01_0167.html +++ /dev/null @@ -1,70 +0,0 @@ - - -

Matching Index Synchronization

-

The request URL and request body parameters are as follows:

-
PUT auto_sync/pattern/{pattern_name}
- -
- - - - - - - - - - - - - - - - - - - -
Table 1 Request body parameters

Parameter

-

Description

-

remote_cluster

-

Name of the primary cluster. The default name is leader1. You can change the name by configuring the primary cluster information.

-

remote_index_patterns

-

Mode of the index to be synchronized in the primary cluster. The wildcard (*) is supported.

-

local_index_pattern

-

Mode of the index being synchronized in the secondary cluster. The template can be replaced. For example, if this parameter is set to {{remote_index}}-sync, the index log1 change to log1-sync after synchronization.

-

apply_exist_index

-

Whether to synchronize existing indexes in the primary cluster. The default value is true.

-

settings

-

Index settings of the index being synchronized

-
-
-

The following are two examples:

-

1. Synchronize a single index from the primary cluster to the secondary cluster.

-
PUT auto_sync/pattern/pattern1
-{
- "remote_cluster": "leader1",
- "remote_index_patterns": "log*",
- "local_index_pattern": "{{remote_index}}-sync",
- "apply_exist_index": true
-}
-

2. Synchronize a single index from the primary cluster to the secondary cluster and modify the index configurations.

-
PUT auto_sync/pattern/pattern1
-{
- "remote_cluster": "leader1",
- "remote_index_patterns": "log*",
- "local_index_pattern": "{{remote_index}}-sync",
- "apply_exist_index": true,
- "settings": {
-   "number_of_replicas": 4
- }
-}
-

The following index configurations cannot be modified:

-
  • number_of_shards
  • version.created
  • uuid
  • creation_date
  • soft_deletes.enabled
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0168.html b/docs/css/umn/css_01_0168.html deleted file mode 100644 index fc2ed271..00000000 --- a/docs/css/umn/css_01_0168.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Stopping Index Synchronization

-

You can specify multiple indexes or use wildcard to match the target indexes and terminate their synchronization tasks. Subsequent modifications to the indexes in the primary cluster will not be synchronized to the secondary cluster. The read-only state of the indexes in the secondary cluster is cancelled, and new data can be written to the secondary cluster.

-

An example request is as follows:

-
PUT log*/stop_remote_sync
-
-
- -
- diff --git a/docs/css/umn/css_01_0169.html b/docs/css/umn/css_01_0169.html deleted file mode 100644 index 5d2f396c..00000000 --- a/docs/css/umn/css_01_0169.html +++ /dev/null @@ -1,94 +0,0 @@ - - -

Other Management APIs

-
  • Querying the created patterns.

    This API is used to query the pattern list and query a specified pattern by name.

    -

    An example request is as follows:

    -
    GET auto_sync/pattern
    -GET auto_sync/pattern/{pattern_name}
    -

    The following is an example of the response:

    -
    {
    -  "patterns" : [
    -    {
    -      "name" : "pattern1",
    -      "pattern" : {
    -        "remote_cluster" : "leader",
    -        "remote_index_patterns" : [
    -          "log*"
    -        ],
    -        "local_index_pattern" : "{{remote_index}}-sync",
    -        "settings" : { }
    -      }
    -    }
    -  ]
    -}
    -
  • Deleting a created schema.

    This API is used to delete a specified pattern.

    -

    An example request is as follows:

    -
    DELETE auto_sync/pattern/{pattern_name}
    -
  • Obtaining the automatic synchronization status.

    This API is used to obtain the synchronization status of matched indexes.

    -

    An example request is as follows:

    -
    GET auto_sync/stats
    -

    The following is an example of the response:

    -
    {
    -  "success_count" : 3,
    -  "failed_count" : 0,
    -  "failed_remote_cluster_state_requests_count" : 0,
    -  "last_fail_exception" : { },
    -  "last_fail_remote_cluster_requests_exception" : { }
    -}
    -
  • Obtaining the synchronization status of the index that is being synchronized.

    An example request is as follows:

    -
    GET {index_name}/sync_stats
    -

    The following is an example of the response:

    -
    {
    -  "indices" : {
    -    "data1_follower" : {
    -      "shards" : {
    -        "0" : [
    -          {
    -            "primary" : false,
    -            "total_synced_times" : 27,
    -            "total_empty_times" : 25,
    -            "total_synced_files" : 4,
    -            "total_synced_bytes" : 3580,
    -            "total_paused_nanos" : 0,
    -            "total_paused_times" : 0,
    -            "current" : {
    -              "files_count" : 0,
    -              "finished_files_count" : 0,
    -              "bytes" : 0,
    -              "finished_bytes" : 0
    -            }
    -          },
    -          {
    -            "primary" : true,
    -            "total_synced_times" : 28,
    -            "total_empty_times" : 26,
    -            "total_synced_files" : 20,
    -            "total_synced_bytes" : 17547,
    -            "total_paused_nanos" : 0,
    -            "total_paused_times" : 0,
    -            "current" : {
    -              "files_count" : 0,
    -              "finished_files_count" : 0,
    -              "bytes" : 0,
    -              "finished_bytes" : 0
    -            }
    -          }
    -        ]
    -      }
    -    }
    -  }
    -}
    -
  • Changing the synchronization period.

    The synchronization period is 30 seconds by default and can be modified.

    -

    An example request is as follows (change the synchronization period to 2 seconds):

    -
    PUT {index_name}/_settings
    -{
    -  "index.remote_sync.sync_interval": "2s"
    -}
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0170.html b/docs/css/umn/css_01_0170.html deleted file mode 100644 index 0ce38150..00000000 --- a/docs/css/umn/css_01_0170.html +++ /dev/null @@ -1,18 +0,0 @@ - - -

Best Practices

-

This section describes how to switch from the primary cluster to the secondary cluster when the primary cluster is faulty.

-

1. If the synchronization of specified indexes has been configured between the primary and secondary clusters.

-

(1) Call the API for stopping index synchronization in the secondary cluster. In this case, the read and write traffic can be switched to the secondary cluster.

-

(2) After the primary cluster recovers, call the index synchronization API to synchronize data from the secondary cluster to the primary cluster.

-

2. If the matching pattern for index synchronization has been established between the primary and secondary clusters.

-

(1) Call the API for deleting the created matching pattern for index synchronization in the secondary cluster.

-

(2) Call the API for stopping index synchronization on the secondary cluster (using * for matching). In this case, the read and write traffic can be switched to the secondary cluster.

-

(3) After the primary cluster recovers, call the index synchronization API to synchronize data from the secondary cluster to the primary cluster.

-
-
- -
- diff --git a/docs/css/umn/css_01_0172.html b/docs/css/umn/css_01_0172.html deleted file mode 100644 index 72939175..00000000 --- a/docs/css/umn/css_01_0172.html +++ /dev/null @@ -1,22 +0,0 @@ - - -

Enhanced Aggregation

-

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0173.html b/docs/css/umn/css_01_0173.html deleted file mode 100644 index fb0a89c8..00000000 --- a/docs/css/umn/css_01_0173.html +++ /dev/null @@ -1,44 +0,0 @@ - - -

Features

-

The enhanced aggregation is an optimization feature for service awareness. With this feature, you can optimize the aggregation analysis capability of observable services.

-

Currently, the enhanced aggregation is supported by only clusters of version 7.10.2.

-

Working Principles

In large-scale dataset aggregation and analysis scenarios, data grouping and aggregation takes a lot of time. Improving the grouping aggregation capability depends on the following key features:

-
  • Sorting key: Data is stored in sequence based on the sorting key.
  • Clustering key: It is contained in the sorting key. Data is clustered based on the clustering key.
-

In the case of data clustering, enhanced aggregation uses the vectorization technology to process data in batches, improving aggregation performance.

- -
- - - - - - - - - - - - - -
Table 1 Feature parameters

Parameter

-

Description

-

index.search.turbo.enabled

-

Indicates whether to enable the feature. The default value is true.

-

index.sort.field

-

Sorting key

-

index.cluter.field

-

Clustering key

-
-
-
-

Features

Based on different service requirements, enhanced aggregation can be used in the following three scenarios:

- -
-
-
- -
- diff --git a/docs/css/umn/css_01_0174.html b/docs/css/umn/css_01_0174.html deleted file mode 100644 index d712e0c7..00000000 --- a/docs/css/umn/css_01_0174.html +++ /dev/null @@ -1,62 +0,0 @@ - - -

Grouping and Aggregation of Low-cardinality Fields

-

Low-cardinality fields have high data clustering performance when being sorted, which facilitates vectorized optimization. Assume that the following query statement exists:

-
POST testindex/_search
-{
-  "size": 0,
-  "aggs": {
-    "groupby_region": {
-      "terms": {
-        "field": "region"
-      },
-      "aggs": {
-        "groupby_host": {
-          "terms": {
-            "field": "host"
-          },
-          "aggs": {
-            "avg_cpu_usage": {
-              "avg": {
-                "field": "cpu_usage"
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
-

Assume that the region and host are low-cardinality fields. To use the enhanced aggregation, set the parameters as follows:

-

The clustering key must be a prefix subset of the sorting key.

-
-
// Configure an index
-"settings" : {
-    "index" : {
-        "search" : {
-            "turbo" : {
-                "enabled" : "true" // Enable optimization
-            }
-        },
-        "sort" : { // Specify a sorting key
-            "field" : [
-                "region",
-                "host",
-                "other"
-            ]
-        },
-        "cluster" : {
-            "field" : [ // Specify a clustering key
-                "region",
-                "host"
-            ]
-        }
-    }
-}
-
-
- -
- diff --git a/docs/css/umn/css_01_0175.html b/docs/css/umn/css_01_0175.html deleted file mode 100644 index dfeca19b..00000000 --- a/docs/css/umn/css_01_0175.html +++ /dev/null @@ -1,47 +0,0 @@ - - -

High-cardinality Field Histogram Aggregation

-

High-cardinality fields are usually used for histogram grouping and aggregation instead of single-point grouping and aggregation. For example, collecting the statistics of logs at a certain period. Assume that the following query statement exists:

-
POST testindex/_search?pretty
-{
-  "size": 0,
-  "aggs": {
-    "avg_score": {
-      "avg": {
-        "field": "score"
-      },
-      "aggs": {
-        "groupbytime": {
-          "date_histogram": {
-            "field": "timestamp",
-            "calendar_interval": "day"
-          }
-        }
-      }
-    }
-  }
-}
-

This query groups the field timestamp using a histogram and calculates the average score. timestamp is a typical high-cardinality field. To use the enhanced aggregation for the preceding query, set parameters as follows:

-
// Configure an index
-"settings" : {
-    "index" : {
-        "search" : {
-            "turbo" : {
-                "enabled" : "true" // Enable optimization
-            }
-        },
-        "sort" : { // Specify a sorting key
-            "field" : [
-                "timestamp"
-            ]
-        }
-    }
-}
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0176.html b/docs/css/umn/css_01_0176.html deleted file mode 100644 index ed2eff84..00000000 --- a/docs/css/umn/css_01_0176.html +++ /dev/null @@ -1,71 +0,0 @@ - - -

Low-cardinality and High-cardinality Field Mixing

-

In the scenario where low-cardinality and high-cardinality fields are mixed, assume that the following query statement exists:

-
POST testindex/_search
-{
-  "size": 0,
-  "aggs": {
-    "groupby_region": {
-      "terms": {
-        "field": "region"
-      },
-      "aggs": {
-        "groupby_host": {
-          "terms": {
-            "field": "host"
-          },
-          "aggs": {
-            "groupby_timestamp": {
-              "date_histogram": {
-                "field": "timestamp",
-                "interval": "day"
-              },
-              "aggs": {
-                "avg_score": {
-                  "avg": {
-                    "field": "score"
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
-

Group the low-cardinality fields and create a histogram using the high-cardinality fields. To use the enhanced aggregation for the preceding query, set the parameters as follows:

-
  • A clustering key is the prefix subset of a sorting key.
  • High-cardinality fields must be in the sorting key, and high-cardinality fields must follow the last low-cardinality field.
-
-
// Configure an index
-"settings" : {
-    "index" : {
-        "search" : {
-            "turbo" : {
-                "enabled" : "true" // Enable optimization
-            }
-        },
-        "sort" : { // Specify a sorting key
-            "field" : [
-                "region",
-                "host",
-                "timestamp",
-                "other"
-            ]
-        },
-        "cluster" : {
-            "field" : [ // Specify a clustering key
-                "region",
-                "host"
-            ]
-        }
-    }
-}
-
-
- -
- diff --git a/docs/css/umn/css_01_0177.html b/docs/css/umn/css_01_0177.html deleted file mode 100644 index 495fcdf9..00000000 --- a/docs/css/umn/css_01_0177.html +++ /dev/null @@ -1,17 +0,0 @@ - - -

Enhanced Cluster Monitoring

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0178.html b/docs/css/umn/css_01_0178.html deleted file mode 100644 index c2a1cdee..00000000 --- a/docs/css/umn/css_01_0178.html +++ /dev/null @@ -1,70 +0,0 @@ - - -

P99 Latency Monitoring

-

Context

The Elasticsearch community only discusses how to monitor the average latency of search requests, which cannot reflect the actual search performance of a cluster. To enhance monitoring, CSS allows you to monitor the P99 latency of search requests in clusters.

-
-

Prerequisites

Currently, only clusters of version 7.6.2 and 7.10.2 support P99 latency monitoring.

-
-

Obtaining Monitoring Information

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation tree on the left, choose Dev Tools and run the following command to check the P99 latency of the current cluster:
    GET /search/stats/percentile 
    -

    Example response:

    -
    {
    -  "overall" : {
    -    "1.0" : 2.0,
    -    "5.0" : 2.0,
    -    "25.0" : 6.5,
    -    "50.0" : 19.5,
    -    "75.0" : 111.0,
    -    "95.0" : 169.0,
    -    "99.0" : 169.0,
    -    "max" : 169.0,
    -    "min" : 2.0
    -  },
    -  "last_one_day" : {
    -    "1.0" : 2.0,
    -    "5.0" : 2.0,
    -    "25.0" : 6.5,
    -    "50.0" : 19.5,
    -    "75.0" : 111.0,
    -    "95.0" : 169.0,
    -    "99.0" : 169.0,
    -    "max" : 169.0,
    -    "min" : 2.0
    -  },
    -  "latest" : {
    -    "1.0" : 26.0,
    -    "5.0" : 26.0,
    -    "25.0" : 26.0,
    -    "50.0" : 26.0,
    -    "75.0" : 26.0,
    -    "95.0" : 26.0,
    -    "99.0" : 26.0,
    -    "max" : 26.0,
    -    "min" : 26.0
    -  }
    -}
    -
    • In the response, overall indicates all the statistics that have been collected since the cluster startup, last_one_day indicates the statistics collected in the last day, and latest indicates the statistics that have been collected since the last reset.
    • The calculated P99 latency is an estimation. It is more precise than the P50 latency.
    • The P99 latency of a cluster is cleared and recalculated if the cluster is restarted.
    -
    -
-
-

Other Operations

  • Define percentage.
    You can run the following command to specify the percentage:
    GET /search/stats/percentile
    -{
    -  "percents": [1, 50, 90]
    -}
    -
    -
  • Reset the latest statistics.
    You can run the following command to reset the latest statistics:
    POST /search/stats/reset
    -
    -

    Example response:

    -
    {
    -  "nodes" : {
    -    "css-c9c8-ess-esn-1-1" : "ok"
    -  }
    -}
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0179.html b/docs/css/umn/css_01_0179.html deleted file mode 100644 index 7f1a7361..00000000 --- a/docs/css/umn/css_01_0179.html +++ /dev/null @@ -1,63 +0,0 @@ - - -

HTTP Status Code Monitoring

-

Context

When an external system accesses Elasticsearch through the HTTP protocol, a response and the corresponding status code are returned. The open-source Elasticsearch server does not collect the status code, so users cannot monitor Elasticsearch APIs status or cluster request status. CSS allows you to monitor the HTTP status codes of clusters.

-
-

Prerequisites

Currently, only clusters of versions 7.6.2 and 7.10.2 support HTTP status code monitoring.

-
-

Obtaining Status Codes

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation tree on the left, choose Dev Tools.
  4. On the console page of Dev Tools, run commands based on the cluster version.
    • For clusters of version 7.6.2, run the following command to obtain the status code statistics:
      GET /_nodes/http_stats
      -

      Example response:

      -
      {   
      -    "_nodes" : {     
      -      "total" : 1,    
      -      "successful" : 1,     
      -      "failed" : 0   },  
      -     "cluster_name" : "css-8362",   
      -     "nodes" : {     
      -      "F9IFdQPARaOJI7oL7HOXtQ" : {       
      -         "http_code" : {        
      -            "200" : 114,        
      -            "201" : 5,        
      -            "429" : 0,       
      -            "400" : 7,         
      -            "404" : 0,        
      -            "405" : 0      
      -           }     
      -         }   
      -      }
      - }
      -
    • For clusters of version 7.10.2, run the following command to obtain the status code statistics:
      GET _nodes/stats/http 
      -

      Example response:

      -
      {
      -// ...
      -  "cluster_name" : "css-2985",
      -  "nodes" : {
      -// ...
      -    "omvR9_W-TsGApraMApREjA" : {
      -
      -// ...
      -      "http" : {
      -        "current_open" : 4,
      -        "total_opened" : 37,
      -        "http_code" : {
      -          "200" : 25,
      -          "201" : 7,
      -          "429" : 0,
      -          "400" : 3,
      -          "404" : 0,
      -          "405" : 0
      -        }
      -      }
      -    }
      -  }
      -}
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0181.html b/docs/css/umn/css_01_0181.html deleted file mode 100644 index d50d498f..00000000 --- a/docs/css/umn/css_01_0181.html +++ /dev/null @@ -1,226 +0,0 @@ - - -

Scenario

-

CSS integrates shared load balancers and allows you to bind public network access and enable the VPC Endpoint service. Dedicated load balancers provide more functions and higher performance than shared load balancers. This section describes how to connect a cluster to a dedicated load balancer.

-
Advantages of connecting a cluster to a dedicated load balancer:
  • A non-security cluster can also use capabilities of the Elastic Load Balance (ELB) service.
  • You can use customized certificates for HTTPS bidirectional authentication.
  • Seven-layer traffic monitoring and alarm configuration are supported, allowing you to view the cluster status at any time.
-
-

There are eight service forms for clusters in different security modes to connect to dedicated load balancers. Table 1 describes the load balancer capabilities for the eight service forms. Table 2 describes the configurations for the eight service forms.

-

You are not advised to connect an ELB that has bound the public network to a non-security cluster. Non-security clusters can be accessed over HTTP without security authentication. A load balancer with an EIP allows access to such clusters over the Internet, which may bring security risks.

-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 ELB capabilities for different clusters

Security Mode

-

Service Form Provided by ELB for External Systems

-

ELB Load Balancing

-

ELB Traffic Monitoring

-

ELB Two-way Authentication

-

Non-security

-

No authentication

-

Yes

-

Yes

-

No

-

One-way authentication

-

Two-way authentication

-

Yes

-

Yes

-

Yes

-

Security mode + HTTP

-

Password authentication

-

Yes

-

Yes

-

No

-

One-way authentication + Password authentication

-

Two-way authentication + Password authentication

-

Yes

-

Yes

-

Yes

-

Security mode + HTTPS

-

One-way authentication + Password authentication

-

Two-way authentication + Password authentication

-

Yes

-

Yes

-

Yes

-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 2 Configuration for interconnecting different clusters with ELB

Security Mode

-

Service Form Provided by ELB for External Systems

-

ELB Listener

-

Backend Server Group

-

Frontend Protocol

-

Port

-

SSL Parsing Mode

-

Backend Protocol

-

Health Check Port

-

Health Check Path

-

Non-security

-

No authentication

-

HTTP

-

9200

-

No authentication

-

HTTP

-

9200

-

/

-

One-way authentication

-

HTTPS

-

9200

-

One-way authentication

-

HTTP

-

9200

-

Two-way authentication

-

HTTPS

-

9200

-

Two-way authentication

-

HTTP

-

9200

-

Security mode + HTTP

-

Password authentication

-

HTTP

-

9200

-

No authentication

-

HTTP

-

9200

-

/_opendistro/_security/health

-

One-way authentication + Password authentication

-

HTTPS

-

9200

-

One-way authentication

-

HTTP

-

9200

-

Two-way authentication + Password authentication

-

HTTPS

-

9200

-

Two-way authentication

-

HTTP

-

9200

-

Security mode + HTTPS

-

One-way authentication + Password authentication

-

HTTPS

-

9200

-

One-way authentication

-

HTTPS

-

9200

-

Two-way authentication + Password authentication

-

HTTPS

-

9200

-

Two-way authentication

-

HTTPS

-

9200

-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0182.html b/docs/css/umn/css_01_0182.html deleted file mode 100644 index b35142a7..00000000 --- a/docs/css/umn/css_01_0182.html +++ /dev/null @@ -1,397 +0,0 @@ - - -

Connecting to a Dedicated Load Balancer

-

This section describes how to connect a CSS cluster to a dedicated load balancer.

-

(Optional) Preparing a Self-signed Certificate

If the target ELB listener uses the HTTP protocol, skip this step.

-

Prepare and upload a self-signed certificate.

-

You are advised to use a certificate purchased in Cloud Certificate Manager (CCM) or issued by an authoritative organization.

-
-
  1. Log in to a Linux client where the OpenSSL tool and JDK are installed.
  2. Run the following commands to create a self-signed certificate:
     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
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    mkdir ca
    -mkdir server
    -mkdir client
    -
    -#Use OpenSSL to create a CA certificate.
    -cd ca
    -#Create the OpenSSL configuration file ca_cert.conf for the CA certificate.
    -cat >ca_cert.conf <<EOF
    -[ req ]
    -distinguished_name     = req_distinguished_name
    -prompt                 = no
    -
    -[ req_distinguished_name ]
    - O                      = ELB
    -EOF
    -#Create private key file ca.key for the CA certificate.
    -openssl genrsa -out ca.key 2048
    -#Create the CSR file ca.csr for the CA certificate.
    -openssl req -out ca.csr -key ca.key -new -config ./ca_cert.conf
    -#Create a self-signed CA certificate ca.crt.
    -openssl x509 -req -in ca.csr -out ca.crt -sha1 -days 5000 -signkey ca.key
    -#Convert the CA certificate format to p12.
    -openssl pkcs12 -export -clcerts -in ca.crt -inkey ca.key -out ca.p12
    -#Convert the CA certificate format to JKS.
    -keytool -importkeystore -srckeystore ca.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore ca.jks
    -
    -
    -#Use the CA certificate to issue a server certificate.
    -cd ../server
    -#Create the OpenSSL configuration file server_cert.conf for the server certificate. Change the CN field to the domain name or IP address of the server as required.
    -cat >server_cert.conf <<EOF
    -[ req ]
    -distinguished_name     = req_distinguished_name
    -prompt                 = no
    -
    -[ req_distinguished_name ]
    - O                      = ELB
    - CN                     = 127.0.0.1
    -EOF
    -#Create the private key file server.key for the server certificate.
    -openssl genrsa -out server.key 2048
    -#Create the CSR request file server.csr for the server certificate.
    -openssl req -out server.csr -key server.key -new -config ./server_cert.conf
    -#Use the CA certificate to issue the server certificate server.crt.
    -openssl x509 -req -in server.csr -out server.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key
    -#Convert the server certificate format to p12.
    -openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
    -#Convert the service certificate format to JKS.
    -keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore server.jks
    -
    -
    -#Use the CA certificate to issue a client certificate.
    -cd ../client
    -#Create the OpenSSL configuration file client_cert.conf for the client certificate. Change the CN field to the domain name or IP address of the server as required.
    -cat >client_cert.conf <<EOF
    -[ req ]
    -distinguished_name     = req_distinguished_name
    -prompt                 = no
    -
    -[ req_distinguished_name ]
    -O                      = ELB
    -CN                     = 127.0.0.1
    -EOF
    -#Create private key client.key for the client certificate.
    -openssl genrsa -out client.key 2048
    -#Create the CSR file client.csr for the client certificate.
    -openssl req -out client.csr -key client.key -new -config ./client_cert.conf
    -#Use the CA certificate to issue the client certificate client.crt.
    -openssl x509 -req -in client.csr -out client.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key
    -#Convert the client certificate to a p12 file that can be identified by the browser.
    -openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
    -#Convert the client certificate format to JKS.
    -keytool -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore client.jks
    -
    - -
    -
  3. Upload the self-signed certificate. For details, see the section "Configuring the Server Certificate and Private Key" in Elastic Load Balance User GuideConfiguring the Server Certificate and Private Key.
-
-

Creating a Dedicated Load Balancer

  1. Log in to the ELB management console.
  2. Create a dedicated load balancer. For details, see Creating a Dedicated Load Balancer. Table 1 describes the parameters required for connecting a CSS cluster with a dedicated load balancer. -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Parameters for interconnecting a CSS cluster with a dedicated load balancer

    Parameter

    -

    Description

    -

    Example

    -

    Type

    -

    Load balancer type. Select Dedicated.

    -

    Dedicated

    -

    Billing Mode

    -

    Billing mode of the dedicated load balancer.

    -

    Pay-per-use

    -

    Region

    -

    Region where the CSS cluster is located.

    -

    -

    -

    IP as Backend Servers

    -

    A CSS cluster can be connected only after the cross-VPC backend is enabled.

    -

    Enabled

    -

    Network Type

    -

    Type of the network used by the load balancer to provide services for external systems.

    -

    Private IPv4 network

    -

    VPC

    -

    VPC where the load balancer works. This parameter is mandatory no matter which network type is selected.

    -

    Select the VPC of the CSS cluster

    -

    -

    -

    Subnet

    -

    Subnet where the load balancer is to be created. This parameter is mandatory no matter which network type is selected.

    -

    Select the subnet of the CSS cluster

    -

    -

    -

    Specifications

    -

    You are advised to select Application load balancing (HTTP/HTTPS), which provides better functions and performance.

    -

    Application load balancing (HTTP/HTTPS)

    -

    Small I

    -
    -
    -
-
-

Interconnecting with a Load Balancer

A cluster in security mode with HTTPS access enabled does not support HTTP protocol authentication. If you need to enable HTTP protocol authentication, disable the security mode of the cluster.

-

Before changing the security mode, disable load balancing. After the security mode is changed, enable load balancing.

-
-
  1. Log in to the CSS management console.
  2. On the Clusters page, select the cluster you want to connect to the load balancer and click the cluster name. The cluster basic information page is displayed.
  3. In the navigation pane, choose Load Balancing. Toggle on the load balancing switch and configure basic load balancing information.
    • Load Balancer: Select a created load balancer. You can also click Create Load Balancer to create one.
    • Agency: Select an agency name. If no agency is available, click Create Agency to create one. The selected agency must have the ELB Administrator and ELB FullAccess permissions.
      Figure 1 Enabling load balancing
      -
    -
  4. Click OK. The listener configuration page is displayed.
    Figure 2 Creating a listener
    -
  5. In the Listener Configuration area, click to configure listener information.
    Figure 3 Configuring a listener
    - -
    - - - - - - - - - - - - - - - - - - - -
    Table 2 Listener configuration information

    Parameter

    -

    Description

    -

    Frontend Protocol

    -

    The protocol used by the client and listener to distribute traffic.

    -

    Select a protocol as required.

    -

    Frontend Port

    -

    The port used by the client and listener to distribute traffic.

    -

    For example, 9200. You need to specify this parameter as required.

    -

    SSL Authentication

    -

    Authentication mode for the client to access the server.

    -

    Select a parsing mode as required.

    -

    Server Certificate

    -

    The server certificate is used for SSL handshake negotiation. The certificate content and private key must be provided.

    -

    When SSL Authentication is set to Two-way authentication, this parameter is mandatory.

    -

    CA Certificate

    -

    Also called client CA public key certificate. It is used to verify the issuer of a client certificate.

    -

    When the HTTPS two-way authentication is enabled, an HTTPS connection can be established only when the client can provide the certificate issued by a specified CA.

    -

    This parameter is mandatory only when the Frontend Protocol is set to HTTPS.

    -
    -
    -
  6. (Optional) In the Connection Mode area, you can click Settings next to Access Control to configure the IP addresses or network segments that are allowed to access the system. If you do not set the IP addresses or network segments, all IP addresses are allowed to access the system by default.
    Figure 4 Configuring access control
    -
-
In the Health Check area, you can view the health check result of each node IP address. The following table describes the health check results. -
- - - - - - - - - - -

Health Check Result

-

Description

-

Normal

-

The IP address of the node is properly connected.

-

Abnormal

-

The node IP address is connected and unavailable.

-
-
-
-
-

Accessing a Cluster Using the Curl Command

Run the following commands to check whether the dedicated load balancer can be connected to a cluster.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 3 Commands for accessing different clusters

Security Mode

-

Service Form Provided by ELB for External Systems

-

Curl Command for Accessing a Cluster

-

Non-security

-

No authentication

-
curl  http://IP:9200
-

One-way authentication

-
curl -k --cert ./client.crt --key ./client.key https://IP:9200
-

Two-way authentication

-
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200
-

Security mode + HTTP

-

Password authentication

-
curl  http://IP:9200 -u user:pwd
-

One-way authentication + Password authentication

-
curl -k --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
-

Two-way authentication + Password authentication

-
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
-

Security mode + HTTPS

-

One-way authentication + Password authentication

-
curl -k --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
-

Two-way authentication + Password authentication

-
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
-
-
- -
- - - - - - - - - - - - - -
Table 4 Variables

Variable

-

Description

-

IP

-

ELB IP address

-

user

-

Username for accessing the CSS cluster

-

pwd

-

Password of the user

-
-
-

If the Elasticsearch cluster information is returned, the connection is successful. For example, if a security cluster using the HTTPS protocol is connected to a load balancer using two-way authentication, the information shown in Figure 5 is returned.

-
Figure 5 Accessing a cluster
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0184.html b/docs/css/umn/css_01_0184.html deleted file mode 100644 index cbaeac20..00000000 --- a/docs/css/umn/css_01_0184.html +++ /dev/null @@ -1,20 +0,0 @@ - - -

(Optional) Interconnecting with a Dedicated Load Balancer

-

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0185.html b/docs/css/umn/css_01_0185.html deleted file mode 100644 index 09df6921..00000000 --- a/docs/css/umn/css_01_0185.html +++ /dev/null @@ -1,169 +0,0 @@ - - -

Viewing Basic Information About an Elasticsearch Cluster

-

On the Cluster Information page, you can view the information about a cluster, including the private network address, public IP address, version, and node.

-
  1. Log in to the CSS management console.
  2. Choose Clusters > Elasticsearch. The cluster list is displayed.
  3. Click a cluster name to go to the Cluster Information page and view the basic information about the cluster. -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1 Parameters for configuring basic information

    Type

    -

    Parameter

    -

    Description

    -

    Cluster Information

    -

    Name

    -

    Cluster name. The name can be customized.

    -

    You can click on the right to change the cluster name.

    -

    ID

    -

    Unique ID of a cluster, which is automatically generated by the system.

    -

    Each cluster in the same region has a unique ID.

    -

    Version

    -

    Cluster version information.

    -

    Cluster Status

    -

    Current status of a cluster

    -

    Task Status

    -

    Current task status of a cluster. If no task is in progress, -- is displayed.

    -

    Created

    -

    Time when a cluster was created

    -

    Cluster Storage Capacity (GB)

    -

    Storage capacity of a cluster

    -

    Used Cluster Storage (GB)

    -

    Used storage capacity of a cluster

    -

    Configuration

    -

    Region

    -

    Region where a cluster is located

    -

    AZ

    -

    AZ where a cluster is located

    -

    VPC

    -

    VPC to which the cluster belongs

    -

    Subnet

    -

    Subnet to which the cluster belongs

    -

    Security Group

    -

    Security group to which a cluster belongs.

    -

    To change the security group of a cluster, click Change Security Group on the right.

    -
    NOTICE:

    Before changing the security group, ensure that the port 9200 required for service access has been enabled. Incorrect security group configuration may cause service access failures. Exercise caution when performing this operation.

    -
    -

    Security Mode

    -

    Security mode of a cluster.

    -
    • Enabled: The current cluster is a security cluster.
    • Disabled: The current cluster is a non-security cluster.
    -

    For details about how to change the security mode of a cluster, see Changing the Security Mode.

    -

    Reset Password

    -

    This parameter is displayed only for security clusters.

    -

    Click Reset to change the password of the administrator account admin of the security cluster.

    -
    NOTE:

    Requirements for administrator passwords:

    -
    • The password can contain 8 to 32 characters.
    • The password must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The following special characters are supported: ~!@#$%^&*()-_=+\|[{}];:,<.>/?
    • Do not use the administrator name, or the administrator name spelled backwards.
    • You are advised to change the password periodically.
    -
    -

    Enterprise Project

    -

    Enterprise project to which a cluster belongs.

    -

    You can click the project name to view the basic information about the enterprise project.

    -

    Public IP Address

    -

    Public network access information, which is displayed only for clusters in security mode.

    -
    • For a security cluster with public network access enabled, the configured public network address is displayed. You can use this address to access the security cluster from the public network.
    • For a security cluster with public network access disabled, -- is displayed.
    -

    When using a public IP address to access a cluster, you are advised to enable access control and configure an access whitelist to improve cluster security. For details about how to configure the public network access, see Accessing a Cluster from a Public Network.

    -

    Access Control

    -

    Whether to set access control for a cluster. This parameter is displayed only for clusters with public network access enabled.

    -
    • Enabled: Only IP addresses in the whitelist can access the cluster through the public network.
    • Disabled: Any IP address can access the cluster through the public network.
    -

    Click Set to configure the access control and the whitelist.

    -

    Bandwidth

    -

    The bandwidth for public network access. This parameter is displayed only for clusters with public network access enabled.

    -

    Click Edit to change the bandwidth size.

    -

    HTTPS Access

    -

    Whether to enable the HTTPS access protocol for a cluster.

    -
    • Disabled: The HTTP protocol is used for cluster access.
    • Enabled: The HTTPS protocol is used for cluster access. Only security clusters can enable this function. If HTTPS Access is enabled, you can click Download Certificate to obtain the CER security certificate for accessing the security cluster. Currently, the security certificate cannot be used in the public network environment.
    -

    For details about how to change the access mode of a cluster in security mode, see Switching the Protocol of Security Clusters.

    -

    Private Network Address

    -

    Private IP address and port number of a cluster, which can be used to access the cluster. If the cluster has only one node, the IP address and port number of only one node are displayed, for example, 10.62.179.32:9200. If the cluster has multiple nodes, the IP addresses and port numbers of all nodes are displayed, for example, 10.62.179.32:9200,10.62.179.33:9200.

    -

    Node

    -

    Node Specifications

    -

    Specifications of nodes in a cluster

    -

    Node Storage Type

    -

    Storage capacity and storage type of nodes in a cluster

    -

    Nodes

    -

    Number of nodes in a cluster

    -
    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0187.html b/docs/css/umn/css_01_0187.html deleted file mode 100644 index abeef788..00000000 --- a/docs/css/umn/css_01_0187.html +++ /dev/null @@ -1,153 +0,0 @@ - - -

Enhanced Cold Data Query Performance

-

Context

When you query data on the Discover page of Kibana for the first time, all data needs to be obtained from OBS because there is no cache. If a large number of documents are returned, it takes a long time to obtain the corresponding time fields and file metadata from OBS. To accelerate queries the first time they run on the Discover page, you can cache data locally.

-
-

Prerequisites

This feature is available in Elasticsearch clusters of versions 7.6.2 and 7.10.2 and Opensearch clusters created after February 2023.

-
-

API for Querying Cold Data from Local Cache

This API can be used to query the cold data from local cache.

-

Example request:

-
GET /_frozen_stats/local_cache
-GET /_frozen_stats/local_cache/{nodeId}
-

Response example:

-
{
-   "_nodes" : {
-     "total" : 1,
-     "successful" : 1,
-     "failed" : 0
-   },
-   "cluster_name" : "elasticsearch",
-   "nodes" : {
-     "6by3lPy1R3m55Dcq3liK8Q" : {
-       "name" : "node-1",
-       "transport_address" : "127.0.0.1:9300",
-       "host" : "127.0.0.1",
-       "ip" : "127.0.0.1",
-       "local_cache" : {
-         "get_stats" : {
-           "get_total_count" : 562,                            //Total number of times data was retrieved from the local cold data cache.
-           "get_hit_count" : 562,                              //Total number of hits in the local cold data cache.
-           "get_miss_count" : 0,                               //Total number of local cold data cache misses.
-           "get_total_ns" : 43849200,                          //Total duration for retrieving data from the local cold data cache.
-           "get_avg_ns" : 78023                                //Average duration for retrieving data from the local cold data cache.
-         },
-         "load_stats" : {
-           "load_count" : 2,                                    //Number of times cold data was loaded from the local cache
-           "load_total_ms" : 29,                                //Total duration for loading cold data from the local cache
-           "load_avg_ms" : 14,                                  //Average duration for loading cold data from the local cache
-           "load_fail_count" : 0,                               //Number of failure times for loading cold data from the local cache
-           "load_overflow_count" : 0                            //Number of times the local cold data cache exceeds the cache pool size.
-         },
-         "reload_stats" : {
-           "reload_count" : 0,                                  //Number of times the local cold data cache was regenerated.
-           "reload_total_ms" : 0,                               //Total duration for regenerating the local cold data cache.
-           "reload_avg_ms" : 0,                                 //Average duration for regenerating the local cold data cache.
-           "reload_fail_count" : 0                              //Number of failures in regenerating the local cold data cache.
-         },
-         "init_stats" : {
-           "init_count" : 0,                                     //Number of times the local cold data cache was initialized.
-           "init_total_ms" : 0,                                  //Total duration for initializing the local cold data cache.
-           "init_avg_ms" : 0,                                    //Average duration for initializing the local cold data cache.
-           "init_fail_count" : 0                                 //Number of failures in initializing the local cold data cache.
-         }
-       }
-     }
-   }
- }
-

-
-

Configuring Parameters

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Configuration Item

-

Type

-

Unit

-

Value Range

-

Scope

-

Can Be Dynamically Modified

-

Description

-

low_cost.local_cache.max.capacity

-

Integer

-

-

-

The value ranges from 10 to 5000. The default value is 500.

-

node

-

Yes

-

Maximum number of available cold data caches on a node. Each shard corresponds to a cache object.

-
NOTE:
  • If the heap memory usage remains high, decrease the value.
  • If the value of load_overflow_count keeps increasing rapidly, increase the value.
-
-

index.low_cost.local_cache.threshold

-

Integer

-

%

-

The value ranges from 0 to 100. The default value is 50.

-

index

-

Yes

-

Threshold for enabling the local cache of cold data.

-
NOTE:
  • If the percentage of date fields is less than the value of this parameter, the cold data of the date type will be cached locally. Otherwise, this parameter is not used.
  • If the date fields of the current index occupy most of the data volume of the current index, you are not advised to use this function.
-
-

index.low_cost.local_cache.evict_time

-

String

-

Days

-

The value ranges from 1d to 365d. The default value is 30d.

-

index

-

Yes

-

Wait time before cold data is deleted from local cache. The value is determined based on index.frozen_date (time when the freezing is successful).

-
NOTE:
  • For indexes that have been frozen in old clusters and do not have index.frozen_date specified, the value of this parameter is determined based on the index creation time.
  • You are advised to adjust the deletion time based on the disk usage to avoid high disk usage.
-
-
-
-
-

Modifying Parameters

  • Run the following command to modify low_cost.local_cache.max.capacity:
    PUT _cluster/settings
    - {
    -   "persistent": {
    -     "low_cost.local_cache.max.capacity":1000
    -   }
    - }
    -
  • Run the following command to modify index.low_cost.local_cache.threshold:
    PUT es_write_pref2-00000000021/_settings
    - {
    - "index.low_cost.local_cache.threshold":20
    - }
    -
  • Run the following command to modify index.low_cost.local_cache.evict_time:
    PUT es_write_pref2-00000000021/_settings
    - {
    - "index.low_cost.local_cache.evict_time":"7d"
    - }
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0188.html b/docs/css/umn/css_01_0188.html deleted file mode 100644 index 06779de3..00000000 --- a/docs/css/umn/css_01_0188.html +++ /dev/null @@ -1,156 +0,0 @@ - - -

Deploying a Cross-AZ Cluster

-

To prevent data loss and minimize the cluster downtime in case of service interruption, CSS supports cross-AZ cluster deployment. When creating a cluster, you can select two or three AZs in the same region. The system will automatically allocate nodes to these AZs.

-

Allocating Nodes

If you select two or three AZs when creating a cluster, CSS automatically enables the cross-AZ HA function and properly allocates nodes to different AZs. Table 1 describes how the nodes are allocated.

-
  • When creating a cluster, ensure that the number of selected nodes is no less than the number of AZs. Otherwise, cross-AZ deployment is not supported.
  • If you enable master nodes when deploying a cross-AZ cluster, the master nodes will also be distributed to different AZs.
  • The node quantity difference between any two AZs is no more than one.
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Number of nodes and AZ distribution

Nodes

-

Single AZ

-

Two AZs

-

Three AZs

-

AZ1

-

AZ1

-

AZ2

-

AZ1

-

AZ2

-

AZ3

-

1

-

1

-

Not supported

-

Not supported

-

2

-

2

-

1

-

1

-

Not supported

-

3

-

3

-

2

-

1

-

1

-

1

-

1

-

4

-

4

-

2

-

2

-

2

-

1

-

1

-

...

-

...

-

...

-

...

-

...

-

...

-

...

-
-
-
-

Setting Replicas

Setting replicas enables clusters effectively use the HA capability of AZs.

-
  • In two-AZ deployment, if one AZ becomes unavailable, the other AZ continues to provide services. In this case, at least one replica is required. Elasticsearch has one replica by default. You can retain the default value if you do not require higher read performance.
  • In three-AZ deployment, if one AZ becomes unavailable, the other AZs continue to provide services. In this case, at least one replica is required. Elasticsearch has one replica by default. If you need more replicas to improve the cluster's ability to handle queries, modify settings to change the number of replicas.

    You can run the following command to modify the number of index replicas:

    -

    curl -XPUT http://ip:9200/{index_name}/_settings -d '{"number_of_replicas":2}'

    -

    Alternatively, run the following command to specify the number of replicas in the template:

    -

    curl -XPUT http://ip:9200/ _template/templatename -d '{ "template": "*", "settings": {"number_of_replicas": 2}}'

    -
-
  • ip: private network address
  • index_name: index name
  • number_of_replicas: number of replicas after modification. The value in the preceding command indicates that two replicas are required.
-
-
-

Possible Service Interruptions

The following table describes the possible service interruptions when an AZ of a two- or three-AZ cluster is faulty.

- -
- - - - - - - - - - - - - - - - - - - - - -
Table 2 Possible service interruptions

AZs

-

Master Nodes

-

Service Interruption Analysis

-

2

-

0

-
  • When the number of nodes is an even number:
    • If half of data nodes are faulty, replace one node in the faulty AZ before you select the master node.
    -
  • When the number of nodes is an odd number:
    • If the faulty AZ contains one more node than the normal AZ, you need to replace one node in the faulty AZ before you select the master node. For details about how to replace nodes, contact technical support.
    • If the faulty AZ contains one less node than the normal AZ, services will not be interrupted and you can select the master node.
    -
-

2

-

3

-

There is a 50% possibility for service interruption. When two dedicated master nodes are allocated to one AZ and another master node is allocated to the other AZ:

-
  • If service interruption happens in the AZ with one master node, you can select a master node from the AZ that has two dedicated master nodes.
  • If service interruption happens in the AZ with two dedicated master nodes, you have no choice in the remaining AZ, because it has only one dedicated master node. In this case, services will be interrupted and you need to contact technical support.
-

3

-

0

-

If you configure four nodes in three AZs, each AZ will have at least one node. If the AZ with two nodes is faulty, the services will be interrupted. You are not advised to configure four nodes when selecting three AZs.

-

Generally, service interruption will not occur.

-

3

-

3

-

Service interruption does not occur.

-
-
-
-
- diff --git a/docs/css/umn/css_01_0189.html b/docs/css/umn/css_01_0189.html deleted file mode 100644 index a94e0e49..00000000 --- a/docs/css/umn/css_01_0189.html +++ /dev/null @@ -1,36 +0,0 @@ - - -

Clusters in Security Mode

-

When creating an Elasticsearch cluster, you can enable the security mode for it. Identity authentication is required when users access a security cluster. You can also authorize and encrypt security clusters.

-

Identity Verification

To access a security cluster, you need to enter the username and password. The identity verification is required for the following two types of users:

-
  • Administrator: The default administrator username is admin, and the password is the one specified during cluster creation.
  • Users: Enter the username and password created through Kibana.
-
-

Authorization

On the Kibana console, click Security to control user permissions in Elasticsearch clusters. You can configure hierarchical user permissions by cluster, index, document, and field. For details, see Creating a User and Granting Permissions by Using Kibana.

-

You can add or delete users, and map users to different roles for permissions control.

-
Figure 1 Configuring users
-

You can use role mapping to configure roles and map a user, backend role, and host name to a role.

-
Figure 2 Role mapping
-

You can set permissions for each role to access clusters, indexes and documents and assign Kibana tenants different roles.

-
Figure 3 Configuring role permissions
-

You can set action groups, assign the groups to roles, and configure the roles' permission for accessing indexes and documents.

-
Figure 4 Configuring action groups
-

You can view the parameters of authentication and authorization for the current cluster. You can also run the securityadmin command to modify the configuration.

-
Figure 5 Viewing cluster parameters
-

You can also clear the security cache.

-
Figure 6 Clearing the security cache
-
-

Encryption

When key data is transferred between nodes or through the HTTP protocol, SSL/TLS encryption is used to ensure data security.

-

You can perform the preceding functions on Kibana, using .yml files (not recommended), or by calling RESTful APIs. For more information about the security mode, see Security.

-
-

Resetting the Administrator Password

If you want to change the administrator password of a security cluster or you have forgotten the password, reset the password.

-
  1. On the Clusters page, locate the target cluster whose password you want to reset and click the cluster name. The Cluster Information page is displayed.
  2. In the Configuration area, click Reset next to Reset Password.
    • The password can contain 8 to 32 characters.
    • The password must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The following special characters are supported: ~!@#$%^&*()-_=+\|[{}];:,<.>/?
    • Do not use the administrator name, or the administrator name spelled backwards.
    • You are advised to change the password periodically.
    -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0190.html b/docs/css/umn/css_01_0190.html deleted file mode 100644 index 83f0abce..00000000 --- a/docs/css/umn/css_01_0190.html +++ /dev/null @@ -1,17 +0,0 @@ - - -

Accessing an Elasticsearch Cluster

-

Elasticsearch clusters have built-in Kibana and Cerebro components. You can quickly access an Elasticsearch cluster through Kibana and Cerebro.

-

Access a Cluster Through Kibana

  1. Log in to the CSS management console.
  2. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column to go to the Kibana login page.
    • Non-security cluster: The Kibana console is displayed.
    • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the one specified during cluster creation.
    -
  3. After the login is successful, you can access clusters through Kibana.
-
-

Accessing a Cluster Through Cerebro

  1. Log in to the CSS management console.
  2. On the Clusters page, locate the target cluster and click More > Cerebro in the Operation column to go to the Cerebro login page.
    • Non-security cluster: Click the cluster name on the Cerebro login page to go to the Cerebro console.
    • Security cluster: Click the cluster name on the Cerebro login page, enter the username and password, and click Authenticate to go to the Cerebro console. The default username is admin and the password is the one specified during cluster creation.
    -
  3. After the login is successful, you can access clusters through Cerebro.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0191.html b/docs/css/umn/css_01_0191.html deleted file mode 100644 index 8f65309d..00000000 --- a/docs/css/umn/css_01_0191.html +++ /dev/null @@ -1,28 +0,0 @@ - - -

Flow Control 2.0

-

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0192.html b/docs/css/umn/css_01_0192.html deleted file mode 100644 index 69bb327c..00000000 --- a/docs/css/umn/css_01_0192.html +++ /dev/null @@ -1,17 +0,0 @@ - - -

Context

-

Feature Description

CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a node. You can also configure backpressure based on client traffic in the node memory and block access in one click. CSS can also collect statistics on node access IP addresses and URIs. Each function has an independent control switch, which is disabled by default. To restore default values of parameters, set them to null.

-

After the client write traffic backpressure and control is enabled, large requests will be rejected when too much node heap memory has been occupied. This function prevents nodes from being suspended and reduces the risk of node unavailability.

-
  • HTTP/HTTPS flow control:
    • You can control client IP address access by setting IP addresses and subnets in HTTP/HTTPS blacklist or whitelist. If an IP address is in the blacklist, the client is disconnected and all its request are rejected. Whitelist rules take precedence over blacklist rules. If a client IP address exists in both the blacklist and whitelist, the client request will not be rejected.
    • HTTP/HTTPS concurrent connection flow control limits the total number of HTTP connections to a node per second.
    • HTTP/HTTPS new connection flow control limits the number of new connections to a node.
    -
  • Memory flow control limits the write traffic based on the node heap memory. You can back pressure requests to the client, trigger resource recycling as much as possible, and then accept requests based on the available heap memory.
  • Request sampling can record the access of client IP addresses and the type of requests from the client. Based on the statistics, you can identify the access traffic of client IP addresses and analyze the client write and query requests.
  • One-click access blocking can block all the access traffic of a node, excluding the traffic from Kibana and CSS O&M and monitoring APIs.
  • Flow control provides an independent API for viewing traffic statistics and records the number of current client connections and client backpressure connections. You can evaluate the flow control threshold and analyze the cluster loads based on the statistics.
  • Access logs record the URLs and bodies of HTTP/HTTPS requests received by nodes within a period of time. You can analyze the current traffic pressure based on the access logs.
-
-

Constraints

  • Currently, only versions 7.6.2 and 7.10.2 support the flow control feature.
  • Clusters of versions 7.6.2 and 7.10.2 created after January 2023 support only traffic control version 2.0. Clusters created before January 2023 support only traffic control version 1.0.
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0193.html b/docs/css/umn/css_01_0193.html deleted file mode 100644 index a032ce69..00000000 --- a/docs/css/umn/css_01_0193.html +++ /dev/null @@ -1,99 +0,0 @@ - - -

HTTP/HTTPS Flow Control

-

Context

You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster. The command parameters are as follows.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 HTTP/HTTPS flow control parameters

Parameter

-

Type

-

Description

-

flowcontrol.http.enabled

-

Boolean

-

Whether to enable HTTP/HTTPS flow control. This function is disabled by default. Enabling it may affect node access performance.

-

Value: true or false

-

Default value: false

-

flowcontrol.http.allow

-

List<String>

-

IP address whitelist.

-

It can contain multiple IP addresses and masks, or an IP address list. Use commas (,) to separate multiple values. Example: xx.xx.xx.xx/24,xx.xx.xx.xx/24, or xx.xx.xx.xx.xx,xx.xx.xx.

-

The default value is null.

-

flowcontrol.http.deny

-

List<String>

-

IP address blacklist.

-

Multiple IP addresses and masks or an IP address list can be configured. Use commas (,) to separate multiple IP addresses and masks.

-

The default value is null.

-

flowcontrol.http.concurrent

-

Integer

-

Maximum concurrent HTTP/HTTPS connections.

-

Default value: Number of available cores on a node x 400

-

flowcontrol.http.newconnect

-

Integer

-

Maximum new connections that can be created for HTTP/HTTPS requests per second.

-

Default value: Number of available cores on a node x 200

-

flowcontrol.http.warmup_period

-

Integer

-

Time required for the HTTP/HTTPS connection setup speed to reach the maximum. If flowcontrol.http.newconnect is set to 100 and flowcontrol.http.warmup_period is set to 5000ms, it indicates the system can set up 100 connections per second in 5 seconds.

-

Value range: 0–10000

-

Unit: ms

-

Default value: 0

-
-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable HTTP/HTTPS flow control.
    • Enabling HTTP/HTTPS flow control for a node
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.http.enabled": true,
      -    "flowcontrol.http.allow": ["192.168.0.1/24", "192.168.2.1/24"],
      -    "flowcontrol.http.deny": "192.168.1.1/24",
      -    "flowcontrol.http.concurrent": 1000,
      -    "flowcontrol.http.newconnect": 1000,
      -    "flowcontrol.http.warmup_period": 0
      -  }
      -}
      -

      If all parameters are set to null, they will be restored to default values.

      -
      -
    • Disabling HTTP/HTTPS flow control for a node
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.http.enabled": false
      -  }
      -}
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0194.html b/docs/css/umn/css_01_0194.html deleted file mode 100644 index 20bc50b7..00000000 --- a/docs/css/umn/css_01_0194.html +++ /dev/null @@ -1,104 +0,0 @@ - - -

Memory Flow Control

-

Context

Elasticsearch provides a circuit breaker, which will terminate requests or return the error code 429 if the memory usage exceeds its threshold. However, the circuit breaker rejects a request only after the node reads the entire request, which occupies heap memory. To prevent a request from being fully received by a node before the request is rejected, you can control the client traffic based on the real-time status of the node heap memory.

-
-

Configuring Parameters

The following table describes memory flow control parameters.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Memory flow control parameters

Parameter

-

Type

-

Description

-

flowcontrol.memory.enabled

-

Boolean

-

Whether to enable memory flow control. After this function is enabled, the memory usage is continuously monitored. The value can be:

-
  • true
  • false (default value)
-

flowcontrol.memory.heap_limit

-

String

-

Maximum global heap memory usage of a node. If the value of this parameter is exceeded, traffic backpressure is performed.

-

Value range: 10%–100%

-

Default value: 90%

-

flowcontrol.holding.in_flight_factor

-

Float

-

Backpressure release factor. The principle is similar to that of the circuit breaker parameter network.breaker.inflight_requests.overhead. When the memory usage reaches the limit, a larger value indicates stronger backpressure. The write traffic will be limited.

-

Value range: ≥ 0.5

-

Default value: 1.0

-

flowcontrol.holding.max

-

TimeValue

-

Maximum delay of each request. If the delay exceeds the value of this parameter, you can disconnect the request backpressure or disconnect the request link. For details, see the configuration of flowcontrol.holding.max_strategy.

-

Value range: ≥ 15s

-

Default value: 60s

-

flowcontrol.holding.max_strategy

-

String

-

Policy after the maximum delay time is exceeded. The value can be:

-
  • keep (default value): If the heap memory is still high, continue the backpressure. The server determines when to execute the request based on the real-time memory.
  • soft: The requests will be executed even if the heap memory is still high. The inFlight circuit breaker will determine whether to execute or reject the requests.
  • hard: If the heap memory is still high, requests will be discarded and the client connection of the requests will be disconnected.
-

flowcontrol.memory.once_free_max

-

String

-

Maximum memory that can be opened at a time for a suspended request queue. This parameter is used to prevent a cluster from being entirely suspended due to temporary low memory under high pressure.

-

Value range: 1 to 50

-

Default value: 10%

-

flowcontrol.memory.nudges_gc

-

Boolean

-

Whether to trigger garbage collection to ensure write stability when the write pressure is too high. (The backpressure connection pool is checked every second. The write pressure is regarded high if all the existing connections are blocked and new write requests cannot be released.) The value can be:

-
  • true (default value)
  • false
-
-
-
  • flowcontrol.memory.enabled and flowcontrol.memory.heap_limit are the most important parameters. enabled indicates the memory flow control switch, and heap_limit indicates the heap memory threshold of a node.
  • The default value 90% of flowcontrol.memory.heap_limit is a conservative threshold. When the heap memory usage is greater than 90%, the system stops reading large requests that exceed 64 KB from the client until the heap memory decreases. If the heap memory decreases to 85%, the maximum client data that can be read is 5% of the maximum heap memory. If the heap memory usage has been higher than 90% for a long time, client connection requests cannot be read. In this case, the GC algorithm is triggered to perform garbage collection until the heap memory usage is lower than the threshold.
  • Generally, you can set the flowcontrol.memory.heap_limit threshold to 80% or less to ensure that the node has certain heap memory for operations besides data writing, such as Elasticsearch query and segment merge.
-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable memory flow control.
    • Enable memory flow control
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.memory.enabled": true,
      -    "flowcontrol.memory.heap_limit": "80%"
      -  }
      -}
      -
    • Disable cluster memory flow control
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.memory.enabled": false
      -  }
      -}
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0195.html b/docs/css/umn/css_01_0195.html deleted file mode 100644 index 2938d09f..00000000 --- a/docs/css/umn/css_01_0195.html +++ /dev/null @@ -1,51 +0,0 @@ - - -

Request Sampling

-

Context

Request sampling can record the access of client IP addresses and the type of requests from the client. Based on the statistics, you can identify the access traffic of client IP addresses and analyze the client write and query requests.

- -
- - - - - - - - - - - - - - - - - -
Table 1 Request statistics parameters

Parameter

-

Type

-

Description

-

flowcontrol.log.access.enabled

-

Boolean

-

Whether to collect statistics on the IP addresses of clients that accessed the ES cluster recently and the number of requests. The value can be:

-
  • true
  • false (default value)
-

flowcontrol.log.access.count

-

Integer

-

Number of client IP addresses that accessed a cluster recently.

-

Value range: 0–100

-

Default value: 10

-

flowcontrol.log.file.enabled

-

Boolean

-

Whether to record the log details of each request to the background log file. The value can be:

-
  • true
  • false (default value)
-
-
-
  • IP address statistics switches control whether to collect request type statistics and whether to enable logging.
  • flowcontrol.log.access.enabled controls whether to collect statistics on client requests, including bulk write, search, and msearch requests.
  • flowcontrol.log.file.enabled is the log access switch. Request details can be directly recorded in log files for audit analysis.
-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0196.html b/docs/css/umn/css_01_0196.html deleted file mode 100644 index 7712650a..00000000 --- a/docs/css/umn/css_01_0196.html +++ /dev/null @@ -1,26 +0,0 @@ - - -

One-click Traffic Blocking

-

You can block all connections in one click, except the connections that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.

-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable one-click traffic blocking.
    • Enable one-click traffic blocking
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.break.enabled": true
      -  }
      -}
      -
    • Disable one-click traffic blocking
      PUT /_cluster/settings
      -{
      -  "persistent": {
      -    "flowcontrol.break.enabled": false
      -  }
      -}
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0198.html b/docs/css/umn/css_01_0198.html deleted file mode 100644 index d5bcce2d..00000000 --- a/docs/css/umn/css_01_0198.html +++ /dev/null @@ -1,107 +0,0 @@ - - -

Access Statistics and Traffic Control Information Query

-

Flow control can be implemented via an independent API.

-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run the commands to query traffic control information.
    • Check the traffic control status of all nodes.
      GET /_nodes/stats/filter/v2
      -
    • View traffic control details of all nodes.
      GET /_nodes/stats/filter/v2?detail
      -
    • View the traffic control status of a specific node.
      GET /_nodes/{nodeId}/stats/filter/v2
      -

      {nodeId} indicates the ID of the node you want to check.

      -

      Example response:

      -
      {
      -  "_nodes" : {
      -    "total" : 1,
      -    "successful" : 1,
      -    "failed" : 0
      -  },
      -  "cluster_name" : "css-xxxx",
      -  "nodes" : {
      -    "d3qnVIpPTtSoadkV0LQEkA" : {
      -      "name" : "css-xxxx-ess-esn-1-1",
      -      "host" : "192.168.x.x",
      -      "timestamp" : 1672236425112,
      -      "flow_control" : {
      -        "http" : {
      -          "current_connect" : 52,
      -          "rejected_concurrent" : 0,
      -          "rejected_rate" : 0,
      -          "rejected_black" : 0,
      -          "rejected_breaker" : 0
      -        },
      -        "access_items" : [
      -          {
      -            "remote_address" : "10.0.0.x",
      -            "search_count" : 0,
      -            "bulk_count" : 0,
      -            "other_count" : 4
      -          }
      -        ],
      -        "holding_requests" : 0
      -      }
      -    }
      -  }
      -}
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Table 1 Response parameters

      Parameter

      -

      Description

      -

      current_connect

      -

      Number of HTTP connections of a node, which is recorded even if flow control is disabled. This value is equal to the current_open value of GET /_nodes/stats/http API. It includes the current client connections of nodes.

      -

      rejected_concurrent

      -

      Number of concurrent connections rejected during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

      -

      rejected_rate

      -

      Number of new connections rejected during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

      -

      rejected_black

      -

      Number of requests rejected based on the blacklist during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

      -

      rejected_breaker

      -

      Number of rejected new connections after one-click traffic blocking is enabled.

      -

      remote_address

      -

      IP addresses and the number of requests.

      -

      search_count

      -

      Number of times that a client accessed a database using _search and _msearch.

      -

      bulk_count

      -

      Number of times that a client accessed a database using _bulk.

      -

      other_count

      -

      Number of times that a client accessed a database using other requests.

      -
      -
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0199.html b/docs/css/umn/css_01_0199.html deleted file mode 100644 index ac53f6b5..00000000 --- a/docs/css/umn/css_01_0199.html +++ /dev/null @@ -1,159 +0,0 @@ - - -

Temporary Access Statistics Logs

-

Context

You can check access logs in either of the following ways:

-
  • Enable and check access logs via an independent API. Configure the API parameters to record the access log time and size. The access log content is returned through a REST API.
  • Print access logs. Your access logs are printed as files in backend logs. To enable this method, set the flowcontrol.log.file.enabled configuration item in 16.5.4.
-

The following table describes access log parameters.

- -
- - - - - - - - - - - - - -
Table 1 Access log parameters

Parameter

-

Type

-

Description

-

duration_limit

-

String

-

Duration recorded in an access log.

-

Value range: 10 to 120

-

Unit: s

-

Default value: 30

-

capacity_limit

-

String

-

Size of an access log. After access logging is enabled, the size of recorded requests is checked. If the size exceeds the value of this parameter, the access logging stops.

-

Value range: 1 to 5

-

Unit: MB

-

Default value: 1

-
-
-

Access logging stops if either duration_limit or capacity_limit reaches the threshold.

-
-
-

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable access logs.
    • Enable access logs for all nodes in a cluster.
      PUT /_access_log?duration_limit=30s&capacity_limit=1mb
      -
    • Enable access logs for a node in a cluster.
      PUT /_access_log/{nodeId}?duration_limit=30s&capacity_limit=1mb
      -

      {nodeId} indicates the ID of the node where you want to enable access logs.

      -
    -
  4. View access logs.
    • Check the access logs of all nodes in a cluster.
      GET /_access_log
      -
    • Check the access logs of a node in a cluster.
      GET /_access_log/{nodeId}
      -

      {nodeId} indicates the ID of the node where you want to enable access logs.

      -
      Example response:
      {
      -  "_nodes" : {
      -    "total" : 1,
      -    "successful" : 1,
      -    "failed" : 0
      -  },
      -  "cluster_name" : "css-flowcontroller",
      -  "nodes" : {
      -    "8x-ZHu-wTemBQwpcGivFKg" : {
      -      "name" : "css-flowcontroller-ess-esn-1-1",
      -      "host" : "10.0.0.98",
      -      "count" : 2,
      -      "access" : [
      -        {
      -          "time" : "2021-02-23 02:09:50",
      -          "remote_address" : "/10.0.0.98:28191",
      -          "url" : "/_access/security/log?pretty",
      -          "method" : "GET",
      -          "content" : ""
      -        },
      -        {
      -          "time" : "2021-02-23 02:09:52",
      -          "remote_address" : "/10.0.0.98:28193",
      -          "url" : "/_access/security/log?pretty",
      -          "method" : "GET",
      -          "content" : ""
      -        }
      -      ]
      -    }
      -  }
      -}
      - -
      - - - - - - - - - - - - - - - - -
      Table 2 Response parameters

      Parameter

      -

      Description

      -

      name

      -

      Node name

      -

      host

      -

      Node IP address

      -

      count

      -

      Number of node access requests in a statistical period

      -

      access

      -

      Details about node access requests in a statistical period. For details, see Table 3.

      -
      -
      -
      - -
      - - - - - - - - - - - - - - - - - - - -
      Table 3 access

      Parameter

      -

      Description

      -

      time

      -

      Request time

      -

      remote_address

      -

      Source IP address and port number of the request

      -

      url

      -

      Original URL of the request

      -

      method

      -

      Method corresponding to the request path

      -

      content

      -

      Request content

      -
      -
      -
    -
  5. Run the following commands to delete access logs.
    • Delete access logs of all nodes in a cluster.
      DELETE /_access_log
      -
    • Delete access logs of a specified node in a cluster.
      DELETE /_access_log/{nodeId}
      -

      {nodeId} indicates the ID of the node where you want to enable access logs.

      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0200.html b/docs/css/umn/css_01_0200.html deleted file mode 100644 index 6a56de32..00000000 --- a/docs/css/umn/css_01_0200.html +++ /dev/null @@ -1,17 +0,0 @@ - - -

Flow Control

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0201.html b/docs/css/umn/css_01_0201.html deleted file mode 100644 index e1f93db0..00000000 --- a/docs/css/umn/css_01_0201.html +++ /dev/null @@ -1,70 +0,0 @@ - - -

Changing AZs

-

CSS supports cross-AZ deployment. You can add an AZ to obtain more resources or improve cluster availability, and can migrate your current AZ to one with higher specifications. This section describes how to add or migrate your AZs.

-

Description

You can Add AZ or Migrate AZ.
  • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster to improve cluster availability.
  • Migrate AZ: Completely migrate data from the current AZ to another AZ that has sufficient resources.
-
-
-

Prerequisites

  • Ensure that an AZ with sufficient resources exists.
  • The target cluster is available and has no tasks in progress.
  • Make sure that no non-standard operations have been performed in the cluster. If you have made non-standard modifications, such as modifying return routes, system parameters, and Kibana configurations, these modifications will be lost after the AZ change and your services may be affected.
-
-

Constraints

  • To ensure service continuity, the total number of data nodes and cold data nodes in a cluster must be greater than or equal to 3.
  • During the change, nodes are brought offline one by one and then new nodes are created. Ensure that the disk capacity of other nodes can store all the data of the node after a single node is brought offline.
  • To prevent backup allocation failures after a node is brought offline during the change, ensure that the maximum number of primary and standby index shards of an index can be allocated to the remaining data nodes and cold data nodes. That is, the maximum number of primary and standby shards of an index plus 1 is less than or equal to the total number of data nodes and cold data nodes in the current cluster.
  • You are advised to back up data before the change to prevent data loss caused by upgrade faults.
  • Before a change completes, some nodes may have been moved to a new AZ. In this case, the AZs before and after the change are both displayed. After the change succeeds, the new AZs and their nodes will be displayed properly.
  • When adding AZs, the current AZ must be retained in the change. When adding one or two AZs to a single-AZ cluster, you must change AZs for all nodes at the same time. When adding an AZ to a dual-AZ cluster, you can change AZs for a single type of nodes or all nodes in a cluster at a time. For example, in a cluster using the dual-AZ architecture, you can use the three-AZ architecture for master nodes alone. During HA modification, the nodes with the smallest configurations are modified to rebuild the cluster. After the HA modification is complete, the YML configuration of the nodes that are not modified is also updated. You need to restart the cluster to make the modification take effect.
  • When migrating an AZ, you can select only one target AZ. You can migrate AZs for a single type of nodes or all nodes in a cluster at a time. For example, in a cluster with two AZs, you can migrate the AZ of the master node to the other AZ. After adding AZs, you need to restart the cluster to make the modification take effect.
-
-

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. Click the Change AZ tab.
  5. On the Change AZ page, set parameters. -
    - - - - - - - - - - - - - - - - - - - -
    Table 1 Parameters for changing AZs

    Parameter

    -

    Description

    -

    Operation Type

    -
    • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster.

      During HA modification, the nodes with the smallest configurations are modified to rebuild the cluster. After the HA modification is complete, the YML configuration of the nodes that are not modified is also updated. You need to restart the cluster to make the modification take effect.

      -
    • Migrate AZ: Migrate data from one AZ to another.

      After adding AZs, you need to restart the cluster to make the modification take effect.

      -
    -

    Node Type

    -

    Select a type of node or All nodes to change their AZ.

    -
    NOTE:

    When adding one or two AZs to a single-AZ cluster, you can only select All nodes to change AZs for all nodes at a time.

    -
    -

    Current AZ

    -

    Current AZ of a cluster

    -

    Target AZ

    -

    Target AZ.

    -
    • Add AZ: Select up to three AZs, which must include all your current AZs.
    • Migrate AZ: Select only one target AZ, which cannot be your current AZ.
    -

    Agency

    -

    Select an IAM agency to grant the current account the permission to change AZs.

    -

    If no agencies are available, click Create IAM Agency to go to the IAM console and create an agency.

    -
    NOTE:

    The selected agency must be authorized with the Tenant Administrator or VPC Administrator policy.

    -
    -
    -
    -
  6. Click Submit. Determine whether to check for the backup of all indexes and click OK to start the change.
    Figure 1 Checking full index snapshots
    -
  7. The current AZ change task is displayed in the task list. If the task status is Running, expand the task list and click View Progress to view the progress details.
    Figure 2 Viewing the task progress
    -

    If the task status is Failed, you can retry or terminate the task.

    -
    • Retry a task: Click Retry in the Operation column of a task.
    • Terminate a task: Click Terminate in the Operation column of a task.

      If AZ of the original node is not changed after the task is stopped, you can recover the node by Replacing a Specified Node.

      -

      If the AZ of some nodes have been changed and the AZ form of the cluster has changed, stopping the switchover task may make the deliver of the previous switchover request fail. Exercise caution when stopping the switchover task.

      -
      -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0202.html b/docs/css/umn/css_01_0202.html deleted file mode 100644 index 515ccc48..00000000 --- a/docs/css/umn/css_01_0202.html +++ /dev/null @@ -1,85 +0,0 @@ - - -

Monitoring OBS Operations

-

To clearly display the operations of the storage and compute decoupling plugin in OBS, the real-time OBS rate metric is added to CSS and recorded in the system index.

-

Prerequisite

This feature is available at Elasticsearch of versions 7.6.2 and 7.10.2 and Opensearch clusters created after March 2023.

-
-

Description

-
-

GET _frozen_stats/obs_rate API

  • Calculation method: The average OBS operation rate in the last 5 seconds is calculated every 5 seconds.
  • Example request:
    GET _frozen_stats/obs_rate 
    -GET _frozen_stats/obs_rate/{nodeId}
    -

    {nodeId} indicates the ID of the node whose OBS operation rate you want to query.

    -
  • Example response:
    {
    -   "_nodes" : {
    -     "total" : 1,
    -     "successful" : 1,
    -     "failed" : 0
    -   },
    -   "cluster_name" : "elasticsearch",
    -   "nodes" : {
    -     "dflDvcSwTJ-fkiIlT2zE3A" : {
    -       "name" : "node-1",
    -       "transport_address" : "127.0.0.1:9300",
    -       "host" : "127.0.0.1",
    -       "ip" : "127.0.0.1",
    -       "update_time" : 1671777600482,                            // Time when the current statistics are updated.
    -       "obs_rate" : {
    -         "list_op_rate" : 0.0,                                   // Rate of OBS list operations. Unit: times/s.
    -         "get_meta_op_rate" : 0.0,                               // Rate of OBS get meta operations. Unit: times/s.
    -         "get_obj_op_rate" : 0.0,                                // Rate of OBS get operations. Unit: times/s.
    -         "put_op_rate" : 0.0,                                    // Rate of OBS put operations. Unit: times/s.
    -         "obs_total_op_rate" : 0.0,                              // Rate of all OBS operations. The unit is times/s.
    -         "obs_upload_rate" : "0.0 MB/s",                         // Data upload rate of OBS, in MB/s.
    -         "obs_download_rate" : "0.0 MB/s"                        // Data download rate of OBS, in MB/s.
    -       }
    -     }
    -   }
    - }
    -
-
-

System Index

  • System index name: .freeze_obs_rate-YYYY.mm.dd.
  • Example: .freeze_obs_rate-2023.01.23

    The default retention period of indexes is 30 days.

    -
    -
-
-

Configuration Item

-
- - - - - - - - - - - - -

Configuration Item

-

Type

-

Scope

-

Can Be Dynamically Modified

-

Description

-

low_cost.obs_rate_index.evict_time

-

String

-

node

-

Yes

-

The retention period of the .freeze_obs_rate-YYYY.mm.dd index.

-
  • Value range: 1d to 365d
  • Default value: 30d
  • Unit: day
-
-
-
-

For example, run the following command to modify the retention period of the .freeze_obs_rate-YYYY.mm.dd index:

-
PUT _cluster/settings
- {
-   "persistent": {
-     "low_cost.obs_rate_index.evict_time":  "7d"
-   }
- }
-
-
- -
- diff --git a/docs/css/umn/css_01_0207.html b/docs/css/umn/css_01_0207.html deleted file mode 100644 index fa23cd92..00000000 --- a/docs/css/umn/css_01_0207.html +++ /dev/null @@ -1,31 +0,0 @@ - - - -

Elasticsearch

- -

-
- -
- -
- diff --git a/docs/css/umn/css_01_0210.html b/docs/css/umn/css_01_0210.html deleted file mode 100644 index b175295b..00000000 --- a/docs/css/umn/css_01_0210.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -

Accessing an Elasticsearch Cluster

- -

-
- -
- - - -
- diff --git a/docs/css/umn/css_01_0211.html b/docs/css/umn/css_01_0211.html deleted file mode 100644 index c6989001..00000000 --- a/docs/css/umn/css_01_0211.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -

Configuring an Elasticsearch Cluster

- -

-
- -
- - - -
- diff --git a/docs/css/umn/css_01_0212.html b/docs/css/umn/css_01_0212.html deleted file mode 100644 index 593cd69e..00000000 --- a/docs/css/umn/css_01_0212.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -

Managing Plugins

- -

-
- -
- - - -
- diff --git a/docs/css/umn/css_01_0227.html b/docs/css/umn/css_01_0227.html deleted file mode 100644 index 2229d530..00000000 --- a/docs/css/umn/css_01_0227.html +++ /dev/null @@ -1,19 +0,0 @@ - - -

Enhanced Import Performance

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0228.html b/docs/css/umn/css_01_0228.html deleted file mode 100644 index 9fa55630..00000000 --- a/docs/css/umn/css_01_0228.html +++ /dev/null @@ -1,19 +0,0 @@ - - -

Context

-

Feature Description

CSS provides enhanced data import function. It optimizes bulk route, and speeds up processing through indexes and word segmentation, improving import performance and reduces bulk rejection. This function applies to clusters that contain a large number of index shards and text indexes, and have high import throughput.

-
-

Constraints

Currently, only Elasticsearch clusters of version 7.10.2 support the import performance enhancement.

-
-

Prerequisites

An Elasticsearch cluster of version 7.10.2 has been created on the CSS console.

-
-

Precautions

  • After the local shard preferential bulk routing optimization and bulk routing optimization are enabled, data writing is not routed based on IDs, and routing-related functions are restricted. For example, ID-based GET requests may fail. The optimization of local shard preferential bulk routing depends on the random distribution of client bulk requests and the balanced distribution of primary shards.
  • If index.native_speed_up (the text index acceleration function) is enabled, index_sorting is not supported.
  • Prerequisites for enabling index.native_analyzer:
    1. The index.native_speed_up function has been enabled.
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0229.html b/docs/css/umn/css_01_0229.html deleted file mode 100644 index 265dcbc0..00000000 --- a/docs/css/umn/css_01_0229.html +++ /dev/null @@ -1,21 +0,0 @@ - - -

Instructions

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0230.html b/docs/css/umn/css_01_0230.html deleted file mode 100644 index f148b8fe..00000000 --- a/docs/css/umn/css_01_0230.html +++ /dev/null @@ -1,45 +0,0 @@ - - -

Bulk Route Optimization

-

According to the default routing rule of Elasticsearch, data in a bulk request is routed to different shards. When massive data is written and a large number of index shards exist, excessive internal requests forwarding may trigger bulk rejection. In a large-scale cluster, the long tail effect causes a high bulk request latency.

-

You can specify the index.bulk_routing configuration item to enable bulk route optimization. This function reduces the requests that need to be internally forwarded. For clusters containing a large number of shards, this function can improve write performance and reduce bulk rejection.

-

Procedure

  1. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. In the navigation tree on the left, choose Dev Tools.
  3. On the Dev Tools page, run the following command:
    PUT my_index 
    -{
    -  "settings": { 
    -    "index.bulk_routing": "local_pack"
    -  } 
    -}
    - -
    - - - - - - - - - - - - - -
    Table 1 Values of index.bulk_routing

    Value

    -

    Description

    -

    default

    -

    The default routing mechanism of Elasticsearch is used. Records in a bulk request are split and routed independently.

    -

    pack

    -

    Data of a single bulk request is randomly routed to the same shard.

    -

    local_pack

    -

    The data of a single bulk request is routed to the local shard of the data node that receives the bulk request. If the node does not contain the corresponding index shard, the data is randomly routed to another node that contains the index shard.

    -
    -
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0231.html b/docs/css/umn/css_01_0231.html deleted file mode 100644 index 287afe48..00000000 --- a/docs/css/umn/css_01_0231.html +++ /dev/null @@ -1,21 +0,0 @@ - - -

Bulk Aggregation Optimization

-

You can specify the index.aggr_perf_batch_size configuration item to enable or disable batch import optimization. After the batch import function is enabled, documents in bulk requests are written in batches. This function reduces the overhead of memory application, application lock, and other calls, improving data import performance.

-

The value range of index.aggr_perf_batch_size is [1, Integer.MAX_VALUE]. The default value is 1, indicating that the batch import function is disabled. If the value is greater than 1, the batch import function is enabled and the value of MIN(bulk_doc_size, aggr_perf_batch_size) indicates the batch size.

-
-

Procedure

  1. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. In the navigation tree on the left, choose Dev Tools.
  3. On the Dev Tools page, run the following command:
    PUT my_index 
    -{
    -  "settings": { 
    -    "index.aggr_perf_batch_size": "128"
    -  } 
    -}
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0232.html b/docs/css/umn/css_01_0232.html deleted file mode 100644 index 5b34f812..00000000 --- a/docs/css/umn/css_01_0232.html +++ /dev/null @@ -1,27 +0,0 @@ - - -

Text Index Acceleration

-
  • You can configure index.native_speed_up to enable or disable text index acceleration. This function optimizes the index process and memory usage to accelerate index building for text fields (text and keyword).
  • You can configure index.native_analyzer to enable or disable word segmentation acceleration. For texts that require common word segmentation, you can use the analyzer to accelerate word segmentation.
-

Procedure

  1. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. In the navigation tree on the left, choose Dev Tools.
  3. On the Dev Tools page, run the following command:
    PUT my_index 
    -{
    -  "settings": {
    -    "index.native_speed_up": true,
    -    "index.native_analyzer": true
    -  },
    -  "mappings": {
    -    "properties": {
    -      "my_field": {
    -        "type": "text"
    -      }
    -    }
    -  }
    -}
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0233_0.html b/docs/css/umn/css_01_0233_0.html deleted file mode 100644 index b14428e3..00000000 --- a/docs/css/umn/css_01_0233_0.html +++ /dev/null @@ -1,20 +0,0 @@ - - -

Optimization of Other Parameters

-

After the import performance is enhanced, the number of index merge tasks increases accordingly. You can adjust the following configuration to reduce the impact of merge task overhead on the import performance:

-

You can increase the value of index.merge.scheduler.max_thread_count to increase the number of shard merge threads and reduce the traffic limit on data import. The default value is 4 and you are advised to set it to 8.

-

Procedure

  1. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. In the navigation tree on the left, choose Dev Tools.
  3. On the Dev Tools page, run the following command:
    PUT my_index 
    -{
    -  "settings": {
    -    "index.merge.scheduler.max_thread_count": 8
    -  }
    -}
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0234.html b/docs/css/umn/css_01_0234.html deleted file mode 100644 index 629a51d3..00000000 --- a/docs/css/umn/css_01_0234.html +++ /dev/null @@ -1,44 +0,0 @@ - - -

Performance Data

-
  • Test environment
    • Cluster: 3 M6 ECSs (8 vCPUs | 64 GB memory)
    • Data: open-source web server access logs and internal service dataset (dns_logs)
    • Configuration: 120 shards, no replicas, and all the enhanced features enabled
    -
  • Test result -
    - - - - - - - - - - - - - - - - -

    Type

    -

    Performance (Before)

    -

    Performance (After)

    -

    Improved By

    -

    Open-source dataset

    -

    85 Mbit/s

    -

    131 Mbit/s

    -

    54%

    -

    Service dataset

    -

    124 Mbit/s

    -

    218 Mbit/s

    -

    76%

    -
    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_01_0246.html b/docs/css/umn/css_01_0246.html deleted file mode 100644 index 2ea2c243..00000000 --- a/docs/css/umn/css_01_0246.html +++ /dev/null @@ -1,369 +0,0 @@ - - -

Monitoring Metrics

-

Function

This topic describes CSS metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can search for the monitoring metrics and alarms generated for CSS by using the Cloud Eye console or calling APIs.

-
-

Namespace

SYS.ES

-
-

Monitoring Metrics

  • Table 1 describes the monitoring metrics of CSS clusters.
  • Monitored object: Cloud service nodes of CSS clusters
  • Monitoring period (original metric): 1 minute
-

Accumulated value: The value is accumulated from the time when a node is started. After the node is restarted, the value is reset to zero and accumulated again.

-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 CSS metrics

Metric ID

-

Metric

-

Description

-

Value Range

-

Monitored Target

-

Monitoring Interval (Raw Data)

-

jvm_heap_usage

-

JVM Heap Usage

-

JVM heap memory usage of a node.

-

Unit: %

-

0-100%

-

CSS cluster - cloud service node

-

1 minute

-

cpu_usage

-

CPU Usage

-

CPU usage.

-

Unit: %

-

0-100%

-

CSS cluster - cloud service node

-

1 minute

-

load_average

-

Average Load

-

Average number of queuing tasks per minute on a node

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

open_file_descriptors

-

Open File Descriptors

-

Number of opened file descriptors on a node

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

max_file_descriptors

-

Max. Allowed File Descriptors

-

Maximum number of allowed file descriptors

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

thread_pool_write_queue

-

Tasks in Write Queue

-

Number of job queues in a write thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

thread_pool_search_queue

-

Tasks in Search Queue

-

Number of job queues in a search thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_thread_pool_force_merge_queue

-

Tasks in ForceMerge Queue

-

Number of job queues in a force merge thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_thread_pool_write_rejected

-

Rejected Tasks in Write Queue

-

Number of rejected jobs in a write thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_thread_pool_search_rejected

-

Rejected Tasks in Search Queue

-

Number of rejected jobs in a search thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_thread_pool_force_merge_rejected

-

Rejected Tasks in ForceMerge Queue

-

Number of rejected jobs in a force merge thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_thread_pool_write_threads

-

Size of Write Thread Pool

-

Size of a write thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_thread_pool_search_threads

-

Size of Search Thread Pool

-

Size of a search thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_thread_pool_force_merge_threads

-

Size of ForceMerge Thread Pool

-

Size of a force merge thread pool

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

free_fs_size

-

Available Size of File Systems

-

Available size of file systems in a CSS cluster

-

Unit: byte

-

≥ 0 bytes

-

CSS cluster - cloud service node

-

1 minute

-

total_fs_size

-

Total Size of File Systems

-

Total size of file systems in a CSS cluster

-

Unit: byte

-

≥ 0 bytes

-

CSS cluster - cloud service node

-

1 minute

-

sum_jvm_old_gc_count

-

Total GCs of Old-Generation JVM

-

Number of old-generation garbage collection times

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_jvm_old_gc_time

-

Total GC Duration of Old-Generation JVM

-

Old-generation garbage collection duration.

-

Unit: ms

-

≥ 0 ms

-

CSS cluster - cloud service node

-

1 minute

-

sum_jvm_young_gc_count

-

Total GCs of Young-Generation JVM

-

Number of young-generation garbage collection times

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

sum_jvm_young_gc_time

-

GC Duration of Young-Generation JVM

-

Young-generation garbage collection duration.

-

Unit: ms

-

≥ 0 ms

-

CSS cluster - cloud service node

-

1 minute

-

mem_free_in_bytes

-

Available Memory

-

Unused memory space of a node.

-

Unit: byte

-

≥ 0 bytes

-

CSS cluster - cloud service node

-

1 minute

-

mem_free_percent

-

Available Memory Percentage

-

Percentage of unused memory space on a node.

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

mem_used_in_bytes

-

Used Memory

-

Used memory space of a node.

-

Unit: byte

-

≥ 0 bytes

-

CSS cluster - cloud service node

-

1 minute

-

current_opened_http_count

-

Currently Open HTTP Connections

-

Number of HTTP connections on a node

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-

total_opened_http_count

-

Total Open HTTP Connections

-

Total number of HTTP connections on a node

-

≥ 0

-

CSS cluster - cloud service node

-

1 minute

-
-
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0266.html b/docs/css/umn/css_01_0266.html deleted file mode 100644 index 45a30140..00000000 --- a/docs/css/umn/css_01_0266.html +++ /dev/null @@ -1,28 +0,0 @@ - - -

Restoring Data

-

You can use existing snapshots to restore the backup index data to a specified cluster.

-

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

-
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
-
-

Precautions

  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • Cluster data cannot be queried during snapshot restoration.
  • If you restore a CSS cluster snapshot to another cluster, indexes with the same name in the destination cluster will be overwritten. If the snapshot and the destination cluster use different shards, the indexes with the same name will not be overwritten.
  • The version of the destination cluster used for restoration must be the same as or higher than that of the source cluster.
-
-

Restoring Data

You can use snapshots whose Snapshot Status is Available to restore cluster data. The stored snapshot data can be restored to other clusters.

-

Restoring data will overwrite current data in clusters. Therefore, exercise caution when restoring data.

-
  1. In the Snapshots area, locate the row that contains the snapshot you want to restore and click Restore in the Operation column.
  2. On the Restore page, set restoration parameters.

    Index: Enter the name of the index you want to restore. If you do not specify any index name, data of all indexes will be restored. The value can contain 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?) are not allowed. You can use the asterisk (*) to match multiple indexes. For example, index* indicates that all indexes with the prefix index in snapshots are restored.

    -

    Rename Pattern: Enter a regular expression. Indexes that match the regular expression are restored. The default value index_(.+) indicates restoring data of all indexes. The value contains 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed.

    -

    Rename Replacement: Enter the index renaming rule. The default value restored_index_$1 indicates that restored_ is added in front of the names of all restored indexes. The value contains 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed.

    -

    The Rename Pattern and Rename Replacement take effect only when they are configured at the same time.

    -
    -

    Cluster: Select the cluster that you want to restore. You can select the current cluster or others. However, you can only restore the snapshot to clusters whose status is Available. If the status of the current cluster is Unavailable, you cannot restore the snapshot to the current cluster. When you restore data to another cluster, the version of the target cluster must be later than or equal to that of the current cluster. If the target cluster you selected has an index with the same name as the original cluster, data in the index will be overwritten after the restoration. Exercise caution when performing this operation.

    -
    Figure 1 Restoring a snapshot
    -
  3. Click OK. If restoration succeeds, Task Status of the snapshot in the snapshot list will change to Restoration succeeded, and the index data is generated again according to the snapshot information.
    Figure 2 Successful restoration
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0267.html b/docs/css/umn/css_01_0267.html deleted file mode 100644 index f51670e4..00000000 --- a/docs/css/umn/css_01_0267.html +++ /dev/null @@ -1,65 +0,0 @@ - - -

Managing Automatic Snapshot Creation

-

Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and set the automatic snapshot creation policy.

-

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

-
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
-
-

Precautions

  • When creating a backup for the first time, you are advised to back up data of all indexes.
  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • Before creating a snapshot, you need to perform basic configurations, including configuring the OBS bucket for storing snapshots and IAM agency used for security authentication.
  • If there are available snapshots in the snapshot list when you configure the OBS bucket for storing cluster snapshots for the first time, you cannot change the bucket for snapshots that are subsequently created automatically or manually. Exercise caution when you configure the OBS bucket.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • The first snapshot of a cluster is a full snapshot, and subsequent snapshots are incremental snapshots. CSS snapshot files depend on each other.
-
-

Managing Automatic Snapshot Creation

  1. In the CSS navigation pane on the left, click Clusters.
  2. On the Clusters page that is displayed, click the name of the target cluster. In the navigation pane on the left, choose Cluster Snapshots.
  3. On the displayed Cluster Snapshots page, click the icon to the right of Cluster Snapshot to enable the cluster snapshot function.
  4. Enable the cluster snapshot function. OBS buckets and IAM agencies are automatically created to store snapshots. The automatically created OBS bucket and IAM agency are displayed on the page. You can also click on the right of Basic Configuration to edit the configuration. To ensure the security of snapshot data, you can select a key to encrypt the snapshot. -
    - - - - - - - - - - - - - - - - -
    Table 1 Cluster snapshot parameter

    Parameter

    -

    Description

    -

    OBS Bucket

    -

    Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

    -

    The created or existing OBS bucket must meet the following requirements:

    -
    • Storage Class is Standard or Warm.
    • Region must be the same as that of the created cluster.
    -

    Backup Path

    -

    Storage path of the snapshot in the OBS bucket.

    -
    The backup path configuration rules are as follows:
    • The backup path cannot contain the following characters: \:*?"<>|
    • The backup path cannot start with a slash (/).
    • The backup path cannot start or end with a period (.).
    • The total length cannot exceed 1,023 characters.
    -
    -

    IAM Agency

    -

    IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

    -

    The created or existing IAM agency must meet the following requirements:

    -
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
    -

    Snapshot Encryption

    -

    Indicates whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

    -

    After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to switch to the KMS management console to create or modify a key. For details, see Creating a CMK.

    -
    • You cannot use default CMKs whose aliases end with /default in KMS to encrypt snapshots.
    • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
    • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
    • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
    -
    -
    -
    Figure 1 Edit Basic configuration
    -
  5. Enable the automatic snapshot creation function. The Configure Automatic Snapshot Creation dialog box is displayed. If the automatic snapshot creation function is enabled, you can click on the right of Automatic Snapshot Creation to modify the snapshot policy.
    • Snapshot Name Prefix: Enter a maximum of 32 characters starting with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. A snapshot name consists of a snapshot name prefix and a timestamp, for example, snapshot-2018022405925.
    • Time Zone: indicates the time zone for the backup time. Specify backup start time based on the time zone.
    • Index: Enter an index name. You can select an index for backup. Use commas (,) to separate multiple indexes. Uppercase letters, spaces, and the following special characters are not allowed: "\<|>/? If you do not specify this parameter, data of all indexes in the cluster is backed up by default. You can use the asterisk (*) to back up data of certain indexes. For example, if you enter index*, then data of indexes with the name prefix of index will be backed up.

      Run the GET /_cat/indices command in Kibana to query the names of all indexes in the cluster.

      -
    • Backup Started: indicates the time when the backup starts automatically every day. You can specify this parameter only in hours and not minutes, for example, 00:00 or 01:00. The value ranges from 00:00 to 23:00. Select the backup time from the drop-down list box.
    • Retention Period (days): indicates the duration when snapshots are retained in the OBS bucket, in days. The value ranges from 1 to 90. You can specify this parameter as required. The system automatically deletes snapshots that are retained over the specified retention period on the half hour. For example, if you set the snapshot policy as shown in Figure 2, the system will automatically delete in 35 days at 00:30 the automated snapshots that were created 35 days earlier at 00:00.
    -
    Figure 2 Automatic snapshot creation
    -
  6. Click OK to save the snapshot policy.

    Snapshots that are automatically created according to the snapshot policy are displayed in the snapshot list, along with manually created snapshots. You can distinguish them by the Snapshot Type setting. In the upper right corner of the snapshot list, enter the keyword of the snapshot name or snapshot ID to search for the desired snapshots.

    -
    Figure 3 Automatic snapshot creation
    -
  7. (Optional) Disable the automatic snapshot creation function.

    After you disable the automatic snapshot creation function, the system stops automatic creation of snapshots. If the system is creating a snapshot based on the automatic snapshot creation policy and the snapshot is not yet displayed in the snapshot list, you cannot disable the automatic snapshot creation function. In this case, if you click the button next to Automatic Snapshot Creation, a message is displayed, indicating that you cannot disable the function. You are advised to disable the function after the system completes automatic creation of the snapshot, and the created snapshot is displayed in the snapshot list.

    -

    When disabling the automatic snapshot creation function, you can choose whether to delete the snapshots that have been automatically created by selecting Delete automated snapshots in the displayed dialog box. By default, automatically created snapshots are not deleted.

    -
    • If you do not select Delete automated snapshots, automatically created snapshots are not deleted when you disable the automatic snapshot creation function. You can manually delete them later. For details, see Deleting a Snapshot. If you do not manually delete the automatically created snapshots and enable the automatic snapshot creation function again, then all snapshots with Snapshot Type set to Automated in the snapshot list of the cluster can only be automatically deleted by the system. Specifically, the system automatically deletes snapshots based on the snapshot policy configured when you enable the automatic snapshot creation function again. For example, if you set Retention Period (days) to 10, the system will automatically delete the snapshots that have been retained for more than 10 days.
    • If you select Delete automated snapshots, all snapshots with Snapshot Type set to Automated in the snapshot list will be deleted when you disable the automatic snapshot creation function.
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0268.html b/docs/css/umn/css_01_0268.html deleted file mode 100644 index 2bdbd17f..00000000 --- a/docs/css/umn/css_01_0268.html +++ /dev/null @@ -1,54 +0,0 @@ - - -

Manually Creating a Snapshot

-

You can manually create a snapshot at any time to back up all data or data of specified indexes.

-

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

-
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
-
-

Precautions

  • When creating a backup for the first time, you are advised to back up data of all indexes.
  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • Before creating a snapshot, you need to perform basic configurations, including configuring the OBS bucket for storing snapshots and IAM agency used for security authentication.
  • If there are available snapshots in the snapshot list when you configure the OBS bucket for storing cluster snapshots for the first time, you cannot change the bucket for snapshots that are subsequently created automatically or manually. Exercise caution when you configure the OBS bucket.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • The first snapshot of a cluster is a full snapshot, and subsequent snapshots are incremental snapshots. CSS snapshot files depend on each other.
-
-

Manually Creating a Snapshot

  1. In the CSS navigation pane on the left, click Clusters.
  2. On the Clusters page that is displayed, click the name of the target cluster. In the navigation pane on the left, choose Cluster Snapshots.
  3. On the displayed Cluster Snapshots page, click the icon to the right of Cluster Snapshot to enable the cluster snapshot function.
  4. Enable the cluster snapshot function. OBS buckets and IAM agencies are automatically created by CSS to store snapshots. The automatically created OBS bucket and IAM agency are displayed on the page. You can also click on the right of Basic Configuration to edit the configuration. To ensure the security of snapshot data, you can select a key to encrypt the snapshot. -
    - - - - - - - - - - - - - -
    Table 1 Cluster snapshot parameter

    Parameter

    -

    Description

    -

    OBS Bucket

    -

    Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

    -

    The created or existing OBS bucket must meet the following requirements:

    -
    • Storage Class is Standard or Warm.
    -

    IAM Agency

    -

    IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

    -

    The created or existing IAM agency must meet the following requirements:

    -
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
    -

    Snapshot Encryption

    -

    Indicates whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

    -

    After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to switch to the KMS management console to create or modify a key. For details, see Creating a CMK.

    -
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
    • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
    • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
    -
    -
    -
    Figure 1 Edit Basic configuration
    -
  5. After basic configurations are completed, click Create.
    • Name indicates the name of the manually created snapshot, which can contain 4 to 64 characters and must start with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. For snapshots you create manually, you can specify the snapshot name. The system will not automatically add the time information to the snapshot name.
    • Index: Enter an index name. You can select an index for backup. Use commas (,) to separate multiple indexes. Uppercase letters, spaces, and the following special characters are not allowed: "\<|>/? If you do not specify this parameter, data of all indexes in the cluster is backed up by default. You can use the asterisk (*) to back up data of certain indexes. For example, if you enter index*, then data of indexes with the name prefix of index will be backed up.

      Run the GET /_cat/indices command in Kibana to query the names of all indexes in the cluster.l

      -
    • Description: indicates the description of the created snapshot. The value contains 0 to 256 characters, and certain special characters (<>) are not allowed.
    -
    Figure 2 Create snapshot
    -
  6. Click OK.

    After the snapshot is created, it will be displayed in the snapshot list. The status Available indicates that the snapshot is created successfully. along with manually created snapshots. You can distinguish them by the Snapshot Type setting. In the upper right corner of the snapshot list, enter the keyword of the snapshot name or snapshot ID to search for the desired snapshots.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_01_0269.html b/docs/css/umn/css_01_0269.html deleted file mode 100644 index 03ff9ac8..00000000 --- a/docs/css/umn/css_01_0269.html +++ /dev/null @@ -1,23 +0,0 @@ - - -

Index Backup and Restoration

-
-
- - - -
- diff --git a/docs/css/umn/css_01_0271.html b/docs/css/umn/css_01_0271.html deleted file mode 100644 index 19e901c4..00000000 --- a/docs/css/umn/css_01_0271.html +++ /dev/null @@ -1,14 +0,0 @@ - - -

Deleting a Snapshot

-

If you no longer need a snapshot, delete it to release storage resources. If the automatic snapshot creation function is enabled, snapshots that are automatically created cannot be deleted manually, and the system automatically deletes these snapshots on the half hour after the time specified by Retention Period (days). If you disable the automatic snapshot creation function while retaining the automated snapshots, then you can manually delete them later. If you do not manually delete the automatically created snapshots and enable the automatic snapshot creation function again, then all snapshots with Snapshot Type set to Automated in the snapshot list of the cluster can only be automatically deleted by the system.

-

After a snapshot is deleted, its data cannot be restored. Exercise caution when deleting a snapshot.

-
-
  1. In the snapshot list, locate the snapshot that you want to delete.
  2. Click Delete in the Operation column. In the dialog box that is displayed, confirm the snapshot information and click OK.
-
-
- -
- diff --git a/docs/css/umn/css_02_0001.html b/docs/css/umn/css_02_0001.html deleted file mode 100644 index a072a5f7..00000000 --- a/docs/css/umn/css_02_0001.html +++ /dev/null @@ -1,29 +0,0 @@ - - - -

FAQs

- -

-
- -
- -
- diff --git a/docs/css/umn/css_02_0006.html b/docs/css/umn/css_02_0006.html deleted file mode 100644 index d9d89a59..00000000 --- a/docs/css/umn/css_02_0006.html +++ /dev/null @@ -1,17 +0,0 @@ - - -

How Does CSS Ensure Data and Service Security?

-

CSS uses network isolation, in addition to various host and data security measures.

-
  • Network isolation

    The entire network is divided into two planes: service plane and management plane. The two planes are deployed and isolated physically to ensure the security of the service and management networks.

    -
    • Service plane: This is the network plane of the cluster. It provides service channels for users and delivers data definitions, indexing, and search capabilities.
    • Management plane: This is the management console, where you manage CSS.
    -
  • Host security

    CSS provides the following security measures:

    -
    • The VPC security group ensures the security of the hosts in a VPC.
    • Network access control lists (ACLs) allow you to control what data can enter or exit your network.
    • The internal security infrastructure (including the network firewall, intrusion detection system, and protection system) monitors all network traffic that enters or exits the VPC through an IPsec VPN.
    -
  • Data security

    Multiple replicas, cross-AZ deployment of clusters, and third-party (OBS) backup of index data ensure the security of user data.

    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0007.html b/docs/css/umn/css_02_0007.html deleted file mode 100644 index 1c503e11..00000000 --- a/docs/css/umn/css_02_0007.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

Which CSS Metrics Should I Focus On?

-

Disk usage and cluster health status are two key metrics that you can focus on. You can log in to Cloud Eye and configure alarm rules for these metrics. If alarms are reported, handle them by taking appropriate measures.

-

Configuration examples:

-
  • Alarms are reported if the disk usage is higher than or equal to a specified value (for example, 85%) and has reached this value multiple times (for example, 5 times) within a specified time period (for example, 5 minutes).
  • Alarms are reported if the value of the cluster health status metric exceeds 0 for multiple times (for example, 5 times) within a specified time period (for example, 5 minutes).
-

Measures:

-
  • If disk usage alarms are reported, view available disk space, check whether data can be deleted from cluster nodes or archived to other systems to free up space, or check if you can expand the disk capacity.
  • If cluster health status alarms are reported, check whether shard allocation is normal, whether shards have been lost, and check whether the process has been restarted on Cerebro.
-
-
- -
- diff --git a/docs/css/umn/css_02_0008.html b/docs/css/umn/css_02_0008.html deleted file mode 100644 index 22fe6e42..00000000 --- a/docs/css/umn/css_02_0008.html +++ /dev/null @@ -1,12 +0,0 @@ - - -

What Storage Options Does CSS Provide?

-

CSS uses EVS and local disks to store your indices. During cluster creation, you can specify the EVS disk type and specifications (the EVS disk size).

-
  • Supported EVS disk types include common I/O, high I/O, and ultra-high I/O.
  • The EVS disk size varies depending on the node specifications selected when you create a cluster.
-
-
- -
- diff --git a/docs/css/umn/css_02_0009.html b/docs/css/umn/css_02_0009.html deleted file mode 100644 index 1180f4c4..00000000 --- a/docs/css/umn/css_02_0009.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

What Is the Maximum Storage Capacity of CSS?

-

You can configure up to 200 nodes for a cluster (each node corresponds to an ECS). The maximum storage capacity of an ECS is the total capacity of EVS disks attached to the ECS. You can calculate the total storage capacity of CSS based on the sizes of EVS disks attached to different ECSs. The EVS disk size is determined by the node specifications selected when you create the cluster.

-
-
- -
- diff --git a/docs/css/umn/css_02_0010.html b/docs/css/umn/css_02_0010.html deleted file mode 100644 index 420bdda8..00000000 --- a/docs/css/umn/css_02_0010.html +++ /dev/null @@ -1,12 +0,0 @@ - - -

What Can the Disk Space of a CSS Cluster Be Used For?

-

You can store the following logs and files:

-
  • Log files: Elasticsearch logs
  • Data files: Elasticsearch index files
  • Other files: cluster configuration files
  • OS: 5% storage space reserved for the OS by default
-
-
- -
- diff --git a/docs/css/umn/css_02_0017.html b/docs/css/umn/css_02_0017.html deleted file mode 100644 index 7d05bc0a..00000000 --- a/docs/css/umn/css_02_0017.html +++ /dev/null @@ -1,17 +0,0 @@ - - -

How Can I Manage CSS?

-
You can use any of the following three methods to manage CSS or to use search engine APIs. You can initiate requests based on constructed request messages.
  • curl

    curl is a command-line tool used to transfer data to or from a given URL. It serves as an HTTP client that can send HTTP requests to the HTTP server and receive response messages. You can also use curl to debug APIs. For more information about curl, visit https://curl.haxx.se/.

    -
  • Code

    You can call APIs through code to assemble, send, and process request messages.

    -
  • REST client

    Both Mozilla Firefox and Google Chrome provide a graphical browser plugin, the REST client, which you can use to send and process requests.

    -

    – For Mozilla Firefox, see Firefox REST Client.

    -

    – For Google Chrome, see Postman.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_02_0025.html b/docs/css/umn/css_02_0025.html deleted file mode 100644 index 53b84471..00000000 --- a/docs/css/umn/css_02_0025.html +++ /dev/null @@ -1,20 +0,0 @@ - - -

Why Does My ECS Fail to Connect to a Cluster?

-

Perform the following steps to troubleshoot this problem:

-
  1. Check whether the ECS instance and cluster are in the same VPC.
    • If they are, go to 2.
    • If they are not, create an ECS instance and ensure that the ECS instance is in the same VPC as the cluster.
    -
  2. View the security group rule setting of the cluster to check whether port 9200 (TCP protocol) is allowed or port 9200 is included in the port range allowed in both the outbound and inbound directions.
    • If it is allowed, go to 3.
    • If it is not allowed, switch to the VPC management console and configure the security group rule of the cluster to allow port 9200 in both the outbound and inbound directions.
    -
  3. Check whether the ECS instance has been added to a security group.
    • If the instance has been added to a security group, check whether the security group configuration rules are appropriate. You can view the Security Group information on the Basic Information tab page of the cluster. Then, go to step 4.
      Figure 1 Viewing security group information
      -
    • If the instance has not been added to the security group, go to the VPC page from the ECS instance details page, select a security group, and add the ECS to the group.
    -
  4. Check whether the ECS instance can connect to the cluster.
    ssh <Private network address and port number of a node>

    If the cluster contains multiple nodes, check whether the ECS can be connected to each node in the cluster.

    -
    -
    -
    • If the connection is normal, the network is running properly.
    • If the connection still fails, contact technical support.
    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0034.html b/docs/css/umn/css_02_0034.html deleted file mode 100644 index 233c2f38..00000000 --- a/docs/css/umn/css_02_0034.html +++ /dev/null @@ -1,22 +0,0 @@ - - -

What Are Regions and AZs?

-

Regions and AZs

A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.

-
  • A region is a physical data center. Each region is completely independent, and thereby improves fault tolerance and stability. After a resource is created, its region cannot be changed.
  • An AZ is a physical location using independent power supplies and networks. Faults in an AZ do not affect other AZs. A region can contain multiple AZs that are physically isolated but networked together. This enables low-cost and low-latency network connections.
-
Figure 1 shows the relationship between regions and AZs.
Figure 1 Regions and AZs
-
-
-

Region Selection

You are advised to select a region close to you or your target users. This reduces network latency and improves the access success rate.

-
-

AZ Selection

When determining whether to deploy resources in the same AZ, consider your application's requirements for disaster recovery (DR) and network latency.

-
  • To prioritize DR capabilities, deploy resources in different AZs in the same region.
  • To prioritize network latency, deploy resources in the same AZ.
-
-

Regions and Endpoints

Before using an API to call resources, you will need to specify the resource region and endpoint. For details, see "Endpoints" in Cloud Search Service API Reference.

-
-
-
- -
- diff --git a/docs/css/umn/css_02_0041.html b/docs/css/umn/css_02_0041.html deleted file mode 100644 index aec38feb..00000000 --- a/docs/css/umn/css_02_0041.html +++ /dev/null @@ -1,25 +0,0 @@ - - -

What Data Compression Algorithms Does CSS Use?

-

CSS supports two data compression algorithms: LZ4 (by default) and best_compression.

-
  • LZ4 algorithm

    LZ4 is the default compression algorithm of Elasticsearch. This algorithm can compress and decompress data quickly, but its compression ratio is low.

    -

    LZ4 scans data with a 4-byte window, which slides 1 byte forward at a time. Duplicate data is compressed. This algorithm applies to scenarios where a large amount of data to be read while a small amount of data to be written.

    -
  • best_compression algorithm

    This algorithm can be used when a large amount of data is written and the index storage cost is high, such as logs and time sequence analysis. This algorithm can greatly reduce the index storage cost.

    -
-
Run the following command to switch the default compression algorithm (LZ4) to best_compression:
PUT index-1
-{
-    "settings": {
-        "index": {
-            "codec": "best_compression"
-        }
-    }
-}
-
-

The LZ4 algorithm can quickly compress and decompress data while the best_compression algorithm has a higher compression and decompression ratio.

-
-
- -
- diff --git a/docs/css/umn/css_02_0042.html b/docs/css/umn/css_02_0042.html deleted file mode 100644 index 66136e83..00000000 --- a/docs/css/umn/css_02_0042.html +++ /dev/null @@ -1,23 +0,0 @@ - - -

Why All New Index Shards Are Allocated to the Same Node?

-

Possible Cause

The possible causes are as follows:

-
  • Shards were unevenly distributed in previous index allocations, and the predominate parameter in the latest indexed shard allocation was balance.shard. To balance the shard distribution across nodes, the new shards were allocated to the node with only a small number of shards.
  • After a new node was added to a cluster and before the automatic cluster rebalancing completes, the predominate parameter was balance.shard. The shards of a new index are allocated to the new node, where there are no shards yet.
-

The following two parameters are used to balance the shard allocation in a cluster:

-

cluster.routing.allocation.balance.index (default value: 0.45f)

-

cluster.routing.allocation.balance.shard (default value: 0.55f)

-
  • balance.index: A larger value indicates that all the shards of an index are more evenly distributed across nodes. For example, if an index has six shards and there are three data nodes, two shards will be distributed on each node.
  • balance.shard: A larger value indicates that all the shards of all the indexes are more evenly distributed across nodes. For example, if index a has two shards, index b has four, and there are three data nodes, two shards will be distributed on each node.
  • You can specify both balance.index and balance.shard to balance the shard allocation.
-
-
-

Solution

To prevent the all the shards of an index from being allocated to a single node, use either of the following methods:

-
  1. To create an index during cluster scale-out, configure the following parameter:
    "index.routing.allocation.total_shards_per_node": 2
    -

    That is, allow no more than two shards of an index to be allocated on each node. Determine the maximum number of shards allocated to each node based on the number of data nodes in your cluster and the number of index shards (both primary and secondary).

    -
  1. If too many shards are distributed on only a few nodes, you can move some of the shards to other nodes to balance the distribution. Run the move command of POST _cluster/reroute. The rebalance module will automatically exchange the shard with a shard on the destination node. Determine the values of balance.index and balance.shard as needed.
-
-
-
- -
- diff --git a/docs/css/umn/css_02_0043.html b/docs/css/umn/css_02_0043.html deleted file mode 100644 index 1ada87bb..00000000 --- a/docs/css/umn/css_02_0043.html +++ /dev/null @@ -1,23 +0,0 @@ - - -

How Do I Query Snapshot Information?

-

Prerequisites

The snapshot function has been enabled for the cluster and snapshot information has been configured.

-
-

Querying a Snapshot

  1. Log in to the CSS management console, and click Clusters in the navigation pane. On the displayed Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  2. In the left navigation pane of the Kibana page, click Dev Tools. Click Get to work to switch to the Console page.

    Enter the code as required in the left pane, click to execute the command, and view the result in the right pane.

    -
  3. Run the GET _snapshot/_all command to query information about all repositories.
    Figure 1 Querying information about all repositories
    -
    • bucket: OBS bucket name
    • base_path: Path. It consists of a fixed prefix and a cluster name.
    • endpoint: OBS domain name
    • region: your region
    -
  4. Query snapshot information.
    1. Run the GET _snapshot/repo_auto/_all command to query the list of all the snapshots in the current repository.
      Figure 2 Snapshot information
      -
      • snapshot: snapshot name
      • state: snapshot status
      • start_time, start_time_in_millis, end_time, and end_time_in_millis: snapshot time
      • shards: the number of shards. total indicates the total number of shards. failed indicates the number of failures. successful indicates the number of successes.
      -
    2. Run the GET _snapshot/repo_auto/$snapshot-xxx command to query information about a specified snapshot.
      • Replace $snapshot-xxx with the actual snapshot name.
      • repo_auto is followed by a snapshot name or wildcard characters.
      -
    -
  5. (Optional) Delete information about a specified snapshot.

    To delete a specific snapshot, run the DELETE _snapshot/ repo_auto/$snapshot-xxx command.

    -

    Replace $snapshot-xxx with the actual snapshot name.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_02_0051.html b/docs/css/umn/css_02_0051.html deleted file mode 100644 index dd9f4870..00000000 --- a/docs/css/umn/css_02_0051.html +++ /dev/null @@ -1,32 +0,0 @@ - - -

General Consulting

-

-
-
- - - -
- diff --git a/docs/css/umn/css_02_0052.html b/docs/css/umn/css_02_0052.html deleted file mode 100644 index 6e9e25b4..00000000 --- a/docs/css/umn/css_02_0052.html +++ /dev/null @@ -1,12 +0,0 @@ - - -

Can I Upgrade a Cluster from an Earlier Version to a Later Version?

-

A cluster cannot be directly upgraded. You can purchase a cluster of a later version and migrate your data to it.

-
  1. Creating a Cluster: Create a cluster of a later version in the region where your current cluster is deployed.
  2. Migrating a Cluster: Migrate your cluster by backing data up and restoring indexes.
-
-
- -
- diff --git a/docs/css/umn/css_02_0055.html b/docs/css/umn/css_02_0055.html deleted file mode 100644 index 86ad80b8..00000000 --- a/docs/css/umn/css_02_0055.html +++ /dev/null @@ -1,43 +0,0 @@ - - - -

Functions

- -

-
- -
- - - -
- diff --git a/docs/css/umn/css_02_0058.html b/docs/css/umn/css_02_0058.html deleted file mode 100644 index f18f3328..00000000 --- a/docs/css/umn/css_02_0058.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

Can Elasticsearch Data Be Migrated Between VPCs?

-

Elasticsearch does not support direct data migration between different VPCs. You can use either of the following methods to migrate data.

-

Method 1

Use the backup and restoration function to migrate cluster data.

-
-

Method 2

  1. Connect the VPC network and establish a VPC peering connection.
  2. After the network is connected, use Logstash to migrate data.
-
-
-
- -
- diff --git a/docs/css/umn/css_02_0063.html b/docs/css/umn/css_02_0063.html deleted file mode 100644 index e763f951..00000000 --- a/docs/css/umn/css_02_0063.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -

Clusters in Security Mode

- -

-
- -
- - - -
- diff --git a/docs/css/umn/css_02_0064.html b/docs/css/umn/css_02_0064.html deleted file mode 100644 index 2400c447..00000000 --- a/docs/css/umn/css_02_0064.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

What Is the Relationship Between the Filebeat Version and Cluster Version?

-
  • Non-security mode: no restrictions.
  • Cluster in security mode: The Filebeat OSS version must match the cluster version. For details on how to download the Filebeat OSS version, see Past Releases of Elastic Stack Software.
-
-
- -
- diff --git a/docs/css/umn/css_02_0066.html b/docs/css/umn/css_02_0066.html deleted file mode 100644 index 3bfbc128..00000000 --- a/docs/css/umn/css_02_0066.html +++ /dev/null @@ -1,35 +0,0 @@ - - - -

Resource Usage and Change

- -

-
- -
- - - -
- diff --git a/docs/css/umn/css_02_0067.html b/docs/css/umn/css_02_0067.html deleted file mode 100644 index a4252af1..00000000 --- a/docs/css/umn/css_02_0067.html +++ /dev/null @@ -1,18 +0,0 @@ - - -

How Do I Clear Expired Data to Release Storage Space?

-
  • Run the following command to delete a single index data record.

    curl -XDELETE http://IP:9200/Index_name

    -

    IP: the IP address of any node in the cluster

    -
    -
  • Run the following command to delete all Logstash data of a day. For example, delete all data on June 19, 2017:

    For a cluster in non-security mode: curl -XDELETE 'http://IP:9200/logstash-2017.06.19*'

    -

    For a cluster in security mode: curl -XDELETE -u username:password 'https://IP:9200/logstash-2017.06.19' -k

    -
    • username: username of the administrator. The default value is admin.
    • password: the password set during cluster creation
    • IP: the IP address of any node in the cluster
    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0068.html b/docs/css/umn/css_02_0068.html deleted file mode 100644 index 9f9ee56d..00000000 --- a/docs/css/umn/css_02_0068.html +++ /dev/null @@ -1,18 +0,0 @@ - - -

How Do I Configure a Two-Replica CSS Cluster?

-
  1. Run GET _cat/indices?v in Kibana to check the number of cluster replicas. If the value of rep is 1, the cluster has two replicas.

    -
  2. If the value of rep is not 1, run the following command to set the number of replicas:

    PUT /index/_settings

    -

    {

    -

    "number_of_replicas" : 1 //Number of replicas

    -

    }

    -

    index specifies the index name. Set this parameter based on site requirements.

    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0069.html b/docs/css/umn/css_02_0069.html deleted file mode 100644 index 2d22b747..00000000 --- a/docs/css/umn/css_02_0069.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

How Do I Delete Index Data?

-
  • Manually: Run the DELETE /my_index command in Kibana.
  • Automatically: Create scheduled tasks to call the index deletion request and periodically execute the tasks. CSS supports Open Distro Index State Management. For details, see: https://opendistro.github.io/for-elasticsearch-docs/docs/im/ism/
-
-
- -
- diff --git a/docs/css/umn/css_02_0070.html b/docs/css/umn/css_02_0070.html deleted file mode 100644 index e6b7adfc..00000000 --- a/docs/css/umn/css_02_0070.html +++ /dev/null @@ -1,19 +0,0 @@ - - - -

Components

- -

-
- -
- - - -
- diff --git a/docs/css/umn/css_02_0073.html b/docs/css/umn/css_02_0073.html deleted file mode 100644 index e01401f0..00000000 --- a/docs/css/umn/css_02_0073.html +++ /dev/null @@ -1,18 +0,0 @@ - - -

Kibana

-

-
-
- - - -
- diff --git a/docs/css/umn/css_02_0077.html b/docs/css/umn/css_02_0077.html deleted file mode 100644 index 0154ae39..00000000 --- a/docs/css/umn/css_02_0077.html +++ /dev/null @@ -1,22 +0,0 @@ - - -

Clusters

-

-
-
- - - -
- diff --git a/docs/css/umn/css_02_0078.html b/docs/css/umn/css_02_0078.html deleted file mode 100644 index fba54405..00000000 --- a/docs/css/umn/css_02_0078.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

Can a New Cluster Use the IP Address of the Old Cluster?

-

No.

-
-
- -
- diff --git a/docs/css/umn/css_02_0079.html b/docs/css/umn/css_02_0079.html deleted file mode 100644 index 65bc1b26..00000000 --- a/docs/css/umn/css_02_0079.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

Can I Associate My EIP If I Want to Access the Cluster from the Internet?

-

No. To access a cluster from the Internet, see Public IP Address Access.

-
-
- -
- diff --git a/docs/css/umn/css_02_0081.html b/docs/css/umn/css_02_0081.html deleted file mode 100644 index 77c2dc4a..00000000 --- a/docs/css/umn/css_02_0081.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

Can I Use x-pack-sql-jdbc to Access CSS Clusters and Query Data?

-

No. Currently, CSS does not integrate the x-pack component.

-
-
- -
- diff --git a/docs/css/umn/css_02_0082.html b/docs/css/umn/css_02_0082.html deleted file mode 100644 index 648a8593..00000000 --- a/docs/css/umn/css_02_0082.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -

Ports

- -

-
- -
- - - -
- diff --git a/docs/css/umn/css_02_0083.html b/docs/css/umn/css_02_0083.html deleted file mode 100644 index 78180044..00000000 --- a/docs/css/umn/css_02_0083.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Do Ports 9200 and 9300 Both Open?

-

Yes. Port 9200 is used by external systems to access CSS clusters, and port 9300 is used for communication between nodes.

-

The methods for accessing port 9300 are as follows:

-
  • If your client is in the same VPC and subnet with the CSS cluster, you can access it directly.
  • If your client is in the same VPC with but different subnet from the CSS cluster, apply for a route separately.
  • If your client is in the different VPCs and subnets from the CSS cluster, create a VPC peering connection to enable communication between the two VPCs, and then apply for routes to connect the two subnets.
-
-
- -
- diff --git a/docs/css/umn/css_02_0088.html b/docs/css/umn/css_02_0088.html deleted file mode 100644 index 9ec12c0f..00000000 --- a/docs/css/umn/css_02_0088.html +++ /dev/null @@ -1,12 +0,0 @@ - - -

Can I Install Search Guard on CSS?

-

CSS does not currently support installation of Search Guard.

-

CSS provides clusters in security mode, which have the same functions as Search Guard.

-
-
- -
- diff --git a/docs/css/umn/css_02_0089.html b/docs/css/umn/css_02_0089.html deleted file mode 100644 index 8e8c9533..00000000 --- a/docs/css/umn/css_02_0089.html +++ /dev/null @@ -1,18 +0,0 @@ - - -

Can I Change the Number of Shards to Four with Two Replicas When There Is One Shard Set in the JSON File?

-

Once an index is created, the number of primary shards cannot be changed.

-

You can run the following command in Kibana to change the number of replicas:

-
PUT /indexname/_settings
-{
-"number_of_replicas":1       //Number of replicas
-}
-

index specifies the index name. Set this parameter based on site requirements.

-
-
-
- -
- diff --git a/docs/css/umn/css_02_0093.html b/docs/css/umn/css_02_0093.html deleted file mode 100644 index e2bc870c..00000000 --- a/docs/css/umn/css_02_0093.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

How Do I Check the Numbers of Shards and Replicas in a Cluster on the CSS Console?

-
  1. Log in to the console.
  2. On the Clusters page, click Access Kibana in the Operation column of a cluster.
  3. Log in to Kibana and choose Dev Tools.

    -
  4. On the Console page, run the GET _cat/indices?v command query the number of shards and replicas in a cluster. In the following figure, the pri column indicates the number of index shards, and the rep column indicates the number of replicas. After an index is created, its pri value cannot be modified. Its rep value can be modified.

    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0094.html b/docs/css/umn/css_02_0094.html deleted file mode 100644 index 6b04b9a2..00000000 --- a/docs/css/umn/css_02_0094.html +++ /dev/null @@ -1,14 +0,0 @@ - - -

How Do I Migrate a CSS Cluster Across Regions?

-

CSS clusters cannot be directly migrated. You can back up a cluster to an OBS bucket and restore it to a new region.

-
  • If the OBS bucket is in the same region as your CSS cluster, migrate the cluster by following the instructions in Index Backup and Restoration.
  • If the OBS bucket is not in the same region as your CSS cluster, configure cross-region replication to back up the cluster to the bucket, and migrate the cluster by following the instructions in Index Backup and Restoration.
-
  • Before cross-region replication, ensure the snapshot folder of the destination cluster is empty. Otherwise, the snapshot information cannot be updated to the snapshot list of the destination cluster.
  • Before every migration, ensure the folder is empty.
-
-
-
- -
- diff --git a/docs/css/umn/css_02_0096.html b/docs/css/umn/css_02_0096.html deleted file mode 100644 index e7af26b8..00000000 --- a/docs/css/umn/css_02_0096.html +++ /dev/null @@ -1,19 +0,0 @@ - - -

How Do I Configure the Threshold for CSS Slow Query Logs?

-

The slow query log settings of CSS are the same as those of Elasticsearch. You can configure slow query logs via the _settings API. For example, you can run the following command in Kibana to set the index level:

-
PUT /my_index/_settings
-{
-    "index.search.slowlog.threshold.query.warn": "10s",
-    "index.search.slowlog.threshold.fetch.debug": "500ms",
-    "index.indexing.slowlog.threshold.index.info": "5s"
-}
-
  • If a query takes longer than 10 seconds, a WARN log will be generated.
  • If retrieval takes longer than 500 milliseconds, a DEBUG log will be generated.
  • If an index takes longer than 5 seconds, an INFO log will be generated.
-

For details, visit the official website: https://www.elastic.co/guide/cn/elasticsearch/guide/current/logging.html

-
-
- -
- diff --git a/docs/css/umn/css_02_0097.html b/docs/css/umn/css_02_0097.html deleted file mode 100644 index bef3452e..00000000 --- a/docs/css/umn/css_02_0097.html +++ /dev/null @@ -1,37 +0,0 @@ - - -

Connecting User-Built Kibana to an Elasticsearch Cluster

-

To interconnect user-built Kibana with CSS Elasticsearch clusters, the following conditions must be met:

-
  • The local environment must support access from external networks.
  • Kibana is built using ECS in the same VPC as Elasticsearch. Kibana can be accessed from the local public network.
  • Only Kibana images of the OSS version can be connected to Elasticsearch on CSS.
-

Example of a Kibana configuration file:

-
  • Security mode:
    elasticsearch.username: "***"
    -elasticsearch.password: "***"
    -elasticsearch.ssl.verificationMode: none
    -server.ssl.enabled: false
    -server.rewriteBasePath: false
    -server.port: 5601
    -logging.dest: /home/Ruby/log/kibana.log
    -pid.file: /home/Ruby/run/kibana.pid
    -server.host: 192.168.xxx.xxx
    -elasticsearch.hosts: https://10.0.0.xxx:9200
    -elasticsearch.requestHeadersWhitelist: ["securitytenant","Authorization"]
    -opendistro_security.multitenancy.enabled: true
    -opendistro_security.multitenancy.tenants.enable_global: true
    -opendistro_security.multitenancy.tenants.enable_private: true
    -opendistro_security.multitenancy.tenants.preferred: ["Private", "Global"]
    -opendistro_security.multitenancy.enable_filter: false
    -
    -
    -
  • Non-security mode
    server.port: 5601
    -logging.dest: /home/Ruby/log/kibana.log
    -pid.file: /home/Ruby/run/kibana.pid
    -server.host: 192.168.xxx.xxx
    -elasticsearch.hosts: http://10.0.0.xxx:9200
    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0098.html b/docs/css/umn/css_02_0098.html deleted file mode 100644 index 9061ce16..00000000 --- a/docs/css/umn/css_02_0098.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Can I Export Data from Kibana?

-

Exporting data from Kibana requires the SQL Workbench plugin. Currently, you can only export data from Kibana 7.6.2 or later.

-

In SQL Workbench of Kibana, you can enter Elasticsearch SQL statements to query data or click Download to export data. You can export 1 to 200 data records. By default, 200 data records are exported.

-
Figure 1 SQL Workbench
-
-
- -
- diff --git a/docs/css/umn/css_02_0099.html b/docs/css/umn/css_02_0099.html deleted file mode 100644 index fa4a3f5d..00000000 --- a/docs/css/umn/css_02_0099.html +++ /dev/null @@ -1,17 +0,0 @@ - - -

How Do I Query Index Data on Kibana in an ES Cluster?

-

-

Run the following command to query index data through an API on Kibana:

-
GET indexname/_search
-

The returned data is shown in the following figure.

-
Figure 1 Returned data
-
  • took: How many milliseconds the query cost.
  • time_out: Whether a timeout occurred.
  • _shard: Data is split into five shards. All of the five shards have been searched and data is returned successfully. No query result fails to be returned. No data is skipped.
  • hits.total: Number of query results. Three documents are returned in this example.
  • max_score: Score of the returned documents. The document that is more relevant to your search criteria would have a higher score.
  • hits.hits: Detailed information of the returned documents.
-
-
-
- -
- diff --git a/docs/css/umn/css_02_0101.html b/docs/css/umn/css_02_0101.html deleted file mode 100644 index 09754f25..00000000 --- a/docs/css/umn/css_02_0101.html +++ /dev/null @@ -1,16 +0,0 @@ - - -

Can I Modify the TLS Algorithm of an Elasticsearch Cluster?

-

You can modify TLS algorithms in CSS 7.6.2 and later versions.

-
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. The cluster list is displayed.
  3. Click the name of the target cluster to go to the cluster details page.
  4. Select Parameter Configurations, click Edit, expand the Customize parameter, and click Add.

    Add the opendistro_security.ssl.http.enabled_ciphers parameter and set it to ['TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'].

    -

    If the parameter value contains multiple algorithm protocols, enclose the value with a pair of square brackets ([]). If the parameter value is a single algorithm protocol, enclose the value with a pair of single quotation marks(' ').

    -
    -
  5. After the modification is complete, click Submit.In the displayed Submit Configuration dialog box, select the box indicating "I understand that the modification will take effect after the cluster is restarted." and click Yes.

    If the Status is Succeeded in the parameter modification list, the modification has been saved.

    -
  6. Return to the cluster list and choose More > Restart in the Operation column to restart the cluster and make the modification take effect.
-
-
- -
- diff --git a/docs/css/umn/css_02_0102.html b/docs/css/umn/css_02_0102.html deleted file mode 100644 index bf75d966..00000000 --- a/docs/css/umn/css_02_0102.html +++ /dev/null @@ -1,20 +0,0 @@ - - -

How Do I Set the search.max_buckets Parameter for an ES Cluster?

-

Function

If the query results on shards exceed the upper limit of records that can be returned (default value: 10000), you need to increase the limit by changing the value of search.max_buckets.

-
-

Solution

Run the following command on the Dev Tools page of Kibana:
PUT _cluster/settings
-{
-    "persistent": {
-        "search.max_buckets": 20000
-    }
-}
-
-
-
-
- -
- diff --git a/docs/css/umn/css_02_0106.html b/docs/css/umn/css_02_0106.html deleted file mode 100644 index 86f87bd7..00000000 --- a/docs/css/umn/css_02_0106.html +++ /dev/null @@ -1,12 +0,0 @@ - - -

How Do I Obtain the Security Certificate of CSS?

-

The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access.

-
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. The cluster list is displayed.
  3. Click the name of a cluster to go to the cluster details page.
  4. On the Configuration page, click Download Certificate next to Security Mode.
-
-
- -
- diff --git a/docs/css/umn/css_02_0118.html b/docs/css/umn/css_02_0118.html deleted file mode 100644 index a7dabd53..00000000 --- a/docs/css/umn/css_02_0118.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

How Do I Set the Numbers of Index Copies to 0 in Batches?

-
  1. Log in to the Kibana page of the cluster. In the navigation pane, choose Dev Tools.
  2. Modify and run the PUT /*/_settings{"number_of_replicas":0} command.

    Do not directly run the preceding command, because the asterisk (*) may match security indexes. You are advised to specify the index required for the batch operation. Example: PUT /test*/_settings{"number_of_replicas":0}

    -
    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0119.html b/docs/css/umn/css_02_0119.html deleted file mode 100644 index b2ca351b..00000000 --- a/docs/css/umn/css_02_0119.html +++ /dev/null @@ -1,29 +0,0 @@ - - -

How Do I Update the CSS Lifecycle Policy?

-

The CSS lifecycle is implemented using the Index State Management (ISM) of Open Distro. For details about how to configure policies related to the ISM template, see the Open Distro documentation.

-
  1. When a policy is created, the system writes a record to the .opendistro-ism-config index. In the record, _id is the policy name, and the content is the policy definition.
    Figure 1 Writing a data record
    -
  2. After a policy is bound to an index, the system writes another record to the .opendistro-ism-config index. The following figure shows the initial status of a record.
    Figure 2 Initial data status
    -
  3. Run the explain command. Only a policy ID will be returned.
    GET _opendistro/_ism/explain/data2 
    -{
    -  "data2" : {
    -    "index.opendistro.index_state_management.policy_id" : "policy1"
    -  }
    -}
    -

    Open Distro will execute an initialization process to fill the policy content in the record. The following figure shows the initialized data.

    -
    Figure 3 Initialized data
    -

    After the initialization, min_index_age in the policy will be copied.

    -

    The initialized index uses a copy of this policy. The policy update will not take effect on the index.

    -
    -
  1. After the policy is modified, call the change_policy API to update the policy.
    POST _opendistro/_ism/change_policy/data1
    -{
    -  "policy_id": "policy1"
    -}
    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0120.html b/docs/css/umn/css_02_0120.html deleted file mode 100644 index bb8fc994..00000000 --- a/docs/css/umn/css_02_0120.html +++ /dev/null @@ -1,22 +0,0 @@ - - -

Can I Restore a Deleted Cluster?

-

Yes. You can use a snapshot stored in OBS to restore a cluster. A deleted cluster that has no snapshots in OBS cannot be restored. Exercise caution when deleting a cluster.

-

To restore a deleted cluster, perform the following steps:

-
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the displayed Clusters page, click Create Cluster in the upper right corner to create a cluster and enable the snapshot function. Set the OBS bucket and backup path to those of the cluster to be restored.

    To restore a deleted cluster to an existing cluster, set the OBS bucket and backup path to those of the deleted cluster.

    -

    To restore a deleted cluster to a new cluster, ensure they are in the same region. The new cluster version must be the same as or later than that of the deleted cluster. The number of nodes in the new cluster must be greater than half of that in the deleted cluster. Otherwise, the cluster may fail to be restored.

    -
    -
  3. If the status of the new cluster changes to Available, click the cluster name to go to the Cluster Information page.
  4. In the navigation pane on the left, choose Cluster Snapshots.

    In the snapshot management list, you can view the snapshot information of the deleted cluster. If no information is displayed, wait for several minutes and refresh the page.

    -
  5. Locate the target snapshot and click Restore in the Operation column. The Restore page is displayed.
  6. On the Restore page, set restoration parameters.

    Index: Enter the name of the index you want to restore. If you do not specify any index name, data of all indexes will be restored. The value can contain 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?) are not allowed.

    -

    Rename Pattern: Enter a regular expression. Indexes that match the regular expression are restored. The default value index_(.+) indicates restoring data of all indices. The value contains 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed.

    -

    Rename Replacement: Enter the index renaming rule. The default value restored_index_$1 indicates that restored_ is added in front of the names of all restored indexes. The value can contain 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed. You can set Rename Replacement only if you have specified Rename Pattern.

    -

    Cluster: Select the cluster that you want to restore. You can select the current cluster or others. However, you can only restore the snapshot to clusters whose status is Available. If the status of the current cluster is Unavailable, you cannot restore the snapshot to the current cluster. If you select another cluster and two or more indexes in the cluster have the same name, data of all indices with the same name as the name you specify will be overwritten. Therefore, exercise caution when you set the parameters.

    -
    Figure 1 Restoring a snapshot
    -
  7. Click OK. If restoration succeeds, Task Status of the snapshot in the snapshot list will change to Restoration succeeded, and the index data is generated again according to the snapshot information.
-
-
- -
- diff --git a/docs/css/umn/css_02_0124.html b/docs/css/umn/css_02_0124.html deleted file mode 100644 index 7ec7a354..00000000 --- a/docs/css/umn/css_02_0124.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

What Are the Impacts If an Elasticsearch Cluster Has Too Many Shards?

-
  1. A large number of shards in a cluster slows down shard creation.
  2. If automatic index creation is enabled, slow index creation may cause a large number of write requests to be stacked in the memory or result in a cluster break down.
  3. If there are too many shards and you cannot properly monitor workloads, the number of records in a single shard may exceed the threshold, and write requests may be denied.
-
-
- -
- diff --git a/docs/css/umn/css_02_0125.html b/docs/css/umn/css_02_0125.html deleted file mode 100644 index 91fad38e..00000000 --- a/docs/css/umn/css_02_0125.html +++ /dev/null @@ -1,25 +0,0 @@ - - -

How Do I Set the Default Maximum Number of Records Displayed on a Page for an Elasticsearch Cluster

-

Solution

  • Method 1

    Open Kibana and run the following commands on the Dev Tools page:

    -
    PUT _all/_settings?preserve_existing=true
    -{
    -"index.max_result_window" : "10000000"
    -}
    -
  • Method 2

    Run the following commands in the background:

    -
    curl –XPUT 'http://localhost:9200/_all/_setting?preserve_existing=true'-d
    -{
    -"index.max_result_window":"1000000"
    -}
    -
-
-

This configuration consumes memory and CPU resources. Exercise caution when setting this parameter.

-
-

-
-
- -
- diff --git a/docs/css/umn/css_02_0126.html b/docs/css/umn/css_02_0126.html deleted file mode 100644 index 46022774..00000000 --- a/docs/css/umn/css_02_0126.html +++ /dev/null @@ -1,14 +0,0 @@ - - -

Why Does the Disk Usage Increase After the delete_by_query Command Was Executed to Delete Data?

-

Running the delete_by_query command can only add a deletion mark to the target data instead of really deleting it. When you search for data, all data is searched and the data with the deletion mark is filtered out.

-

The space occupied by an index with the deletion mark will not be released immediately after you call the disk deletion API. The disk space is released only when the segment merge is performed next time.

-

Querying the data with deletion mark occupies disk space. In this case, the disk usage increases when you run the disk deletion commands.

-

-
-
- -
- diff --git a/docs/css/umn/css_02_0127.html b/docs/css/umn/css_02_0127.html deleted file mode 100644 index 88569fb1..00000000 --- a/docs/css/umn/css_02_0127.html +++ /dev/null @@ -1,16 +0,0 @@ - - -

Does the Value i of node.roles Indicate an Injest Node?

-

Function

If the value of node.roles of a client node is i, then is this client node an injest node?
  • Are there coordinating only nodes in clusters? Are the client requests distributed to coordinating nodes?
  • Are ingest nodes in the idle state when there are no ingest requests?
-
-
-

Solution

If the value of node.roles of a client node is i, the ingest node mode is enabled.

-
  • The coordinating only nodes of Elasticsearch are called client nodes in CSS. If a cluster has no client nodes, client requests will be distributed to all nodes.
  • An ingest node functions as a set of ELK for data conversion. If there is no ingest requests, ingest nodes are not in the idle state.
-
-
-
- -
- diff --git a/docs/css/umn/css_02_0128.html b/docs/css/umn/css_02_0128.html deleted file mode 100644 index 1b1f185c..00000000 --- a/docs/css/umn/css_02_0128.html +++ /dev/null @@ -1,16 +0,0 @@ - - -

How Do I Convert the Format of a CER Security Certificate?

-

The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access. Most software supports certificates in the .pem or .jks format. You need to convert the format of the CSS security certificate.

-
  • Run the following command to convert the security certificate from .cer to .pem:
    openssl x509 -inform der -in CloudSearchService.cer –out newname.pem
    -
  • Run the following command to convert the security certificate from .cer to .jks:
    keytool -import -alias newname -keystore ./truststore.jks -file ./CloudSearchService.cer 
    -
-

In the preceding commands, newname indicates the user-defined certificate name.

-

After the command is executed, set the certificate password and confirm the password as prompted. Securely store the password. It will be used for accessing the cluster.

-
-
- -
- diff --git a/docs/css/umn/css_02_0130.html b/docs/css/umn/css_02_0130.html deleted file mode 100644 index 7d5bfb44..00000000 --- a/docs/css/umn/css_02_0130.html +++ /dev/null @@ -1,25 +0,0 @@ - - -

How Do I Clear the Cache of a CSS Cluster?

-
  • Clear the fielddata

    During aggregation and sorting, data are converted to the fielddata structure, which occupies a large amount of memory.

    -
    1. Run the following commands on Kibana to check the memory occupied by index fielddata:
      DELETE /_search/scroll
      -{
      -"scroll_id" :
      -"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
      -}
      -
    2. If the memory usage of fielddata is too high, you can run the following command to clear fielddata:
      POST /test/_cache/clear?fielddata=true 
      -
    -

    In the preceding command, test indicates the name of the index whose fielddata occupies a large amount of memory.

    -
  • Clear segments

    The FST structure of each segment is loaded to the memory and will not be cleared. If the number of index segments is too large, the memory usage will be high. You are advised to periodically clear the segments.

    -
    1. Run the following command on Kibana to check the number of segments and their memory usage on each node:
      GET /_cat/nodes?v&h=segments.count,segments.memory&s=segments.memory:desc
      -
    2. If the memory usage of segments is too high, you can delete or disable unnecessary indexes, or periodically combine indexes that are not updated.
    -
  • Clear the cache

    Run the following command on Kibana to clear the cache:

    -
    POST _cache/clear
    -
-
-
- -
- diff --git a/docs/css/umn/css_02_0131.html b/docs/css/umn/css_02_0131.html deleted file mode 100644 index a01b4245..00000000 --- a/docs/css/umn/css_02_0131.html +++ /dev/null @@ -1,16 +0,0 @@ - - -

The Average Memory Usage of an Elasticsearch Cluster Reaches 98%

-

Symptom

The cluster monitoring result shows that the average memory usage of a cluster is 98%. Does it affect cluster performance?

-
-

Possible Cause

In an ES cluster, 50% of the memory is occupied by Elasticsearch and the other 50% is used by Lucene to cache files. It is normal that the average memory usage reaches 98%.

-
-

Solution

You can monitor the cluster memory usage by checking the maximum JVM heap usage and average JVM heap usage.

-
-
-
- -
- diff --git a/docs/css/umn/css_02_0132.html b/docs/css/umn/css_02_0132.html deleted file mode 100644 index ae3fb719..00000000 --- a/docs/css/umn/css_02_0132.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

How Do I Create a Type Under an Index in an Elasticsearch 7.x Cluster?

-

In Elasticsearch 7.x and later versions, types cannot be created for indexes.

-

If you need to use types, add include_type_name=true to the command. For example:

-
PUT _template/urldialinfo_template?include_type_name=true
-

After the command is executed, the following information is displayed:

-
"#! Deprecation: [types removal] Specifying include_type_name in put index template requests is deprecated. The parameter will be removed in the next major version. "
-
-
- -
- diff --git a/docs/css/umn/css_02_0201.html b/docs/css/umn/css_02_0201.html deleted file mode 100644 index 1a4b677b..00000000 --- a/docs/css/umn/css_02_0201.html +++ /dev/null @@ -1,75 +0,0 @@ - - -

How to access Kibana from outside cloud using ELB?

-

Overview

Currently to access Kibana dashboard of CSS Service, a user has to login to OTC consoleand navigate to Kibana login page.

-

-

To make the access convenient a user can utilize the provided python script which willconfigure the Dedicated Loadbalancer of OTC and a user would be able to access Kibanadashboard with a public IP.

-
-

ELB Configuration Script

Script to Configure ELB to be able to access CSS Kibana Dashboard in https mode. ThisScript will create a Dedicated Loadbalancer with a HTTPS Listener which will be forwardingthe traffic to CSS nodes at 5601 port in order to access Kibana Dashboard.

-

Download Script

-
-

Installing Dependency

The script depends on otcextensions library.

-

If you already have Python with pip installed, you can simply run:

-
pip install otcextensions
-
  • To know more details about using otcextensions library you can check otcextensions docs.

    A file called clouds.yaml holds all necessary configuration parameters. The file can beplaced either in the local directory, below the user home directory in .config/openstack orin the system-wide directory /etc/openstack. You may use a second file secure.yaml in thesame directories to extra protect clear-text password credentials. For more details see thesection configuration in the official documentation.

    -

    Minimal sample clouds.yaml file:

    -
    clouds:
    -      otc:
    -        profile: otc
    -        auth:
    -          username: '<USER_NAME>'
    -          password: '<PASSWORD>'
    -          project_name: '<eu-de_project>'
    -          # or project_id: '<123456_PROJECT_ID>'
    -          user_domain_name: 'OTC00000000001000000xxx'
    -          # or user_domain_id: '<123456_DOMAIN_ID>'
    -          auth_url: 'https://iam.eu-de.otc.t-systems.com:443/v3'
    -

    With this configuration you can start using the CLI with openstack --os-cloud otc *command* or by export OS_CLOUD=otc; openstack *command*.

    -
  • Environment variables: Authentication using username/password is often used:
    export OS_AUTH_URL=<url-to-openstack-identity>
    -export OS_PROJECT_NAME=<project-name>
    -export OS_USERNAME=<username>
    -export OS_PASSWORD=<password>
    -export OS_USER_DOMAIN_NAME=<user-domain-name>
    -export OS_IDENTITY_API_VERSION=3
    -
-

In addition to that a regular clouds.yaml configuration file can be used.

-

More information is available at:

-

https://docs.openstack.org/openstacksdk/latest/user/config/configuration.html

-
-

Pre-Requisites

The Script requires ID of a CSS Cluster and Certificate ID for creating a HTTPS listener.

-
  • You can get a CSS Cluster ID by visiting the OTC console -> CSS Dashboard ->Clusters page, and click on your CSS Cluster to get its details.
  • To learn more about Creating and Getting a TLS Certificate, check ELB User Guide
-

Generating a TSL Certificate with openssl command.

-
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout private.key -out certificate.crt
-

When adding the certificate and private key, Certificate Type must be "Server Certificate".

-
-
-

Running The Script

Once you have certificate_id and cluster_id, you are ready to run the script.

-
-

List ELB Flavors

python3 script.py elb-flavors
-

This will print the L7 Flavors supported by Dedicated Loadbalancer. To print all types of flavors supported you may add --all argument to the command. But we need only L7 flavor type, that's why --all argument is set as optional.

-
-

Configure ELB

 python3 script.py elb-configure --cluster-id <cluster_id> --certificate-id <certificate_id>
-

Argument --certificate-id is optional, if it's not provided then Loadbalancer will be configured with HTTP listener.

-

Configure ELB with specific Flavor

-
  • By default ELB will be configured with smallest L7 flavor type. But if you want to have some specific flavor of your choice, follow below commands.
  • Only L7 flavor type must be used since we are creating HTTPS listener.
-
 # Prints list of Loadbalancer flavor Types
-   python3 script.py elb-flavors
-
- # Run the script
-   python3 script.py elb-configure --cluster-id <cluster_id> --certificate-id <certificate_id> --flavor-id <flavor_id>
-
-

Delete ELB

 python3 script.py elb-delete <loadbalancer_name_or_id>
-

Delete ELB and Release Public EIP

-
python3 script.py elb-delete <loadbalancer_id> --release-public-ip
-

Please use the elb-delete command with caution.

-
-
-

Logging

When you run the script a log file is created with name debug.log where you can find details of all the API requests.

-
-
-
- -
- diff --git a/docs/css/umn/css_04_0001.html b/docs/css/umn/css_04_0001.html deleted file mode 100644 index c72f65b4..00000000 --- a/docs/css/umn/css_04_0001.html +++ /dev/null @@ -1,20 +0,0 @@ - - -

What Is Cloud Search Service?

-

CSS

Cloud Search Service (CSS) is a fully hosted distributed search service based on Elasticsearch. You can use it for structured and unstructured data search, and use AI vectors for combine search, statistics, and reports. CSS is a fully managed cloud service of the ELK Stack and is compatible with open-source Elasticsearch, Kibana, and Cerebro.

-

Elasticsearch is an open-source distributed search engine that can be deployed in standalone or cluster mode. The heart of the ELK Stack, Elasticsearch clusters support multi-condition search, statistical analysis, and create visualized reports of structured and unstructured text. For details about Elasticsearch, see the Elasticsearch: The Definitive Guide.

-

CSS can be automatically deployed, allowing you to quickly create Elasticsearch clusters. It provides the search engine optimization practices and does not require your O&M. Additionally, it has a robust monitoring system to present you key metrics, including clusters and query performance so that you can focus on the business logic.

-
-

Functions

  • Compatible with Elasticsearch

    Freely use native Elasticsearch APIs and other software in the ecosystem, such as Beats and Kibana.

    -
  • Support various data sources

    A few simple configurations can allow you to smoothly connect to multiple data sources, such as FTP, OBS, HBase, and Kafka. No extra coding is required.

    -
  • One-click operation

    One-click cluster application, capacity expansion, and restart from small-scale testing to large-scale rollout

    -
  • User-defined snapshot policies

    Trigger backup snapshots manually or configure an automated schedule.

    -
-
-
-
- -
- diff --git a/docs/css/umn/css_04_0002.html b/docs/css/umn/css_04_0002.html deleted file mode 100644 index b6bcaea3..00000000 --- a/docs/css/umn/css_04_0002.html +++ /dev/null @@ -1,26 +0,0 @@ - - -

Scenarios

-

CSS can be used to build search boxes for websites and apps to improve user experience. You can also build a log analysis platform with it, facilitating data-driven O&M and business operations. CSS vector search can help you quickly build smart applications, such as AI-based image search, recommendation, and semantic search.

-

Site Search

CSS can be used to search for website content by keyword as well as search for and recommend commodities on e-commerce sites.

-
  • Real-time search: When site content is updated, you can find the updated content in your search within minutes, or even just seconds.
  • Categorized statistics: You can apply search filters to sort products by category.
  • Custom highlight style: You can define how the search results are highlighted.
-
Figure 1 Site search
-
-

All-Scenario Log Analysis

Analyze the logs of Elastic Load Balance (ELB), servers, containers, and applications. In CSS, the Kafka message buffer queue is used to balance loads in peak and off-peak hours. Logstash is used for data extract, transform and load (ETL). Elasticsearch retrieves and analyzes data. The analysis results are visualized by Kibana and presented to you.

-
  • High cost-effectiveness: CSS separates cold and hot storage, and decouples computing and storage resources, achieving high performance and reducing costs by over 30%.
  • Ease of use: Perform queries in a GUI editor. Easily create reports using drag-and-drop components.
  • Powerful processing capability: CSS can import hundreds of terabytes of data per day, and can process petabytes of data.
-
Figure 2 All-scenario log analysis
-
-

Database Query Acceleration

CSS can be used to accelerate database queries. E-commerce and logistics companies have to respond to a huge number of concurrent order queries within a short period of time. Relational databases, although having good transaction atomicity, are weak in transaction processing, and can rely on CSS to enhance OLTP and OLAP capabilities.

-
  • High performance: Retrieve data from hundreds of millions of records within milliseconds. Text, time, numeric, and spatial data types are supported.
  • High scalability: CSS can be scaled to have over 200 data nodes and over 1000 columns.
  • Zero service interruption: The rolling restart and dual-copy mechanisms can avoid service interruption in case of specifications change or configuration update.
-
-

Vector Search

When you search for unstructured data, such as images, videos, and corpuses, the nearest neighbors or approximate nearest neighbors are searched based on feature vectors. This has the following advantages:

-
  • Efficient and reliable: The vector search engine provides optimal search performance and distributed DR capabilities.
  • Abundant indexes: Multiple indexing algorithms and similarity measurement methods are available and can meet diverse needs.
  • Easy learning: CSS is fully compatible with the open-source Elasticsearch ecosystem.
-
Figure 3 Vector search
-
-
-
- -
- diff --git a/docs/css/umn/css_04_0004.html b/docs/css/umn/css_04_0004.html deleted file mode 100644 index 063372a7..00000000 --- a/docs/css/umn/css_04_0004.html +++ /dev/null @@ -1,62 +0,0 @@ - - -

Related Services

-

Figure 1 shows the relationships between CSS and other services.

-
Figure 1 Relationships between CSS and other services
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1 Relationships between CSS and other services

Service

-

Description

-

Virtual Private Cloud (VPC)

-

CSS clusters are created in the subnets of a VPC. VPCs provide a secure, isolated, and logical network environment for your clusters.

-

Elastic Cloud Server (ECS)

-

In a CSS cluster, each node represents an ECS. When you create a cluster, ECSs are automatically created.

-

Elastic Volume Service (EVS)

-

CSS uses EVS to store index data. When you create a cluster, EVSs are automatically created for cluster data storage.

-

Object Storage Service (OBS)

-

Snapshots of CSS clusters are stored in OBS buckets.

-

Identity and Access Management (IAM)

-

IAM authenticates access to CSS.

-

Cloud Eye

-

CSS uses Cloud Eye to monitor cluster metrics in real time. The supported CSS metrics include the disk usage and cluster health status. You can learn about the disk usage of the cluster based on the disk usage metric. You can learn about the health status of a cluster based on the cluster health status metric.

-

Cloud Trace Service (CTS)

-

With CTS, you can record operations associated with CSS for query, audit, and backtracking operations.

-

Key Management Service (KMS)

-

If disk encryption is enabled on CSS clusters, you need to obtain the key provided by KMS to encrypt and decrypt the disk data.

-
-
-
-
- -
- diff --git a/docs/css/umn/css_04_0005.html b/docs/css/umn/css_04_0005.html deleted file mode 100644 index 52ec5297..00000000 --- a/docs/css/umn/css_04_0005.html +++ /dev/null @@ -1,36 +0,0 @@ - - -

Constraints

-

Restrictions on Clusters and Nodes

The following table describes restrictions on clusters and nodes in CSS.

- -
- - - - - - - - - - -
Table 1 Restrictions on Elasticsearch clusters and nodes

Cluster and Node

-

Restriction

-

Maximum number of nodes in a cluster

-

32

-

Minimum number of nodes in a cluster

-

1

-
-
-
-

Restrictions on Browsers

  • You are advised to use the following browsers to access the CSS management console:
    • Google Chrome 36.0 or later
    • Mozilla Firefox 35.0 or later
    -
  • You are advised to use the following browsers to access Kibana integrated in CSS:
    • Google Chrome 36.0 or later
    • Mozilla Firefox 35.0 or later
    -
-
-
-
- -
- diff --git a/docs/css/umn/css_04_0007.html b/docs/css/umn/css_04_0007.html deleted file mode 100644 index c3d4d2ee..00000000 --- a/docs/css/umn/css_04_0007.html +++ /dev/null @@ -1,19 +0,0 @@ - - -

Product Components

-

CSS supports Kibana and Cerebro.

-

Kibana

Kibana is an open-source data analytics and visualization platform that works with Elasticsearch. You can use Kibana to search for and view data stored in Elasticsearch indexes and display data in charts and maps. For details about Kibana, visit https://www.elastic.co/guide/en/kibana/current/index.html.

-

By default, the Elasticsearch cluster of CSS provides the access channel to Kibana. You can quickly access Kibana without installing it. CSS is compatible with Kibana visualizations and Elasticsearch statistical and analysis capabilities.

-
  • Over 10 data presentation modes
  • Nearly 20 data statistics methods
  • Classification in various dimensions, such as time and tag
-
-

Cerebro

Cerebro is an open-source Elasticsearch web admin tool built using Scala, Play Framework, AngularJS, and Bootstrap. Cerebro allows you to manage clusters on a visualized page, such as executing REST requests, modifying Elasticsearch configurations, monitoring real-time disks, cluster loads, and memory usage.

-

By default, the Elasticsearch cluster of CSS provides the access channel to Cerebro. You can quickly access Cerebro without installing it. CSS is fully compatible with the open-source Cerebro and adapts to the latest 0.8.4 version.

-
  • Elasticsearch visualized and real-time load monitoring
  • Elasticsearch visualized data management
-
-
-
- -
- diff --git a/docs/css/umn/css_04_0010.html b/docs/css/umn/css_04_0010.html deleted file mode 100644 index 7947f807..00000000 --- a/docs/css/umn/css_04_0010.html +++ /dev/null @@ -1,43 +0,0 @@ - - -

Advantages

-

CSS has the following features and advantages.

-

Efficient and Ease of Use

You can get insights from terabyte-scale data in milliseconds. In addition, you can use the visualized platform for data display and analysis.

-
-

Flexible and Scalable

You can request resources as needed and perform capacity expansion online with zero service interruption.

-
-

Easy O&M

CSS is a fully-managed, out-of-the-box service. You can start using it with several clicks, instead of managing clusters.

-
-

Kernel Enhancement

  • Vector search

    When you search for unstructured data, such as images, videos, and corpuses, the nearest neighbors or approximate nearest neighbors are searched based on feature vectors.

    -
  • Decoupled storage and compute

    CSS provides an API for freezing indexes. Hot data stored on SSD can be dumped to OBS to reduce data storage costs and decouple compute from storage.

    -
  • Flow control

    CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTPS connections, and the maximum HTTP connections for a node. Each function has an independent control switch.

    -
  • Large query isolation

    CSS allows you to separately manage large queries. You can isolate query requests that consume a large amount of memory or take a long period of time.

    -
  • Index monitoring

    CSS monitors various metrics of the running status and change trend of cluster indexes to measure service usage and handle potential risks in a timely manner, ensuring that clusters can run stably.

    -
  • Enhanced monitoring

    CSS supports enhanced cluster monitoring. It can monitor the P99 latency of cluster search requests and the HTTP status codes of clusters.

    -
-
-

High Reliability

You can choose to trigger snapshots manually or on a periodic basis for backup and restore snapshots to the current or other clusters. Snapshots of a cluster can be restored to another cluster to implement cluster data migration.

-
  • Automatic backup using snapshots

    CSS provides the backup function. You can enable the automatic backup function on the CSS management console and set the backup period based on the actual requirements.

    -

    Automatic backup is to back up the index data of a cluster. Index backup is implemented by creating cluster snapshots. For backup of the first time, you are advised to back up all index data.

    -

    CSS allows you to store the snapshot data of Elasticsearch instances to OBS, thereby achieving cross-region backup with the cross-region replication function of OBS.

    -
-
  • Restoring data using snapshots

    If data loss occurs or you want to retrieve data of a certain period, click Restore in the Operation column in the Snapshots area to restore the backup index data to the specified cluster by using existing snapshots.

    -
-
-

High Security

CSS ensures secure running of data and services from the following aspects:

-
  • Network isolation

    The network is divided into two planes, service plane and management plane. The two planes are deployed and isolated physically to ensure the security of the service and management networks.

    -
    • Service plane: refers to the network plane of the cluster. It provides service channels for users and delivers data definition, index, and search capabilities.
    • Management plane: refers to the management console. It is used to manage CSS.
    • VPC security groups or isolated networks ensure the security of hosts.
    -
  • Access control
    • Using the network access control list (ACL), you can permit or deny the network traffic entering and exiting the subnets.
    • Internal security infrastructure (including the network firewall, intrusion detection system, and protection system) can monitor all network traffic that enters or exits the VPC through the IPsec VPN.
    • User authentication and index-level authentication are supported. CSS also supports interconnection with third-party user management systems.
    -
  • Data security
    • In CSS, the multi-replica mechanism is used to ensure user data security.
    • Communication between the client and server can be encrypted using SSL.
    -
  • Operation audit

    Cloud Trace Service (CTS) can be used to perform auditing on key logs and operations.

    -
-
-

High Availability

To prevent data loss and minimize the cluster downtime in case of service interruption, CSS supports cross-AZ cluster deployment. When creating a cluster, you can select two or three AZs in the same region. The system will automatically allocate nodes to these AZs. If an AZ is faulty, the remaining AZs can still run properly, significantly enhancing cluster availability and improving service stability.

-
-
-
- -
- diff --git a/docs/css/umn/css_04_0012.html b/docs/css/umn/css_04_0012.html deleted file mode 100644 index 8c18449e..00000000 --- a/docs/css/umn/css_04_0012.html +++ /dev/null @@ -1,29 +0,0 @@ - - -

Basic Concepts

-

Cluster

CSS provides functions on a per cluster basis. A cluster represents an independent search service that consists of multiple nodes.

-
-

Index

An index stores Elasticsearch data. It is a logical space in which one or more shards are grouped.

-
-

Shard

An index can potentially store a large amount of data that can exceed the hardware limits of a single node. To solve this problem, Elasticsearch provides the ability to subdivide your index into multiple pieces called shards. When you create an index, you can simply define the number of shards that you want. Each shard is in itself a fully-functional and independent "index" that can be hosted on any node in the cluster.

-

You need to specify the number of shards before creating an index and cannot change the number after the index is successfully created.

-
-

Replica

A replica is a copy of the actual storage index in a shard. It can be understood as a backup of the shard. Replicas help prevent single point of failures (SPOFs). You can increase or decrease the number of replicas based on your service requirements.

-
-

Document

An entity for Elasticsearch storage. Equivalent to the row in the RDB, the document is the basic unit that can be indexed.

-
-

Document Type

Similar to a table in the RDB, type is used to distinguish between different data.

-

In versions earlier than Elasticsearch 7.x, each index can contain multiple document types. Elasticsearch defines a type for each document.

-

Elasticsearch 7.x and later versions only support documents of the .doc type.

-
-

Mapping

A mapping is used to restrict the type of a field and can be automatically created based on data. It is similar to the schema in the database.

-
-

Field

The field is the minimum unit of a document. It is similar to the column in the database.

-
-
-
- -
- diff --git a/docs/css/umn/css_04_0014.html b/docs/css/umn/css_04_0014.html deleted file mode 100644 index c99c961e..00000000 --- a/docs/css/umn/css_04_0014.html +++ /dev/null @@ -1,362 +0,0 @@ - - -

Permissions Management

-

If you need to assign different permissions to employees in your organization to access your CSS resources, IAM is a good choice for fine-grained permissions management. IAM provides identity authentication, permissions management, and access control.

-

If the current account has met your requirements, you do not need to create an independent IAM user for permission management. Then you can skip this section. This will not affect other functions of CSS.

-

With IAM, you can use your account to create IAM users for your employees and assign permissions to the users to control their access to your resources. IAM is free of charge. You pay only for the resources you purchase.

-

Permissions Management

New IAM users do not have any permissions assigned by default. You need to first add them to one or more groups and attach policies or roles to these groups. The users then inherit permissions from the groups and can perform specified operations on cloud services based on the permissions they have been assigned.

-

CSS is a project-level service deployed in specific physical regions. Therefore, CSS permissions are assigned to projects in specific regions and only take effect in these regions. If you want the permissions to take effect in all regions, you need to assign the permissions to projects in each region. When accessing CSS, the users need to switch to a region where they have been authorized to use cloud services.

-

You can use roles and policies to grant users permissions.

-
  • Roles are a type of coarse-grained authorization mechanism that defines permissions related to user responsibilities. There are only a limited number of service-level roles for granting permissions to users. When using roles to grant permissions, you need to also assign dependency roles. Roles are not ideal for fine-grained authorization and secure access control.
  • Policies are a type of fine-grained authorization mechanism that defines the permissions for performing operations on specific cloud resources under certain conditions. This mechanism allows for more flexible authorization. Policies allow you to meet requirements for more secure access control. For example, CSS administrators can only grant CSS users the permissions needed for managing a particular type of CSS resources.
-

Table 1 lists all the system-defined roles and policies supported by CSS.

-
  • Elasticsearch Administrator depends on the roles of other services to execute its permissions. Therefore, if you assign the Elasticsearch Administrator role to a user, assign its dependency roles at the same time.
  • CSS FullAccess and CSS ReadOnlyAccess can be used to control the resources that users can access. For example, if you want your software developers to use CSS resources but not delete them or perform any high-risk operations, you can create IAM users for these software developers and assign them only the permissions required for using CSS resources.
- -
- - - - - - - - - - - - - - - - - - - - - -
Table 1 CSS system permission

Role/Policy Name

-

Type

-

Role/Policy Description

-

Dependency

-

Elasticsearch Administrator

-

System-defined role

-

Full permissions for CSS.

-

This role depends on the Tenant Guest and Server Administrator roles in the same project.

-
  • Tenant Guest: A global role, which must be assigned in the global project.
  • Server Administrator: A project-level role, which must be assigned in the same project
-

CSS FullAccess

-

System-defined policy

-

Full CSS permissions granted through policies. Users with these permissions can perform all operations on CSS.

-

Some functions depend on corresponding permissions. To use certain functions, you need to enable the dependent permissions in the same project.

-

The VPCEndpoint Administrator system role is required for accessing a cluster through a VPC endpoint.

-

Some operations depend on the following permissions:

-
  • Automatically create an agency:

    iam:agencies:createAgency

    -
  • View the agency list:

    iam:agencies:listAgencies

    -

    iam:permissions:listRolesForAgencyOnDomain

    -

    iam:permissions:listRolesForAgencyOnProject

    -

    iam:permissions:listRolesForAgency

    -
  • Display enterprise projects and predefined tags on the console:

    eps:enterpriseProjects:list

    -

    tms:predefineTags:list

    -
  • Use the snapshot, word dictionary, and log management functions:

    obs:bucket:Get*

    -

    obs:bucket:List*

    -

    obs:object:List*

    -

    obs:object:Get*

    -

    obs:bucket:HeadBucket

    -

    obs:object:PutObject

    -

    obs:object:DeleteObject

    -
-

CSS ReadOnlyAccess

-

System-defined policy

-

Read-only permissions for CSS. Users with these permissions can only view CSS data.

-

Some functions depend on corresponding permissions. To use certain functions, you need to enable the dependent permissions in global services.

-

Some operations depend on the following permissions:

-
  • View the agency list:

    iam:agencies:listAgencies

    -

    iam:permissions:listRolesForAgencyOnDomain

    -

    iam:permissions:listRolesForAgencyOnProject

    -

    iam:permissions:listRolesForAgency

    -
  • Display enterprise projects and predefined tags on the console:

    eps:enterpriseProjects:list

    -

    tms:predefineTags:list

    -
  • Use the snapshot, word dictionary, and log management functions:

    obs:bucket:Get*

    -

    obs:bucket:List*

    -

    obs:object:List*

    -

    obs:object:Get*

    -

    obs:bucket:HeadBucket

    -
-
-
-

Table 2 lists the common operations supported by each system permission of CSS. Please choose proper system permissions according to this table.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 2 Common operations supported by each system-defined policy

Operation

-

CSS FullAccess

-

CSS ReadOnlyAccess

-

Elasticsearch Administrator

-

Remarks

-

Creating a cluster

-

√

-

x

-

√

-

-

-

Querying a cluster list

-

√

-

√

-

√

-

-

-

Querying cluster details

-

√

-

√

-

√

-

-

-

Deleting a cluster

-

√

-

x

-

√

-

-

-

Restarting a cluster

-

√

-

x

-

√

-

-

-

Expanding cluster capacity

-

√

-

x

-

√

-

-

-

Adding instances and expanding instance storage capacity

-

√

-

x

-

√

-

-

-

Querying tags of a specified cluster

-

√

-

√

-

√

-

-

-

Querying all tags

-

√

-

√

-

√

-

-

-

Loading a custom word dictionary

-

√

-

x

-

√

-

Depends on OBS and IAM permissions

-

Querying the status of a custom word dictionary

-

√

-

√

-

√

-

-

-

Deleting a custom word dictionary

-

√

-

x

-

√

-

-

-

Automatically setting basic configurations of a cluster snapshot

-

√

-

x

-

√

-

Depends on OBS and IAM permissions

-

Modifying basic configurations of a cluster snapshot

-

√

-

x

-

√

-

Depends on OBS and IAM permissions

-

Setting the automatic snapshot creation policy

-

√

-

x

-

√

-

-

-

Querying the automatic snapshot creation policy

-

√

-

√

-

√

-

-

-

Manually creating a snapshot

-

√

-

x

-

√

-

-

-

Querying the snapshot list

-

√

-

√

-

√

-

-

-

Restoring a snapshot

-

√

-

x

-

√

-

-

-

Deleting a snapshot

-

√

-

x

-

√

-

-

-

Disabling the snapshot function

-

√

-

x

-

√

-

-

-

Modifying specifications

-

√

-

x

-

√

-

-

-

Scaling in clusters

-

√

-

x

-

√

-

-

-
-
-
-
-
- -
- diff --git a/docs/css/umn/css_04_0019.html b/docs/css/umn/css_04_0019.html deleted file mode 100644 index 2db27c4c..00000000 --- a/docs/css/umn/css_04_0019.html +++ /dev/null @@ -1,12 +0,0 @@ - - -

Quotas

-

CSS uses the following resources:

-
  • Instance
  • CPU
  • Memory (GB)
  • Disk quantity
  • Disk size (GB)
-
-
- -
- diff --git a/docs/css/umn/en-us_formulaimage_0000001667002558.png b/docs/css/umn/en-us_formulaimage_0000001575321958.png similarity index 100% rename from docs/css/umn/en-us_formulaimage_0000001667002558.png rename to docs/css/umn/en-us_formulaimage_0000001575321958.png diff --git a/docs/css/umn/en-us_formulaimage_0000001714802349.png b/docs/css/umn/en-us_formulaimage_0000001575640870.png similarity index 100% rename from docs/css/umn/en-us_formulaimage_0000001714802349.png rename to docs/css/umn/en-us_formulaimage_0000001575640870.png diff --git a/docs/css/umn/en-us_formulaimage_0000001666842858.png b/docs/css/umn/en-us_formulaimage_0000001625680497.png similarity index 100% rename from docs/css/umn/en-us_formulaimage_0000001666842858.png rename to docs/css/umn/en-us_formulaimage_0000001625680497.png diff --git a/docs/css/umn/en-us_formulaimage_0000001714802345.png b/docs/css/umn/en-us_formulaimage_0000001626000845.png similarity index 100% rename from docs/css/umn/en-us_formulaimage_0000001714802345.png rename to docs/css/umn/en-us_formulaimage_0000001626000845.png diff --git a/docs/css/umn/en-us_image_0000001667002358.png b/docs/css/umn/en-us_image_0000001223434560.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002358.png rename to docs/css/umn/en-us_image_0000001223434560.png diff --git a/docs/css/umn/en-us_image_0000001666842622.png b/docs/css/umn/en-us_image_0000001223594508.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842622.png rename to docs/css/umn/en-us_image_0000001223594508.png diff --git a/docs/css/umn/en-us_image_0000001519064934.png b/docs/css/umn/en-us_image_0000001519064934.png new file mode 100644 index 0000000000000000000000000000000000000000..68651e9f7b44cf679cf8092b7eed8f82bd1896be GIT binary patch literal 88013 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

HTfJjOF(!GBKgh5 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 Zd2@8dm(Z&pn}7dD(dSanvY)(k{~vy4Wz_%x literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001519225242.png b/docs/css/umn/en-us_image_0000001519225242.png new file mode 100644 index 0000000000000000000000000000000000000000..42dcd9b947fec57be8f6cd4e7ec1202133180d31 GIT binary patch literal 19043 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

8F?=`QzR_ za-j+Si*`AQ64qm1%p<$xcAc7`%R6yC$}?_?oP#tUN0QKVjEr zcOn_pIk#kR>vpq{o+oJWs1~1TfyGEq*Pd?+JKUbk=rh0rg}z(ioky~2)q46iAu0>M zaOurHEx2EY3%|{C{&-OAf zOy{=gM>Q**ES1``mz3j=Uo6KZMSsf3AScOq39GCbWo1`NiG0&bBT7k;&R^jucWi>w zO?opfut1@GweS7u!Ut30zCK>8r20+?JX|n1y}gEicEm-_efHZXewAx}OuEN3L)+RC z?7&;ZH(Q8sE`<9ps?%?JWBln>Znf{7)q|ZRwKSqpm2P1XL!MqssJ2ypvf zo?dEdYBBw4#@78?s3yC==;#b{6mLeV9@l3&ccEn`nfMk=?^|%p?ylh3*w|bpC2^G1 zMbZy)zOnYtNSzLA`~0WZ^7qL`BFou1a$W@jr}@|Qs2m?=I;&7)B= zd3S|khqCUa)RODShGU-@uid_Aank2ofAzli)^N-dF4Ql1xA1xnV^T$Y91YHP+yR=42aVEqLJyFZ} z$UHec&B2M!w#Pz10&CqiG^DgNfRb?_~=+7-3e&^=J zVC3@?6J_?@WMwNHsg=Nun=9Ax-j<67Q2G|~HlsIUtXkFvw7X?njN`1^iNU!F`0CGE zAqo{RW&nu%7BHAn>wN%nlU8NrgGg{T2{;*#q9AmDq-me zH%&LShcmiz49k~|@XwzL)gIPze2DCrz8w0YX`(Oji4J(!_a1!5!e9)eMk5kC`Vh$L z8&Bd(vYZ7DNesw4A@A9U9}~_{Gc$1y?QP=09u*fCxR^=nuK+%q&9|%_aapzpGZh|G zs++9Tkjc>@%lwU?i-Er8#rtB`R!)pfAmYRR>KV*%NXWdx02!BfTkGUKkr4mz;5t%R z?|wSL&D?8C@RpnBG3H0RnZji^Yfi{F&H_GmR?thB)mKRgB&yHf{a;hp|2en(u)k}K zGq8w|fk1jDhj#9eMPU4qx|h&X(7#1@+gubtvFi!~x#jp=KN}yiP%$-H=T5UEttveKkbA z0Ge!iOiY8OhWh_`F81@d;*xol;HpS$h+Pm X&!SrW(ZABbJt3+}4;2fL&))qTbgb|9 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001569480321.png b/docs/css/umn/en-us_image_0000001569480321.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5abf744ed7e99cdb2f268014b2c1e054adab3d GIT binary patch literal 30347 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001569656909.png b/docs/css/umn/en-us_image_0000001569656909.png new file mode 100644 index 0000000000000000000000000000000000000000..07a34ea4bbe6b403a784766d5fb53fc5304d29c7 GIT binary patch literal 41663 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 z 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 XKWcDZmEGU+^?_zEYg3}hmFRy1Uci*C literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001667002486.png b/docs/css/umn/en-us_image_0000001575311218.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002486.png rename to docs/css/umn/en-us_image_0000001575311218.png diff --git a/docs/css/umn/en-us_image_0000001714802265.png b/docs/css/umn/en-us_image_0000001575312654.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802265.png rename to docs/css/umn/en-us_image_0000001575312654.png diff --git a/docs/css/umn/en-us_image_0000001666842594.png b/docs/css/umn/en-us_image_0000001575313618.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842594.png rename to docs/css/umn/en-us_image_0000001575313618.png diff --git a/docs/css/umn/en-us_image_0000001666842674.png b/docs/css/umn/en-us_image_0000001575316322.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842674.png rename to docs/css/umn/en-us_image_0000001575316322.png diff --git a/docs/css/umn/en-us_image_0000001667002462.png b/docs/css/umn/en-us_image_0000001575319174.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002462.png rename to docs/css/umn/en-us_image_0000001575319174.png diff --git a/docs/css/umn/en-us_image_0000001667002546.png b/docs/css/umn/en-us_image_0000001575470374.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002546.png rename to docs/css/umn/en-us_image_0000001575470374.png diff --git a/docs/css/umn/en-us_image_0000001667002502.png b/docs/css/umn/en-us_image_0000001575471322.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002502.png rename to docs/css/umn/en-us_image_0000001575471322.png diff --git a/docs/css/umn/en-us_image_0000001666842766.png b/docs/css/umn/en-us_image_0000001575471938.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842766.png rename to docs/css/umn/en-us_image_0000001575471938.png diff --git a/docs/css/umn/en-us_image_0000001667002610.png b/docs/css/umn/en-us_image_0000001575475526.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002610.png rename to docs/css/umn/en-us_image_0000001575475526.png diff --git a/docs/css/umn/en-us_image_0000001666842746.png b/docs/css/umn/en-us_image_0000001575478486.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842746.png rename to docs/css/umn/en-us_image_0000001575478486.png diff --git a/docs/css/umn/en-us_image_0000001714922197.png b/docs/css/umn/en-us_image_0000001575482950.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922197.png rename to docs/css/umn/en-us_image_0000001575482950.png diff --git a/docs/css/umn/en-us_image_0000001714922093.png b/docs/css/umn/en-us_image_0000001575631554.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922093.png rename to docs/css/umn/en-us_image_0000001575631554.png diff --git a/docs/css/umn/en-us_image_0000001714921949.png b/docs/css/umn/en-us_image_0000001575631754.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714921949.png rename to docs/css/umn/en-us_image_0000001575631754.png diff --git a/docs/css/umn/en-us_image_0000001666842898.png b/docs/css/umn/en-us_image_0000001575631898.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842898.png rename to docs/css/umn/en-us_image_0000001575631898.png diff --git a/docs/css/umn/en-us_image_0000001666842670.png b/docs/css/umn/en-us_image_0000001575631966.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842670.png rename to docs/css/umn/en-us_image_0000001575631966.png diff --git a/docs/css/umn/en-us_image_0000001714921933.png b/docs/css/umn/en-us_image_0000001575632538.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714921933.png rename to docs/css/umn/en-us_image_0000001575632538.png diff --git a/docs/css/umn/en-us_image_0000001667002402.png b/docs/css/umn/en-us_image_0000001575635254.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002402.png rename to docs/css/umn/en-us_image_0000001575635254.png diff --git a/docs/css/umn/en-us_image_0000001666842726.png b/docs/css/umn/en-us_image_0000001575635862.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842726.png rename to docs/css/umn/en-us_image_0000001575635862.png diff --git a/docs/css/umn/en-us_image_0000001666842902.jpg b/docs/css/umn/en-us_image_0000001575637658.jpg similarity index 100% rename from docs/css/umn/en-us_image_0000001666842902.jpg rename to docs/css/umn/en-us_image_0000001575637658.jpg diff --git a/docs/css/umn/en-us_image_0000001714802245.png b/docs/css/umn/en-us_image_0000001575638082.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802245.png rename to docs/css/umn/en-us_image_0000001575638082.png diff --git a/docs/css/umn/en-us_image_0000001666842866.png b/docs/css/umn/en-us_image_0000001575642526.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842866.png rename to docs/css/umn/en-us_image_0000001575642526.png diff --git a/docs/css/umn/en-us_image_0000001714802117.png b/docs/css/umn/en-us_image_0000001575791646.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802117.png rename to docs/css/umn/en-us_image_0000001575791646.png diff --git a/docs/css/umn/en-us_image_0000001667002574.png b/docs/css/umn/en-us_image_0000001575802422.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002574.png rename to docs/css/umn/en-us_image_0000001575802422.png diff --git a/docs/css/umn/en-us_image_0000001667002434.png b/docs/css/umn/en-us_image_0000001575802426.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002434.png rename to docs/css/umn/en-us_image_0000001575802426.png diff --git a/docs/css/umn/en-us_image_0000001714922229.png b/docs/css/umn/en-us_image_0000001578525026.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922229.png rename to docs/css/umn/en-us_image_0000001578525026.png diff --git a/docs/css/umn/en-us_image_0000001667002374.png b/docs/css/umn/en-us_image_0000001578844214.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002374.png rename to docs/css/umn/en-us_image_0000001578844214.png diff --git a/docs/css/umn/en-us_image_0000001666842614.png b/docs/css/umn/en-us_image_0000001579004138.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842614.png rename to docs/css/umn/en-us_image_0000001579004138.png diff --git a/docs/css/umn/en-us_image_0000001714922185.png b/docs/css/umn/en-us_image_0000001583151098.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922185.png rename to docs/css/umn/en-us_image_0000001583151098.png diff --git a/docs/css/umn/en-us_image_0000001714922189.png b/docs/css/umn/en-us_image_0000001583151102.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922189.png rename to docs/css/umn/en-us_image_0000001583151102.png diff --git a/docs/css/umn/en-us_image_0000001714802137.png b/docs/css/umn/en-us_image_0000001583310486.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802137.png rename to docs/css/umn/en-us_image_0000001583310486.png diff --git a/docs/css/umn/en-us_image_0000001714802393.png b/docs/css/umn/en-us_image_0000001583470414.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802393.png rename to docs/css/umn/en-us_image_0000001583470414.png diff --git a/docs/css/umn/en-us_image_0000001714922221.png b/docs/css/umn/en-us_image_0000001583470442.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922221.png rename to docs/css/umn/en-us_image_0000001583470442.png diff --git a/docs/css/umn/en-us_image_0000001714802389.png b/docs/css/umn/en-us_image_0000001606771374.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802389.png rename to docs/css/umn/en-us_image_0000001606771374.png diff --git a/docs/css/umn/en-us_image_0000001667002382.png b/docs/css/umn/en-us_image_0000001606924426.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002382.png rename to docs/css/umn/en-us_image_0000001606924426.png diff --git a/docs/css/umn/en-us_image_0000001606925014.png b/docs/css/umn/en-us_image_0000001606925014.png new file mode 100644 index 0000000000000000000000000000000000000000..56bd75756c9484ba757f0a0e9ed25e67b2c6286f GIT binary patch literal 27329 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001666842702.png b/docs/css/umn/en-us_image_0000001607164138.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842702.png rename to docs/css/umn/en-us_image_0000001607164138.png diff --git a/docs/css/umn/en-us_image_0000001714802405.png b/docs/css/umn/en-us_image_0000001607164742.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802405.png rename to docs/css/umn/en-us_image_0000001607164742.png diff --git a/docs/css/umn/en-us_image_0000001607405894.png b/docs/css/umn/en-us_image_0000001607405894.png new file mode 100644 index 0000000000000000000000000000000000000000..d5648897fccf2e2a4df519d16fef5f2bd91daad6 GIT binary patch literal 40082 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 ~%BtNC=-q1YR%556*3`<%_ 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 -%m^EL~)vZ-=oWB%=q+~wK(1(5sQqJB%mHRsfz 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 JE_-AZ`Y&ubrTPE> literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001607766004.png b/docs/css/umn/en-us_image_0000001607766004.png new file mode 100644 index 0000000000000000000000000000000000000000..36cbf08ce0d02e46a8cdf24b6499c4934947215d GIT binary patch literal 52633 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001607890430.png b/docs/css/umn/en-us_image_0000001607890430.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b18177ea9db07b6e6071ba083e76ebfc12da24 GIT binary patch literal 48459 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�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 jMr(m*YGklF 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001607935630.png b/docs/css/umn/en-us_image_0000001607935630.png new file mode 100644 index 0000000000000000000000000000000000000000..61a00481f918f7be46c23d415b82b50170a6319b GIT binary patch literal 50923 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001666842834.png b/docs/css/umn/en-us_image_0000001625669589.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842834.png rename to docs/css/umn/en-us_image_0000001625669589.png diff --git a/docs/css/umn/en-us_image_0000001714802113.png b/docs/css/umn/en-us_image_0000001625671361.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802113.png rename to docs/css/umn/en-us_image_0000001625671361.png diff --git a/docs/css/umn/en-us_image_0000001625673045.png b/docs/css/umn/en-us_image_0000001625673045.png new file mode 100644 index 0000000000000000000000000000000000000000..23d55f962d0a87cad31050c63cb26c0d4edd4322 GIT binary patch literal 28062 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001666842890.png b/docs/css/umn/en-us_image_0000001625674753.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842890.png rename to docs/css/umn/en-us_image_0000001625674753.png diff --git a/docs/css/umn/en-us_image_0000001714922113.png b/docs/css/umn/en-us_image_0000001625790509.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922113.png rename to docs/css/umn/en-us_image_0000001625790509.png diff --git a/docs/css/umn/en-us_image_0000001714922157.png b/docs/css/umn/en-us_image_0000001625791329.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922157.png rename to docs/css/umn/en-us_image_0000001625791329.png diff --git a/docs/css/umn/en-us_image_0000001625794717.png b/docs/css/umn/en-us_image_0000001625794717.png new file mode 100644 index 0000000000000000000000000000000000000000..f78b9bf78d6019548aa9e7f8da0d915fd6393ac5 GIT binary patch literal 20491 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 RK$5?&esJ|VM|2L(_z&`f@Cg6_ literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001714802241.png b/docs/css/umn/en-us_image_0000001625797681.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802241.png rename to docs/css/umn/en-us_image_0000001625797681.png diff --git a/docs/css/umn/en-us_image_0000001714802369.png b/docs/css/umn/en-us_image_0000001625802121.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802369.png rename to docs/css/umn/en-us_image_0000001625802121.png diff --git a/docs/css/umn/en-us_image_0000001666842786.png b/docs/css/umn/en-us_image_0000001625870985.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842786.png rename to docs/css/umn/en-us_image_0000001625870985.png diff --git a/docs/css/umn/en-us_image_0000001667002482.png b/docs/css/umn/en-us_image_0000001625871637.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002482.png rename to docs/css/umn/en-us_image_0000001625871637.png diff --git a/docs/css/umn/en-us_image_0000001714922161.png b/docs/css/umn/en-us_image_0000001625875305.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922161.png rename to docs/css/umn/en-us_image_0000001625875305.png diff --git a/docs/css/umn/en-us_image_0000001714802249.png b/docs/css/umn/en-us_image_0000001625878165.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802249.png rename to docs/css/umn/en-us_image_0000001625878165.png diff --git a/docs/css/umn/en-us_image_0000001714802261.png b/docs/css/umn/en-us_image_0000001625991489.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802261.png rename to docs/css/umn/en-us_image_0000001625991489.png diff --git a/docs/css/umn/en-us_image_0000001714922097.png b/docs/css/umn/en-us_image_0000001625991493.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922097.png rename to docs/css/umn/en-us_image_0000001625991493.png diff --git a/docs/css/umn/en-us_image_0000001667002614.png b/docs/css/umn/en-us_image_0000001625991693.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002614.png rename to docs/css/umn/en-us_image_0000001625991693.png diff --git a/docs/css/umn/en-us_image_0000001714802089.png b/docs/css/umn/en-us_image_0000001625992469.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802089.png rename to docs/css/umn/en-us_image_0000001625992469.png diff --git a/docs/css/umn/en-us_image_0000001666842894.png b/docs/css/umn/en-us_image_0000001625995085.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842894.png rename to docs/css/umn/en-us_image_0000001625995085.png diff --git a/docs/css/umn/en-us_image_0000001666842750.png b/docs/css/umn/en-us_image_0000001625998045.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842750.png rename to docs/css/umn/en-us_image_0000001625998045.png diff --git a/docs/css/umn/en-us_image_0000001714922225.png b/docs/css/umn/en-us_image_0000001628524809.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922225.png rename to docs/css/umn/en-us_image_0000001628524809.png diff --git a/docs/css/umn/en-us_image_0000001714922233.png b/docs/css/umn/en-us_image_0000001633030485.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922233.png rename to docs/css/umn/en-us_image_0000001633030485.png diff --git a/docs/css/umn/en-us_image_0000001633111029.png b/docs/css/umn/en-us_image_0000001633111029.png new file mode 100644 index 0000000000000000000000000000000000000000..1c730028db180264ba405a91a5e490ad75d1a8eb GIT binary patch literal 14643 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001666842850.png b/docs/css/umn/en-us_image_0000001633311021.png similarity index 100% rename from docs/css/umn/en-us_image_0000001666842850.png rename to docs/css/umn/en-us_image_0000001633311021.png diff --git a/docs/css/umn/en-us_image_0000001633709689.png b/docs/css/umn/en-us_image_0000001633709689.png new file mode 100644 index 0000000000000000000000000000000000000000..1075b5afc28ce706d5e6e8da850a13f8078034ad GIT binary patch literal 295 zcmV+?0oeYDP)U7=yxag({AKsz>z{C{9s@=>ae(3<~u-+k|P-{E&2}h|UDVuq-dhPbhH0 zRh(cVqrXozXUa02fVKlx_RiGSJJ9yDfn+)ZO$jIk)B#w)TIrr<@L+-h7#jTngKbci zz%VDG(#GIVu%A3o3Vfz}s{>!&OO_c1z&I)$HY{;Oz%*2rT$xP~w7MRjisSGt*002ovPDHLkV1graa)tl^ literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001634029125.png b/docs/css/umn/en-us_image_0000001634029125.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb55b6d63665189382ab6d6f1f2f9ddb1d510ed GIT binary patch literal 619 zcmV-x0+juUP)85cs52#rOoUlCSZVWma5Y#l=ybVSes6ii-X#2Xkl~4WM1`FilSDWWB&N6E_IbEo zZ^fuDR6+i#NI?-$pew~(Tg$n33w&9gVQ6`a9a9}0w|uzjEf@>)ybT<96^YLu#uy5% zU~ckq??ES4Hj#=i(0=DOEsZu!h^iuGE5XwA2)(lqm+#_rv~mAoIqUjLF4@f#9co7H z$cZgTNlCtMq}T&a`Tdlcx@c)|VpZSQv~nN?86Czd2dx*+Qf;oHs-onNzBTjr1G#|| zWaOXxNbOKqRD`kEfckUy?`s~kCtEWmf8gNP^2d+u{RMn|(P7ODGK>HK002ovPDHLk FV1nB19cBOk literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001634149053.png b/docs/css/umn/en-us_image_0000001634149053.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1e28ace828adeb3d7479ce2ee4065994cdb21f GIT binary patch literal 270 zcmV+p0rCEcP)ktdo!AV|40Eh*0QWaCD6AVkrovP8M`(vlJRQhsV;x!3Y zu4LtW#0Ng&=ge_|p+Z(4ae6ICJYcMlu^bzE>JrU+`j9w)8qNyry5~G53n0+lDztp= z)h{gJw7~!f^z8vD%aNW-GvWxh037XgF9DjV7V!wT0QAa&c!oOwJ<>ds+rkQL?;|xD z%kU4>evam{j7wfac^%#1l;QzU+dtwL9ssC_e|R7;A^l*VId!S!IU;pS*m`x~3&Fw` Uu+2C%aR2}S07*qoM6N<$g5Feh4bY)!^&fNe20gOpRK~zYIWBmXB zKLgDG6Zu;IzP)w+%&j-S@hD*-*XSo(+B=urVqjnu_9-uqQRBp_iY&Loj8?GIS7Ug) zrL%L%t?yJa9d5K&Mr}$;d5seu3rI8_+2{yuZUzQ!#lWUUCxzc{x2!t!fg;l}jAme9 zVEFrD*RsP87#IXp6a~mP9hcF)UGuK|7I2R54OPRU>pwBz&*RO_IpMK6<;$;pK?pwI z*;yDKo0Goa^p`)_^$}q@xkeLVIsv0Ee8Hoafa!mp@1($J0;c~uIXyf!r)VjeM*si+ zA77feb^R&>gJO^`W(rB^jo0TUBB9|i{nq(Y3=DE=s=QF6k51_$$!G?ArP!0Jr#>@q zTgd*tb9~pS<2#SufBKn$B%>J^7#RQKD&McniRiir=dtqgsX0Xz1#1&;G+xvHzBoE- z?#d6sj@Gt@`f3XNtfUxA&~$15tl|Fq>WZ$JXTOnR4wrUBZn`laF{U#x{QLI)eh4bY)!^&fNe20gOpRK~zYIWBmXB zKLgDG6Zu;IzP)w+%&j-S@hD*-*XSo(+B=urVqjnu_9-uqQRBp_iY&Loj8?GIS7Ug) zrL%L%t?yJa9d5K&Mr}$;d5seu3rI8_+2{yuZUzQ!#lWUUCxzc{x2!t!fg;l}jAme9 zVEFrD*RsP87#IXp6a~mP9hcF)UGuK|7I2R54OPRU>pwBz&*RO_IpMK6<;$;pK?pwI z*;yDKo0Goa^p`)_^$}q@xkeLVIsv0Ee8Hoafa!mp@1($J0;c~uIXyf!r)VjeM*si+ zA77feb^R&>gJO^`W(rB^jo0TUBB9|i{nq(Y3=DE=s=QF6k51_$$!G?ArP!0Jr#>@q zTgd*tb9~pS<2#SufBKn$B%>J^7#RQKD&McniRiir=dtqgsX0Xz1#1&;G+xvHzBoE- z?#d6sj@Gt@`f3XNtfUxA&~$15tl|Fq>WZ$JXTOnR4wrUBZn`laF{U#x{QLI)B|5n-T!{|SZ+WB~yo29XdJ zP<919S@Dt9GR@$BbP>As8_761W?tO!`B9$|)D=6KZ%Ji7u5g7*{d8%A)Z# z1}3Fr-sG7MS$glsX6tDWp|X5s;;a5o)~6luiygm&HKA2B<>8hkD?^3A0%(}x% z-)nq(vSa@jQxd~6x~@a}{r4dyz)uAjs$*cec=*FWzV`_~Fs@dy3$3TpaO>3=;5fcA#^a|bYV z^>~ngAQd}1(|^6f<~e8n+e&7~F9_!{i!&7NF~`{s#Wf-lk!mV)qHs==?fA9;W{T?Q zY>CC`L}pp-w@ggAQKuX>QzfZL3xjGSuYHTwkW^WUW&U9aH;NNxlK!+HrJXO7gA!u) z%2MII!%!2p*R+e#(5X47y+wFh{WyD0p7Ku+drg+8{Y2>zB8I2vnSd@BtI>h(NwkJ^ zo%`c}dUAm!Z6_sEVYo1t%OCBwL0RxT)A$X%@WAZ+? zh|h<^PT{m=)s%!~sMtNGvvR0&L|?0F^&85ysR zH!F8obj~4jz`j+XNbhe?d|r2SG58_<)^WJKVS7ww>|-l{wMJIU+k|IYNufyh3F_Or zafN^+{}TD$l=E%jbz43&@fHq+CWE?yDrG?sgWhl>QSU^G>@aO)X6^2$%P2yT*WYm3 z$FsZKVU=yF+7$^|^2hDk1c{c}E>E<5%bOzt*m{aVcr77qSic`A>7~FJVGFdhkn`Ha zEXO&kgG1Vm3QMDpJg?0@4qD*Zde9n|gP@E?q_E-lPCUmJR_FpOgGW)1^mAV=u^|}! z+5&OYh7)DrhXk*q>TgkR3tW8G!f;G!=+hJyNe@*$c!&3(qHphRe=DFTXxL@Vz?LQr zcvT2YYn7CuM6spCKgwf24(`&t=WYmjMNwyWl2)2DNNz3!-M$vSm2fYfslwVU_+2cS zTYDqX`f(FnaUKFzGq{?hbY}G~Vp{1}p{Ob|`EUy!ySq#o4Xw(Q_A|5e@+kdd_}I$dpT9%h+DbDU9Ik8t4^iP9=#W(*>7Up((j#b_Yp(5&PL?t|NS zPR>VE6v}g=RV)3Pna^DD6&)`;t9n+?6S-+eYP{TqI3~ zJyq$n!%0+IH|DAL{%^F0c<=p#8^ZOA=bb1$YPTJ?vgNB22Hllrl0imj>$~RzsWEQJ zmBI3Bi@~?*y;F*_ft{q6p*z=8w=(hmB;MT?hYW_dd#s|0@BKa(12cN(%TKw=)C}dz zyAOv^QSm2)V_iSb++NRh{nDIY+j%ZyUY!tcPAj+46cc&m9v`dCp!oGV0UeeNJyY)v1?~UJk3*8=nj^w8tFu++Pc+tTrx)c=Z;xZk(DAgt+iK86rtAwi$_8x4l(74V21Fv_ot!Xd3Vvi8iIArG*AiSlXRP zQvEmw*Rv}ft)irx#POo#?bZ{Lm)_4$5c~QU;DO`#G_)^I_{fVFUDB8JRCqy z(ap(?OKsnBA}u@C|2=F6C6-{HuqUbMEE}zUsn=B!)QTwn<4`jfnz-zUpq({Y4>cyO zj3LRkzW9ertB3~m65Wi{a7PEk=(NF%-eDIN2Tl3*1o&O3ro57rE=aF@`6+aqp#nVXXqLZ!a)?BHs4P^KM1s7&2yAlnY$0eB4_K}{L7-2GLd(m zsEL^UUsGd2LgiHpOG013RL#C&mti%8_;dQHu?g*F1IO(B=Gn@%4_T|zM z@#UZ}-f7Mdj={CBv9Zeh#EYKZX6#iSrK<$R4y9iHLf{Zl%Xjw3oh@S-8YrQR;oegT z%FjWzOxPbo=&6)M4d=E!wHrLJT+Z0mjSIt!6emC4&HqSZg7f|qpH;=tAQwAQAWxnh z^qYQJjU>MI&h$fQsNi+#Vupm11(a_yvc1|*0gXag3AU|t$)bXZRXTqJzW)w#;<%1J zonM^X{-c5Lh3z-sjv8M$T-v}mvt$9xMz*2zpgOK^YC2hmg$rzfAvhgraJiVO+0S|2 zH7~Y$O+G!Qn>7t*FmQ75SuG_noGBA9GEkiirsV4hvYsa2f0tYKbQSXF2(GCmw=aXc3JXs&Y?Ji%tB1%girw#jh@KUcv|^3#qQn%E=Anqs+g zHII9}!Dd|R^)47v@L5@R{LXZ6*?$bArO@BnJf_W%ZeV&a1|xlW**`c6P+IH{iI$;c zk+K0@7zpF*`SYl@0NHD^$wo7&gErQ<3=$nTy(cjH0>rC&bdq+wY zcBIHu8kBAGFj~4FcGJ}CZl%GYgd!n=9tUv+#y;(3-aZnY8@LhPN^G4NR&IJZdZ|WL zf5jK_7RiNQn^k|6RGIb;&@*4V$)zYDzR^dLO_mFUn$J}iIAcbnDi zK}eh1DJF}2IaG7qqN6D}o87X|!b)3>&l}oq`?~ho1x-dY^fN9qdA7hsu%-{a5>};K zKoggAh;%j(mQ~O}X0u(QXi^aLsvX;^rHL#dTUWGw?MaO29rEm_@2_nxZn^m?i77kF zwrPAqLN3}g;ZqEquCvncW(+HJs^!{lLR3~eOH8p{gpO%qfoD3Z zINo~wl#5f8Nzk{R;EmLakfS`&K`=Y<(@(>EwICmFMPrlb>(NuIKbb>emeUNH66=m|O7>OTDt>YK++JM73KLJashE z`2&_%HzgxIJ<$zSJTC>9LrGq5Nc0}&Sk)W~0Uac1)^j`GQ$$RHk2px&a(B@;gXb$- zA?pR9M8fu;#M^LGPptW)qZbO2!sI_CowBcAR^6#YBNH4o!X7MZ*DR+5M2kRJr{Unm zialP1=_6I@e#w3!?81hig7B0tM1o+99_ynaCXe_3CVGepLygtJmHJ{vXsPe8hsg!fddp}GT z(QuSMY?Q{u)>f<>ih21U)3?tA40VcSKIb@i9}yskGR2Q0-_6w9UQ_FH+(C;cIuO!! zi>W~=T)omYEUot94O*9YX|#P)Qo}`^i2u17@WX&_F8Im_qhZ;H=%>b-Zv#osS&SpZ zUfKQJ1OxB7jQa&f4ZTiB@({1Bi%xH|jvDx_{3(HLFwnHvggdjx^ShiDkh;^4>*fT>EncY&mBrT>c>$|;OzTXoL zC~aCI_&wDl!M3EL&s;$OcOT#+$GT4&LNr-96x_*b?|I7N2rqQgnYb@{p75{_zGK-< z8T5OIm{8WsMPGi#YNgn5vP<@m|8{b|9YAT>62ZXlhAd*DM-Y39qagqK@zwT;Yt;Bb zHq+qh$A?(Eijq#3pU~FL-{UJm^7i;U6YI4UQi(P;!z;eSZI$cu7aYXqdT}UT6Y@P& zp&@>Gp!^}~>wDUUV#%!-noDD7rRzYTOHG-0dS~|{t=hrMs=D^mpt#M-kPD7s^;`Gp z8bwp$Fs1t#QvXO8%;}*r`pvCy?>&5Tp$JS&o(fo6Aw+bzR)jy>;Q5{gcii7jO*E<9ZI_ z-b%=oPJc@?gbPeHEplSnSf7_8Jtj`h5K^&7D-B-5BK=679>uQ}^r_Sp6&1dE&zo5D zl}16=UzOlZ4S?FrGEDHgz;h`!9$r`~*H=do93HD0#;YiEP*jfRV^i%%w5jx-K?VIV z$ey*3pWct=VV0;`z09t`rLX$dY#M-P1r+2Px7aXKJ78P*Fu^g*vKUq9<~`L`QNh&x!3X+W5g|852yKMiS)=8gNl?-Rc{pDDkz zp>YY3OZU@JvJ{Y#H9?B+ zub6t=ZGGcg3LGhXefI}Gol8MR%)axBtjORp6`HAx6|-_fao|p~TpancDWFj~z>@~} z+_duV$g!!R^b6QfXXPvO!uuYi*W=%eM^IX7=EPAM?Tzqt&fE9U2nqxqyJ^DzR4i4# zo)x{awzC_TdRXZ1F25i<$1l@Dk_Mai+Gn8-VX+H~ zu7Sqsjpy((WA~NduxUK!fx^R6n!;3y&`7o_l1;D2xG8K$(#ciA%1vjf=GomJb^F??___G8Re0~}fZFXU_ z;gnSTw2(+0Fm2AkwuTHy=~cuI%YIsS!WHX1m1{|M4J{CTKGp$CFNkT?}K|7RT4@FX12_KZ`DVd-^IBoZb$`hk%mlX2Od`l%V z(0`YfiAkiupA6#n1C*Gx^QqfAjJ7a2O=Z3Hc*h zzaulTT4$vMdS;|_p-)DirFMc`yPHc29`m!ZLP|I5S35)CX9P++N!hUel2&DLk?vOh zqL$AvEzGC%M{8!2B8J3Crs}vtt$96#Z@}_Rhl2kl^_i_0?1-Ae+doJ=rAT9|V)9h6 zVgr#^busne@1CfIJzk>`MIqd}Xi(qEjHID-8==#Wy1;1pVUPW$Zq=nLgBrUv7~H$+ zYsB(oH8V7yTBj~6i2FspfH5vTcLL_2R<|5FUkvs3*9hpBCK7$RUV9OH?mtI~{t8&K zC_YLu0_O%?gX8AIGmkGiKHn)3$9g0D=tsM8Q0&(3y`wUT>CeGG*FhU8=_CS*SF#{r zlx$g??lGlz6C~kDQsW_i{D@xj`UEvTee7TK3z&x2y)0ZQ(=FM%zr+7-hgUEv6MXhi z85_qMUSAlj?S7?e?+c>)TU~}lzOw`@NlDl%*YR1<2e61O#{T(u%|V#J(>6v$XZ&>gZ$KoyQE)e4*?bDR`&Z#?#htvRNVWEfQe_jnJtG!>B{pTd6< zZ6D0B|3Mt&Wa-a9o6I~1ZCGMQ#$2g6bwFZFmbAvOQA;%>dti?jC1OR|XMt9Lk%P zsFKBc;sW>=*Hhxpo)EY49^f5SaSs(H-ey`F~SvmZW3dfX;#^@XyuJ9Y84Zq2X%5@z3MCLlX!bN<iQlpjH+NRpHkc0{kFG_c|2|rJnl~8Z9u9Y@m(SQ<0qS6zu%{J2GMq;3SY!V zSAd0uh26hCoqf!Bc(*!GWC0LJ4DHXK!C@dnI)xhK;HUnsI6BOS^^_pu4>tcC5#lr; zP_pHc{`-)XCl&|792D69cH~jBjkS#FoI$(_WGq(UgVjwCL__X}bm;rDA;|<3o(LXDi35W&`_y5xH^-UXu z^A+^D;c4mUI!~O9?Ck8g*<-DN^Oa2;otB1>GZ72~50u-OZyLuyA1mYjE0h+%Zw7w3 z-G|8B-2DDw%%|-!!0mn67{NAKIJvpQ4i3!mIqg3gEE1Gu;kyAxUt>*2EQ)`7x)Mgf z?JWLQ=VY|N0Zi)=FcMc3ADX`Y{<*Y%XYT0EZs#L~I#U%e65IQQv4(3?6|?1JFj#Wp zSJ~(5DLL5L!}F0Z=P0W|MN8U$fkP^L;s~&-v&6)rg!k-SM3H)p&%F1M|7Hv0J@r6( zjQ`F4GbA?8y~jDhzuBgNu^s7#14#dM+Jx2gG0{eCINIzC9PN?#C6mv-jYh*x*}=n& z9EgY5_$iDN(6A#Ujo^O^w4|Z`+PQas--m(;a_o75qFdh*ITwB~Uk%@Jif!g!yMS?7ZTPDyhl|}*F<|!A zlu-@SsJ1u6**OaagFeg3u{P1Qs8m|CfSBnjf!gWC3#1hOLY~9~pQ% z&pQ@r3%nS`WVw+w+!uv!T6;1@KaJuoC`BavCRP|*h^{={so(>f5IkB|34NqSs-!X= z;+^>$PK%%g)Nk$86U_mvh=N)k$DtNZB@1Wyz&#i|52F|fU)ZLIBGfjs7T(2#y5s(1 z97DZ=J{{QDM$=BmC*PGISsFj^^TK9WH3Gw8*X8b3T?$$fb;`1yg94(hzVT1^_1YY_ zcxXNA!nC|~e6BEgFvR9MG`lHPz2%giezGQZ8EN(hSdbMEQF6gX+0mku=qy^eRI4KFZeYh~{uHX!r+}WAK*n z(l0;qCCbYg>(4OYIM&dREwhn4fN((`Zr|et0|c6@gr;M~_OC~iuNK*zAVP)D(~kSm zI@CW)cDB~NkcZc0Ex7}g;N)?BSM-YW2PzF0YMZa?FHD3er!f{}<{cqb&9MxA7?*DY zDi^-*;0qpxRB{kmC?goVb53!+0xL*XBbxKHqtt^$-F9>S>oAA5F4$IkUFXRw)TjoU zH;xev<<^#>%mDeVqS-Qv9bZL1$y zfa2DTE39DCEfIECXtP(SL9Exoir0`CxN*h$9dR!mdeeH*@lWWJe*N0e0n4h-Y=THZ zYvOrP_;nhcij0=eL=B1Mu1>%3l8<=Z_#h6y53N+x^h%8NK+cpRf0+LHHwIpQey)N) zl^8b=*^am)@Y33UVWBwk9S&HP?VOnQGgoR`CPyWnuT^4^B=C=fuQdQUApl6!YWj$S zipBr_?kvNoKd5Fm%`+*#2_C!1Ll;oQea@NYOONMv$f=oT#S~;J*8|Fo?acwLEU(7O!?DDaM8jl;DWpC#7M)Yx+&-xY`&{*5TDX11ooKB^!iw`+bGV zzsJi}fITQEoRFkqlOA1NV|`+(e^Qpg#H^3l<^POz5sXhqhrc!TbVgrfJ1%b(M5)pn z$KK69n!_Jxd5Zz6Yr9XCu+yQmM^x3pZ~Zxbmv4TY#krp~g$hJ|#mV~;sB6VUrUo@T zque)x-_p+Fg<>oC(>`-FUphVbP+$@YG6PbG$ShW#zn8A737#Dn4u4+c*IQV zcI|P!^J`~rRRZ9uR8M81%uc>u!}p=ywpy;=(%wwt>Y(8Y+EDkPgBfLn)r<$U*>oQ#Llin zxrg@p(Bb5XKl{CS^ulx*@epEVHFK3^;&a#g^7g5nOAZ=58&$%3uxiLg(vV_$fJaUo zSF11>SuK)a&D@ZQJDAU*?8hXNn;_1*f4~R)luFaCy?U|Sn;nXe$!DC+2z!fB0{2S7 z1P$~;Oe{FO8TTkKd%oIfE=7qJ!!aQ;$3hs$K~=O?yd&-9?yZ!5F^M|}1^e?nTev zfrK-0gyI`@1~gm)5SD@=BiMp({5Lfrq>7wDbLYu11vJ$v#T9hkh$9IAvCb9%E6rY^ zuT+Sd+LV~Inn(CY@RV_^7}?Y${A<^PlJP?#<`THtBa4tf3?ce|-IqG@Oy$rJm#Lz_ zQ$FQEMw6Vyj1rFc|EAska>Tem$`BnlggFIEw;$&ZVONw_GY(2o)pISf-ezDy14&+e z9;VfG+~zrnKsW-{biAH>;LR)eCl49xTI@=v+-+JZBM7$cjZaCRZaHmrwIhx${)M^E&% z(}XyOPV~Qur7PU$q=OZLsXJy%wBc|MlWdo^Ct|o#5mlXH{MM$W8jOSr4(Mhm52`!! zP0W4?dP#6w5qMz(=cv`35F%`pv2Oj9Tv=^9xL{Ynhu z_$)-4t14@FAU%v-5mkBaX^mmz2sEQlWtYR}7r-&c~$%vXz{Vo5d{8mzZ~_8d!nJP0;r~#p89Y$Ct)sm9Ck#0NG5%6Zzyi-7 z7z?NYqF7^~k9h~ohE_Mcxb6WiCZ+V8(R zf+xv8y^jO{`jPlm^?0>46+0A!VP;$GqXA?>Lc;mW-I|esz%o<<^83Ap;DZ_PL~~Fj zBqWB;;s8`YURPMXp!~NRED#O5A8|v6fjj!0Nks$RdEfu^Ik1~TF>e2O-#haHb7D)C z{KHj(1A*N(qx}5eoq*yW7?3H6XO5aE{Z;uUfTAA?qR8&wx;gQ8<^wyuU`73Rl(@j# zWoHfW{AFse@5IfID^=#*xB=25VIkn{SkRN9|9;&MNCiI0n^qV7WwB;3z)21yx%x{K zKfMzth(jy3_&=jTK?L4zLf)A0@7E!KYIigseI)-sMIK0wJ_2v|e`WCcreL-4GI_o~ zJ0>STEZeYSVqv}1T_FN{=LdLa!PpU^pUB7{$;q~#2neJ4W25OzbI^3xUtgZYrKGyY zd|t1<)e{4UR?*_iAu~EUYUu8cD;9~b;oT1*xiRqH#2zyIk1Xq1>EWFR`O*^mLtoSz zdU~dP3IzdH{Gor)1hQxTC!ECBPuD@d5d|G^V4G(>a{MnfUAiIh!|NX_A5%*aQBZu) zdxX4@#CNsc*BgZt`5ABHO<-M(-UqquADh;P1kTd`A-n=WeSq;Rp{LkiItpxB`|5vC zZYMC3dcRfUMSj)BPEYHOQrzXvVm9t_T=o}q;8M)i(w}xPI!AF*H2Ld6z|b-BuSVeg z55o=8~(O)GDSH&kJg|x++uo;!mQI73hbjLYEt7==<5px<*4S+ z1W=DirC@wpckuKyf`JEdZgYhx*V65`>~lO`fLwpzAzxnGwCtb5cISZ;o9f5re_?Qa zvbBOj(eeoT?MJSjs`JrfRQZdTlg&VG!y?B{VL+)7mvH)&yrK^*rdM#T%2!-KY%R__ zxrzN%0gyu&)HrVOLCY4PmA5?}VlIEOfO64Xx)|1OG^gOP^SAbK18m_y2zG&ty+knUR@fWoomSlesFu2N&m%WH(MV+$Vd^}t(NM6o-xiR**f73JUG zt+=dpTCtVOY$~vOyUc)IxUu3Fi+-_#x?ShY;M*6ew*V-T?kwliu=(|FUlTw$8F$RDlI0Aug@C|vT_mcWL zr*{2zhrwOel;k=H&!J71N)YbrDv+KP;M1b3ZC+1B*%_IAh}5FTe~N%Lv?WO()FR^f zHaS2iB9VgV1+G+4s5b&GN>xLOHW}i|@;}qF?XQ&EF|JDuIjJ5nV!`NZ4=1Fv58#9mTfD6vaw*{^y_*W>qa6| zo&RUHfS?ZVSlM5O%B%D~Qi-yLprmMJNa3mr23Qn^=5OR2_PsT}_9T;Po!%0BQbQCh ztUBmy5s}WBt2RM|_WJtOp=jv@Gww0z7$Ya(72-M2_DxA7(SwR$v0OoH>abP-h%-{N zEl06xA3SR(!1{jp2kiagI zRH7V*(=MyA9M0K;l{kI|p;#*IT4ZgYzn(ik+Hyk3{&YyJRR>4ogY`9@b+TwsoGxOk zy_Lh1uX4hUB5y_K6ej9*=o-C4w;^Twhu%T?HpfdeCD8amzpCOp1UzXHFJt}v3;=s`X(}zrJ?GV6 z%BrETpp9iZE>(G%Vn`sKCvmd#hU%)nc}pfj;Lv$21?1jfWYJ9xc4e^wViS|$+x`7oQzVXy>oB3`VY=|*0ZQ^lCEK%mzh*-**_(6P;ayr*iu%~W<8xi6EP|+mBZ}a zctqD=JXeM`PRgz~wdlv!(6Tegwu*|o5&1#cL(Izej}Kxio{*i(5?46>s2yA~B`FzS zgw`zRZ{z4+-U}~o52gp7_brKF#cuFZ4Sp61Ira08r7`CI4(XBam5&!>ugy-Ewf

mW7S&6X6BP3)b@Dhe=|6dJJl>WH@JJ`ld1tocNg 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001656084945.png b/docs/css/umn/en-us_image_0000001656084945.png new file mode 100644 index 0000000000000000000000000000000000000000..e48d2711fe9bef4eaffa2ecdd12287d981f4074a GIT binary patch literal 22538 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001656204689.png b/docs/css/umn/en-us_image_0000001656204689.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb55b6d63665189382ab6d6f1f2f9ddb1d510ed GIT binary patch literal 619 zcmV-x0+juUP)85cs52#rOoUlCSZVWma5Y#l=ybVSes6ii-X#2Xkl~4WM1`FilSDWWB&N6E_IbEo zZ^fuDR6+i#NI?-$pew~(Tg$n33w&9gVQ6`a9a9}0w|uzjEf@>)ybT<96^YLu#uy5% zU~ckq??ES4Hj#=i(0=DOEsZu!h^iuGE5XwA2)(lqm+#_rv~mAoIqUjLF4@f#9co7H z$cZgTNlCtMq}T&a`Tdlcx@c)|VpZSQv~nN?86Czd2dx*+Qf;oHs-onNzBTjr1G#|| zWaOXxNbOKqRD`kEfckUy?`s~kCtEWmf8gNP^2d+u{RMn|(P7ODGK>HK002ovPDHLk FV1nB19cBOk literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001656284657.png b/docs/css/umn/en-us_image_0000001656284657.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb55b6d63665189382ab6d6f1f2f9ddb1d510ed GIT binary patch literal 619 zcmV-x0+juUP)85cs52#rOoUlCSZVWma5Y#l=ybVSes6ii-X#2Xkl~4WM1`FilSDWWB&N6E_IbEo zZ^fuDR6+i#NI?-$pew~(Tg$n33w&9gVQ6`a9a9}0w|uzjEf@>)ybT<96^YLu#uy5% zU~ckq??ES4Hj#=i(0=DOEsZu!h^iuGE5XwA2)(lqm+#_rv~mAoIqUjLF4@f#9co7H z$cZgTNlCtMq}T&a`Tdlcx@c)|VpZSQv~nN?86Czd2dx*+Qf;oHs-onNzBTjr1G#|| zWaOXxNbOKqRD`kEfckUy?`s~kCtEWmf8gNP^2d+u{RMn|(P7ODGK>HK002ovPDHLk FV1nB19cBOk literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001656284673.png b/docs/css/umn/en-us_image_0000001656284673.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea4540f8a4714a84593248dd63c6b409328ae97 GIT binary patch literal 14145 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001656290797.png b/docs/css/umn/en-us_image_0000001656290797.png new file mode 100644 index 0000000000000000000000000000000000000000..f392edbfac6691175366ea91463524a095d36359 GIT binary patch literal 69895 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�lX;VWZdf_I3I4xAn01Dqtj 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 z zt0+;z)<}+KG^NEXdS&X(eFRz4GU}>v3$IcF&$@p6(NgdSgC5Sa^BzhjqT0bZN}P>) z1Q~OT0PF$-p8$uJKvmrs|KlxyIVq}I&Og&mdZNO?^rSr~{L&%|=&i1L)FF@a3-SdL zm&^yZqCI7dQi2xmxOq7nRYEj;Un|dXCl|yQkE|5R*7|sD`6vk&o8!H@+wF>~FnULj z^EM$DkEnkC1ZX39{Yb|zMesfbpQvhp{hbtP@qs{-Tkd-$btTy;PZ>ps4Rx^|za4wy zKE5daZT!obG?WRKak}0aQJWgbf?>wuOk|0}Q2Qv^=**>^H4MU0MDnv);6_@9CX$Ic zfmWAZ|3W>B>TcDoC7Xu~%_VkwO=q5|6=;%)895tc!@Fx7?!a_-V$W~R!WALknIT8U&i zMn#+ATMqSDkMXpZAY9VQ4B-U3KO4gFU)FSSjg*6EF^gi<-*+#M@nmdvHMU5>yPdGt4e$aHvuX%^Dwy2@ifZ zVtK$EvUHey0Ek#YBw#}gO6M5k`_(H;B6j1SBuEz`)o+$5t(rnfn92yCJOKyW? zy~*)gwFzQ8i3eWZLRMaFT4(vy78d{FrM{)5mI|L)IlT9OAYe~y>M%1;?r-L+1_+KH z>S90h1GG1MQ3xa<9I=-vp@Yyhx0~V4c$?1TKyB5BAf1x>|VC z4(!<_h8y9#gsR+Tmx=KY&8-ruscd)jLIO)F3il_FHQ!3&fRXnlN(q?}A` zL3d-Jm`&DeuAJq3L8J22?01oq!m%b+onX7Dke4YB1`2RaJFJa^9nfwHoe$b(cjM^p zvoiosOydtT`+b~9K+v79hpYTh>jkM0J!S_W9`uJ}LgVyJMA+hE3o=qaXK^$aD!ogV zjUFkMYIkW23BVosbOb3Oy_a2gTsok=11ZU9-#qXiA?(T{Q6wmd1r(Msqs9s2jNdx% zLs_-`YX_=(FC2PH#MnLXp>}(OeAzc^=j#JGj)a$_H6AWLkQw?uVW2$jj**WejfWGt z#(8(wXjO#(b!9YI{{y?bxb#H;kawE+eE<<8IU;ZWm|Pqxot*2S+VtQetP{HPNjPmpRauJE9T~jmU1z>KY;M=KR zb$ULZBPfX#D17u$XZ;)d|@Lrbi>Lp;p{P}Ua2>*{2 zIUZejnr~#xrrglCuHJ(85iOTVmdnVP5xQA%DCo(;pY+7eW9ZpQG~A*B^LQo+MI0?M zdQYplVa?EQ#ie`Dq?V7A5JKz^fHJ7_Jf1PqsSasVGhGqmn4YafHotLn%j$b<46+LB*A zB;N!Fzt*Z^Y8xtbZSKu7Xw@u5o&o7;bL!g4h8swN)c6;6eF(1%XrWSeYMtZPFfXVL z?0~mg3T**fMBf9E-Lv=acl1QL$cjSK5+swGTsVrVY@{yK>;iYt2w+6zFdLnyUvbl| zYgZ&nZvR&&*!<(CNnA!&)n$e-!AkkrG1KVj94^x-)c zyGEL?&RKi3CrteMI^G5rn=R&>jR_^;` zX|1Y1Rp7Sb{vgC1xht;!6W*lu?ipgMdGvEf&iOpxC(rLzGyZCH3upE}1ISb_5v%(=4`^`?a3ff8@eX zkd^AKys9_QYpCTgR97K(t7oy;tQMI;82^lvCw$*9pkmTNl2d+r>sM>lEznlYD;)09o?#z7C~d zLz&O3>OYPkZ8-lpEV&G>Etolo=TEt0&EH$Jbl)fX&s#&0-6?|fI7|q>vHBi3LNzK&*Q6?PVVmCiCFFx1PLM+96=ke zVjPWqg)061J{2vBVdL^M29RjXdL=i|^N49PQ@X96^amjJ9)qY?g;Vz{9ij?=Tj;L>ZqR@Sni@uSCp^&+XBy*mm zP?eASb#}M)<*atcPj-`a_`UPUo+T*h6ezZ}4?4#ux+i5BxZYs0U*MN&4z`O@D_yq0 z)>QYq;_DDGXiT9ZN<=rdNFKG)s~eM+YSP&SS47E9l(2z?r%m}lyNFcuMpX|RpR=H} zH|jsa7rbuy;%Vz7>Zb?hC`Ow_^t>yvGd~J&En=kc(GUOy`;HsH> zIRYI$u2X$MAAgVe)lCdO8hF!-Ca8=TMfbZa01LIh?Er&Fx1R*%=+Ej)``QMFYb#?G ztZ$_0JRGEI*@eBmYo+JXu=v6;EfwiGpeTD>SgK@I$KuyKM^j6O}R>`*Z#?-c4Nx*i`hyx2EiOp>aSbZCWgOtD^c2Ewa_HK5b@R zwz9YGIYcJ$2L3cll7|cXvBK^SPjCxNzP9eUV_-|#kIL-cL61Gaef4}-UJg|_p?}PD zH@t@IR)nV31?PqB2Z@&s%lyXyw678{pis7v(mdDoBR~{k0PGxj_15OE-CjYvNwU1= zI@G#MPkUa+)*${<(Fns@j-x=k{zVhdERE#}1<(jQaUb9ozl_AhtA+BB0zS zq<<4olHhLp!NUuTK!-@nw5rBiflkJJbrtO!H!~eZG8Tm1zANGO6oxi^SXWS%_Y#a5 z_`(W`EhsQG5{8Cu5lmX0^n4%O^^*6!a$;9B04akazR3E!7XZ}%ghk+2WPeMwk* zW|hLJ0q}U{)Gv;Z_pZcjTjN=)Qg>nZ>qxlLSjWSgQ#kFIkFgu}O%ns4ua&IoQXbq!YS$c=lc)3hYUI; zS%o9;4k$sir2lXpPeR^;0960gZto3#7vYAaV%GoeJlI1|aE(284%&hXKu2cQO{gw060(2?oAKy+!MK zCb!>C$zyYjExB=M*We-m_6^D)74esy{+0al?Dl(j3sta5qZZwSw*E=xwT~k+(!A3P zvsT`Am9VGuYQNpECzKk!jJdc{a6jv^owImx!fq^&wp7&>)0r{gTUzHpA150G0) z=)41v)EMYpLdmEF{ia7e=K;m@&`4W3jwZa=8EKv-OF6NS*xz!K-QaD`eZ{%GYHK_E zPlO|xi7#J&o$0Bzz#ZT_ZAxq-+@vA$x!wv=QsU^?Y8ug%qUG(XfyjI&znffspV-C3 zZI18ze~kt{5&sW)ZyrwN_x%scTc%1RnPn&n8FS1-14^b6GDdMs$9Rxg$dIv8#6d-o z`D7|%rpR#2!*NVW<|&zq)U)q%sN*wypWpX)UC&?7KQ0&dz4yNNTI;pedabqZ8}f;& zV$AGc1XAZ*T^+f&1l-%cJ8*Me+qG_aR4LqS^1!<5R#$(pZ@R%D29dg8|5j!Oss(OE zl^3gw+fB1K#=72)9WNaGOoj3rh)zyXXz{#sXv9WDqd5OE(mt~5m4q*G0P1cd$F z?bXKa<@ZH3Bp}eXeAMMm-)b~U&Wy@E&dqj@gsd3^94&HK;>rm)Yzor;q=&f!Jr@k| z_GEh_y(n2>Uh?^VVerz@qZ@~&X@o%hI;aJ~?gHQC!^DvjNq{ogg%TwYcS2Jh%6nYG zc*wLFuhB~05I5{%QPd=dZqAA2;z><0KZ zE&0n?f>5^JnEu0)c#Yx&iOl6wdv#0$qA&u`3A4UWGUsg{IAkq!?T71~?$_<~cDW%_ zLxY!;Ac(M#2Dcs)?;i|YWGyrVDDD7Mdg^m8~dEKy)s{52#SPQXKphX)7!kqW?*yGrMwmYL1-6IU&W zZQ1X~z4_!B{K|A2C3{PPge(xp1o2sjlMmReMyoJ9MEn`cOq#U(B)+>)>Otqr8*G=3 z*Qa-9zJ8v$lg;3@>WxORi7`jT?LxDfV_>TT#(|jS6fOwv6@CjHWC9iX-8tc=3=+O{ z;w6=AZM|w4c*tCL(XnUb0hu@2>;RP2EdzDqc*b>%C^H8GPf&v7oS9ybQNCpFty?^< z*ttugjP{$Cu#kYzV!#NWbY9&1JKM zYClh(6vKB6-be)3c71%kn;jEEU$$6cpZ*lw*;rxvng(wb62KPhs-5RR0p3SBYne$mCfS~(6p4}Vo zK8EZUnD$y#^L2NLK(t9&w3=+$sjF`lpV+(?0R5xsuL>Inq#v7R@FZ)(-&@R}t)do({C6{v z$IEP@I-s45k1Xz%V(;oS$R+lb%<6CC8z-%4*2fl6!Tnmc}t;}29GEm7}srzA!Epfl~Q@ve-99|r={P5#uDLbiCMJQXa z(jc_6_7}hIVLk@6%(Cxc)RP1cB&fzdWMhl8xK$vs(yHkYlbphqXv+_W52~ydHpS~PwPt8Hb&Z0dJ}>gz%lF4<9Zm8i}_XUq6|5f(<_K&~MUwNRR6TJSBK5 z_`OO_(LmfoL9Kj?RraS()(?9R^n7ROycVp%Cla@*w{&}~j@n3tWDRFrL#7LvBv_14 zdnC)=#Vk|KhoCc;`azYTQS6`?%yG2pjDEhU1TktzgQbk=)+^~$ejE}s5V-H3fS$Q` zE|WUhU|9Ra!Htz;k<(Vs%R-dN?d~Hx@o1gllbdtl`1^WWXfq-Bn3A}sZ;Ya}J zu#IuGErZ*_yW4IrVUsj7QUlZdh@vIDl}s*P2h*mh_y|y;`2FHW1q>Xs4cn^Tc1cfz z#$Bt@Xn}Y~Ya<5M!~~m+IMf}RNzzoS!Jd}wymsu-)5!-|4{tDjef#>+n>BHh2qXeH z)6-x%>CeM8h{Jg$vtt3dM_^IbGkS{0KUTxxv)-@;XYW>{A47~{bqfYx``m=^5nS;o z*3@Bj{MO6M?;q!(j*T>>yRz=fzj3|M(vG}w;nul?up5sLD>r_tRZRF~743$PO6Fx1 z(oDWJm+ucN$hm6wmiBOE0em^F)%|kCYQ0u>Quxb~-+5_QRg139kaIg~T;6Xd20Ji1 zd&LD%{5K8*Xk2rur{3!nrJ%)Lxaz{b6_I9KX+a1zwBA&1dbH;nPRme{eP#LUY0d$z$ zN0(l66$m;X1nJOW== zT+NLL&G$A>>S~_o%{wXgIrnACPm`yhW7pf?x=LoNB6uL4{DphDZ-P*9>Q+~-_CC^F zh<^$sFTo_Nl)prHMt3We8CV9ef#H%q*!T)jsp0oGELWIufP z=yIPS7h*P0an5*Xsvewf`PG-ltJm0|Sm5AZwa{F`08>`(?L8)%ShW)F>i6}ZjhQOs z+pdEYoE_v~^X!@S`~2NG038l=SblRIWz3iqz32gRoekX%wifiOT6os!*39|YlYtAf zQQRkEbBf=gJ+X6Y??+=bQ=*>E+%qf@*tS`;65`By-9Kk(>AhX$D$CCEfW=&VR9`l@ z?}ml+vFr#dZj<+;n88(C<}EtW)Ra8Uyk{;0%E}En#t@d@vaVOeM9;6i0+$HN+^)zj z%0zHi*_g*N8;#j+buC{sP+aL5m%M;ITk_B7t?$>tF^kXgK5Hn-7Sh7(;c)L@ z%ypfoAl+>t9qdJ2P~+|G3+GYc?4D`!I>jiWJR7VbE`ba4l$UO8iATH^c{(VbYQq_A z_@WCQsduloR-*7#NwS|+u!6Y6AU!2AK;reRdvTQZ4f(UfYxk}VZVb8i!MVtdZae$` zW6FIC=NdhT`*r6kpF_8>(Xa|OM{MjP90Wl_^UHPK#GruS206Z@$uRZv2|N=)EYjlQ z&zCMsxu#lhl_fkXot`3lS7!=)GE5IUaHw4qwO+`zJ+JCr_4S3HfMB*CgHA!R;u?8t zf=4OKZ?>RT>l>0o?N^?N8(%QTu4v5-&fka+unoqMrs|J-pe8b>^DjM1m~Q+>ZNUP> z7_l!t>|rW6wV@0R9Kgm4+*Z)M+)Eja{>PAT|CB?; z_8FL|?#hM7>z6F=yf%$oMGSVGG}i&O;q3kr1BTNY@bvt!EZ@-*I_Z{@r~}c@+)n+f zoWAb*zNBfy=l190w^&JYLF_e<_@bJQSTOSkA^hV@`=^k*EHB(a0i2^@W4~{5dYJuq zbR|P~i%$DmP3!NobX1w?A|Mr3N1H@NK331lWl){Hr-72UPQNnu`8@I-=9X76=2B~L zh0k&lH@!1>CEa#wuje3Q>8>aLC+j` zG>3EGrn#nJ4pCHQ5LWNy2zOmUvSDC z{v^|uffvm>^I-2ot)`ba!gFySLjza~|0^W7T7f#uId>l? zkw^FCtE%tNUx>Gzb>lB@CL1i|xs6*=v&sxc!Ux9%p%A|W%5}FW$M&2WD~YMr12Km! zO(Q)s`{Q8D@>eKWlg^$>`fkAE0u%kR8$HVNiP3n2q6e)r3vhYhgG{JFiIi1Bg??wR zQA+rD^kvc+Q~2kMc#Hv$wP8)+{d0s=-!gDP`e6WCnu0b1gpBr3S;wA7&7W9K9pDh} zNpR%JH9a-|BtPglAW>nElw}_?K^;J+Qi3FE8AwXfk8L^M`Tra;*x5H>abDnFMWK&84Nf^|cFj*3HYMZ$JskB7}B136F_n<3Y6LA{1z1u!S z{ar0YR+l)ZDH6-$ZuKmbFo3RJa3raWzwF0Tn<>CQ4~xpbt#@7R?G!R4Fk;14*c9<9 zuy-W*y@Nq}2TNVu6U#5~p>=E16|U!Qb=T7p0u`~E_4$ua*UP)cCK3y|oR5KRhsxeY z5=pLmwjH0#L^I*)Pwn34ZepSSYINaJM)#9nMR^Asp(Fgy9W$xn7Q9u^G&Rp=->dt z&js_mb+edZB#sktSIp)B3**EYRHGC!ek<73TRrA*$oMNgO~+f)I}92k%idoO(>yU; zg>Hz^3buy~Gn)=zPZVqM-c|Hc0qDvkoph3W*m=$X+Y_2QFFu!aM(39)`@&}l0^ROi zl38*k4HSK8YT;B=vd|Ohfz2xAm!91VWZ6eR5QD7p$gG_NZB3TT1+)s;jre970ufVX z57?%6oQOClG*k!tBn6%?=0Z#vevfv2R5d>tIB(3>qMh;LFu99Jq6mZUlS@>yh`Q^p z-6w%@RM?3#nSy%CK1x9ikkZ;%Tqh2s0JU@3O!Xdyn;t19b3<)Nj(0RTi@D!p)x9khH-brO)4hMgx%@VDy7dFf5XpqK|AN+z{eNFOFpnOD zdf_)ug#`$tny!|ZJ&-9 z1>G7U9brO#;)t>xJRT2G3L`K4!|?JXP$}V`UX$-31am-(Wo+iO!2Wi)mhv;T_k#~L zL4|WhZ8(F_)j=oesu4VM`^9oOBA<8~q2Zabj^|FB4lu<+W?LktTtMn)ph&6ZjXa!rga!PJJ9Y z0nCsTFzfh2iIkSjpowZXh-x>5T4^GFN}WRB{Q@7D%02pkDY5>Up{Nka0M}?Nz%g7W zpA(x8bbWZCqhC;SW|#AOb+_{SHChBh1Mt2df1*Rt%wpzHtJ?p-Hh^R6q2ub+2ZJ$9 z(@HcdJj^B9J4|k+;58hLuR&-2?5|D_YC?zSZ?>+!&F*d!H!t$3xKDEF z?^Cdu@AeI>0|Q5lKK(>Tj20!yQ1_qAev{EsgI{bPt*;#uxs7jhB6zufU%}Zm)Ie3r z_?|&Hovx9Um|_JF#4WV$(%5~EOX?zC@FO(wusaxUbK@z2ypo~=V&w}=R@p-|bwhq5 z$HGeQ7`1K24*Gh1cv-}5`cT(g#{xKRsEHjdg5OC_r~h)o6kwG>TbnT=>qmu*#zoaX z#jOjI;Eg#n-WG_E=U9ld{%`%CfY8JoQ$mGB5a?Il)Aq8HkaDrlOlMdj#aC=VlqaK3 zP_ci2ioqgD6^H{Fv$v3hcB%Zzi$I%muRIumj0sBv9(zzUdKK!{`r{c;7YW>>hcecf ziuDO(_J}iJ;9Pb?8DhH)=p!6D-J#{rW)uzMviE}|9~j~DI1tF6VbLUB2np%^os|%n z$74D;_csoVlwwP`c{TsUXPw&)H|O&Np1EA`opG(Nob4`pwY0VR(`8|5X`e}XOoGW8 zSK0GNcK&TDBa91L{pXT(Lh*;PCn56SpRj*9pp7FoEMq}xiR%6On-lT9ZliDN(#Soq3N_{O!oW*?_fI zR_zm+PrQb5vK*o}>T`1QYOV8yw;ifJm&F?x@H=*kn}nprC(lGrz{uE`u5DM=Ur~y&ANiE`#*#Y*D~fO$uh~tJ-fc# zL7k?Ov6}uy)?AdH-(Gs^X4LPz0W5hfJdzr$Ab=deEQ}JBj#mSSVZ`gz1<)I*A$!PI zgsEBTsh{7T&O(AHzPv1w-@rvuJ_tU=)YGP{jw-epInCVDFW8|T)Ecbfk1H2vq!+#2 z_>KA`IHVAt63>pw{j2cOp}64YH6=N5nHC5ybwd_=ifyAmX=0Vf&$?#x8;8dQ_wa(2{n28&> zC6~y=+>ULHw(9OE?^@a@cv3$n28)uiX8eBo-X)Mx7oZ#!V|A3zm!Epj)X`cfzaY9H zr1krqFQYZ5p^SOA@Sp)=4dk}UwIN_9KxK&%MKyK{55tJZQFd8lft=3xH1Gvk!!9 z5{k4Bz0)Z6O^OI6M3LIyZ9#=8hphIPOu$(%E0hd-;cKMfDBE&Z=2G2`1^$Uwh4@kv z)Y3o;i@&S9x9JnKLX>ENlMJA{_MnB7!V%w(1<#tMtJz|b3oUPr+P#o#yp)yM59+9Q zV7(=ZM?)*4(H_xS_XzPeeaEQwpBFgoSZ~J(JjV6lG49j>lnVGQ`6DyE$Xv99DANwk z!Ft_AQ*>tT(7_IHK-4y^6bIPl@#VBV&54|7JYI@Biyeiz`JcKi>@9v&lu-Rtd@t8E zVMl0$Sa$+dy|h>=RAt>~N__2;6Dm9fX<=uZg73~dtSst{ig@`4JGHidFXmOeC zIla=kkPc`(d|Q$>sI^UsHH|{=&%tQ~8A5kMeA4afQpCP&ALYvvXr9_h5G}>3qmv@P zfcT4EIA~>kVbEo5R+o6hyF=FpKYX~@0Ivx=10hQz@C%+kAvcJY1%8d=feu4~JV5U8 zxvy22-Ir_NyDy=3pbH4_i18FlSiu|kR~CHw4i**DPJ4j(@$Oc;Kq1JgzCwR*I|WQ! zr|_)Xs1H#aB~clb61D#Ta8n>fcm}mIHEtaJm!V2PVrnja^kn~=(Rw99b|E%!eejnD z$GS|{m@-P?ND1WGpjaGf>3SXX6%gs89*A&fD(%F1@BRO!0y-9**EaIx*Zg_qS9PWl zjB?F-iT!I&qYFj4hp!xN$+god^Rn}-M13nbiF$bP}4MKUYI-38QyfP%blO#Ceyf-!=q zH{CN~e&B2!<+C4E@*|>r&6a76>hh?WnfSMjwm-X{eDe04xg)MX41@5Lb5uoJk5~u9KnCA9~g{? zcF@b?UM-#FCvQ9QGjQdhpmwo|b%gJX;c{p3m_1W~D5G8!EwjyF$yoiz3p@_%G;8I2 zp)RN7^A9n&m~5Hqywb4Bc6D85X8>=O?P@vylJ3lQ=F|(cLBW_MLTGXSN#Ny~!SbxC z$Bq))3Fm`*)tXeO7P#G?wpNz=SkrG_Ac_*)>dI%OjQ??(K|p}{u~%Doblb(alLn6$ zTK)1fHtF!Ko&!x?LMsJ&A6tVppi=8M&>AJd?~r&DS0HPG#i{#5*+73vDA!x6hwS9@p0%EwO)J zT;hOgy`~RFkJ8ffNbXLNx1aUcMmI8U3u*AYeR4fX@Yq&@B*U;`K6i$9W4Z+6k2W!@ zn6W$cyrB@u1lBU7=eM_*M|&d$Pm`LKJ!yB_zY03vSA7#f$zAY=gNCn?-JkB-R&?di z2fY+Sj<7(_V;KqL4q{y3XvT2Ws&^H7G8q|YWx?W^?5&y8N-cG+d*wxc|Nf9xYNh4O zX%)xZ1b)SAlPO1&7XyvrqAm@e&pEJ^QKz_{doeGI3d~#jQncpyFwi~@-9k|8x9P8Bi+8NiK50JWjlrs)_jVZAI z?v~o}?vepz5p*;oJLI1|p$3{BC^DXQ$9K*#V@K|9{gVvgKN_@_VuG(;CAWx3_l?BYVD5LC7kg z3xu6@;Ne)wH3^(1l$t_nd-q>R7fS`8CI<_~gK7W=I0E2yviv^N<-dI-=-TwxSPwSm z{3U7Z#WvO0@U6Zj~J8e~c^Wi;i2k3@WETUl%U@L~$V!{S3=X zFl9@v(YLSbM*^BlDI4s4iLI2=9(G#x9KI+J2`D3;t2N!>2?^f~+OQR#E9u{l3lO#F zTbg+{Z3R(BX_6GV=~fHWEASX*eSaE}Y*3J)pKig^id}6sSUCdaiAJWd%T`$%&Tu ziJnXya6If!sw5h*Fp)R($jLf83#)%b_VBBWtr}+|{ooJh=MQ}N@HC8BHcry?2<&#r z>TujS-~8y!>&>*qzA}qu{ZNo8gQVojDNhOxNAFW+X9q(p;SONOFDv<{G=5 z=&9R>Lq~b(3#aWo$||1ysFQ`YT*n3}4FW|i@xAx;FmXUVs0yh8$QE+K^0HG=?KPKp zRaLJkES@=G@u7`*RO6s0fxeRGBG&kH8!apwdrd5}qyb+e#vhZ-Tdrm$*6w*y0I5)a%7}gfXj5jw z=8bUtU)|DV*rKQ0FX48~#MlbYM1msH>{6<#Uf~OYjJFHhPg_jtFbkXC`HD&m_#Ua?m7<=8DKjqtTG8i}>Jjok%tcsZGHI{tz!k~etTCZ^vq_};#t z&$_hsDt|)OAlcyCKmjcLn_qdtXu5p7d{(WM>e;R9zs1+ed^6W3(D6UA6=Ye{Q(ZA{ zDimQ?dW0QWA2Pkq@fFQR3&#zx(8G`dlP$>`Vj^qz=oIabrH7|#e$9b{BE#mzfsvyi z-$#jE`@ZLmehXZnPy&y8A#DUg;N&`IU~GhLldp~LYrGF0T`rdJuBX12VBNoPTv!Dx{57(7z<4vA2Nzww3BTx8}Ls~ zc~+cu%aQBRvBtE%f}ksuDDj-9I^czlt}fDEIu51t7&)ZQ#@f48Xc9FEAIW0}4G@8gxC;g03fasOt&C@h0_oxX-3$ zO97VeR{PXM^3$ga!Y4M*Sf`yZE0dXx0dL`XFW=b-_mCOucF+EnyZv>(^$2VmfvITo z*?K}AFZZDGc(;W)E~nKPTamr=+2>NBnC?);i93z)6*iOLbXQ=yM+5{?9!^e&_L#LA zINpE}j4kvS1*B@sam?uqliS`2%WrBYnhu~WANFiyD+pW<#yIr1Oy|s$;oO&wx-p}E zaI5KkEt-9Gr>emiSGPWl;uY_{Nj4oal*iKV`xTh{dEk8G)t_&R>?$4j8^AyNMGfiS*jZxS@<-Ui+-;rF`y zxX5AdEj_3G@t?61_BYS=F61PCdyLetQx~}DqP#AlsVsbqfj=T{ksZbFGpW;q5sk&n zR9O8($_h2J-wvh07ln5@B=j3R8<3H-CGdRkNf*VHaKdRds4YfCwj{gX2kMrXrxT#o z6Ng2SSQj#{8HuyRCxurfMcu-AuIFh92xZ08oc*SBsWtuO;I|UTk++hS6(GKSP@o%{ z`fK1rm@#UNIV~@^`uH86nnS+%=|%@XR_crUx2Kz&_$a&Be6x(}j_|;Tpks*0TeQ}v zA>=f|`3^zH9(T72oIt$`Md7d(m*i26$jf-HiJu;!&%<*v*4B=VN*ULz5C&jH1&Wly zQ4K_Qg1;_+)qX#_qD;}A@8T}8+m+4ALx zbC`?8n=dD-s%trX%os(l-LnvU5O*n> z?O3do+~M})F;P|7H{JB_ti7K}$osW+y}v@RIIBF%Z#2v6_lSJo%FJj!zvxx(k;o+V z$(WK-iHU!FWX9>D>pGu|dmB0|Y76jVBInt_N2DGm#nPotl*YduFm~od(J68Mv#$nD z{#uRu?%$7)R+o}RViDEyFre#*nn`LU7!OoQM$G+Aupgf!UV)OCFKI3{ ztXnY)wrzNP;e*j6{?0P7;`XJ{*hN#$RFOC{V;MnMTP>P;3R-~FDi5=lTZCnwgJ zF2o^?5vef;G#*$|0yAId@Z80WLdM}(%dHzRkUGbJC-?Q84JUqb8DKvD1Y!tcyOuq? znqRVV0Vq+)6(w}3$w+j_U!jqZ(gkYNOd5^`nH+-km)!tI)WC&$M`#gw7cD4=KMsr) z*%@^syH!_G`dxOh;5uV&vWD#`Rb59mb?*4!|fnWu?M`KKDk{NEOLN|1vl9XWAZbk(c&mHHo(~yaSA- zDX%YY-D>&Ew@L?(2CXOI8$buEy?{#2Id@b4-NSukeS95RW-IUfnJQ~U-m$IHd`A1T zWn`T0Q4fGq%cGbP1c`Ln>)UDh>PD}p@nDnAfBpxkG+Jn1&1Bh^B52!ow>H3y3K)v| z@7Me{Pk&(}M@^JXlA}t~-KMfo7K6PwotsB%CXdn_2bTxPfVH?y+e8p=^c=0V4Lad` z>+JQ_qYg019YsEY%j-+odi2t%aNHDyG|qvxU+A(D+VirRyDIVII5I;fgwO$z_*`LC zS0U3rUY`I`!sJ3WVEJyLbSNDuAL#a3T3STki;OdWEEB9E=fZQ7nn`Cxn)ngb!qS=@ zGw5_LUhj#&h?WkngJk`j28e{+3%3V%WylN}5a|@;hn|I*3WauePW5e&k9#|(`-dfO z7*fny4t^nMb(Kl3e6M66<}{lE1PE?GrRO@jkNw>~APp`^8Wne4hVAE+DiJ7xg7&}7 zF3$Evb`3|g{krP*1d=5QsU4(&RGQ*{HXn?00|j(_9}n;VkUb2P0Hqpz96P<}mfAfK zvDkzgWj{m*JwHF#dY+pyqzsRwBLn*JWU4PaiwO+ zxUhDxVM;4tD^dM?ZIpjS3wkcCbACo&G9V*FL*xx%8GxX$SYE?b^i{ z5p747nV~1-2w44n^*7P;fjt^L(a~ilu5meEU0GNao_=~JJ=L*ZSf^7m@G2dooDyK~ za%a>S1OFOTbsH_@C(dJBW<4#lJe{9m_M2NVdkGmhr19;bCVuU7sKSdrkWdm;f$y$R za8|)98R17!vQl{p=8P{ZDM7PuJt|xmMAl3S(mewz5->?e zi-6^8C4q*Q9mhvPY7fDT_^=}K`^8n41QlzV<4k9Ze;w)W{IAasB)qa&&rGxf9qy2` z$mTgCx#su3np&G2ycs@xXx7C zBr{0M*_#7(RNUCARraQT<|1F^dQ3xhC0;+QIsW6i+(Qe*bJ$EFDk9Yh zp?^(p9cRBEB_S)_zs-;A&Gjrz#M?~K17KXi$+M4k0T|L8sQ|I09PmcczWFc4kSBWU zRmwLkzfqk-y37Io|1KS9Nq^C}3FtokBOd)r&o!SLl-O&drNc&Q&aoZMH$AAS6+v<2 zkk>?6kks@cp|uC8_Ny9sr^icY+eA-ue1kk}=@~uz2*&i_5$(D3aw+C-Ma93kB9?w=|(7O5dtGa{%#ihfyqs@>h5fWfY)oWY;ZxnnN z)QIrLnmRxx06tJ6S_7AOsm?X^*=$8*voZT0OhF$^hQI&uva#D#0wruJ;RY0M84H62 z&GnAv5rJy}FD-sSG!cTO0yZfE=GU&gZj011NYm0b$-V5 z;lZ&e5o~bp@Z4wO4L(6wig^v3S~NbU*;wuoQWeQ$yxR-l`K~m|v;{w&C$9>kP5cc6 zS?^4tZO?vhLhN)jIJHA!-QqA*u$V1p56#yJzdC#CLEMagoDU{P5h)k%c{>oZ8k42*zU0NZ9brq)G>oK@tXPkR zVWe;11-<|r0>bKj87Q7X-UR<6Q5~;A3_$J1jCC4-lA10$U5E3nm-SLjrP)kJ)VA5) zUcyV%@B)CC#5`B7zxqcB4ms>TF9%ASN+6Y0mU1(D$1To>~~qd2g~!IS#xK?36(GaY$z1B#{U0 z5W&wf@SG@#QI|itEwvd+;p_ywQ0Cf{;$>gf?I(849(iR*br7!8+-HCk-i-$+yo3Cr z7m>oh^CE>n#U99G{FnJEdEIlD4%x7}U(PT6tzYTm+_6il`2oPK;tkT)NRHVzpS5=? zwS93Ma%y*#$^noJ4!_UCho6L<3*bGnYm$~>(o|xqHIvU7K|++2LUW89e8glVayHx0 ziZwY7zraHEaIs?k4Ed{mgF8#qY-Jxd(s?a??lU`Bo|6VxUA|3YIf6)o@*XHLYxWty1hMKbCe2r4 z_;fl#H--e4Dih*j7iNy%dh0M8&MN6}lxWnpP22iiuQLZ6m*@885Cc&(;nYi5;Uok? zQb|;2vbiP-GN<|Y_>|uPpSW6ugR`-E;(cl+E-zy3 zw zyFf4*i{|r#d~)#L{#eYBi84lbUfGNb zvM=wx4iXwQKmep^6{OQN_y5{hwFDm?_<)TO-N7-ge)uGAuAvEv_q;phnH`%};U4)N zuFpEswl!V*D$J+bIlTQVRwenIryPHsGW{7OT%Ua9*}~ANd zhBk{EKU>+%%`kp`_1V{OTAM8l^y$iSv$T_Jy@!dE2x`2rKgBtrkQF!I&(SrK3@crhGEVZB7@hY#*#^Jd5bJ zcC~u5gxV``C}_G5OXDx#pD>`7>`u`s_+fnK4;0y+N;uzULba1%_}aMiDQsLZ zAd5_9fdcg&;*$=W_}HF?75=An#=?~*{%%@hIvo}3?vFbHbF9BtgvjUy6hzle z9~Z9jhqE+!cChADyoEEnrcgNQ3=)z6lRIs=DHoF?i1g6y$ff%R>~Bg1v8~A#ZN~Kg z6lPcgG0gP}+;^)P0QqI=Od%ylG)?~w_VEGcs&P#E1$ESuz!m9Z<$}Vkf zr-HTQxct1hvRoz31MA*wQHXqPU1)~eD&;d8kdlb1Fn(6s)KurEr=gthpv48gMT@d5 z-QTiG`?5_h<<$F6pY*uyRu_Y9uFxA^xJ3kT)?~X8*5rJ5`(c&t&WygBw~8i9em#uC za|%rW2HLmbk#)^url;!#Niof<-?kmRsyn7RP!TE!m9lL(^-nkl%ylGSjvPfNdXT5x z)1$+K#fw_5g@XD}eBJ5knUo~Ut*P-|MGrwg_Yvs~`wyNsKXIgH&tf50p97jMep}^9 z9Rl>(U(ox+@+Xj-0#A2m5N7<5z}%g%TCf*+uh4jDgCSS6YjyLk3+UF=js+1LuM%d@ z5M4Xr!sM$rT9SmjUDu`Uw7QpVOh_kQ_qc@rDs#g#8A9iQ7ok&I-=lyUc)xiCL>nAU z_^Dk>rS1CbGw~sNH3QHZ(|xX?L_qy1@lVKpvYFusNPLCj!#Sh}dc zgVT*t-LY-mIv6|ohd)o0c}H-h#P;0@S!<*iYDKNST(4Yg`r0)2L1&=z^ks2Zw5ltu}){}G4iiWoL>)naK| zipB9=E6TEF($d!0VHEt)_1Bz2sg=({ylhD&5KTZf_k&-Gv(W5+C2fWxcx#X{oURbO z&_c+%W3>w+$vyIIp#(Ln7uBBfu{3ab7SBEa3lx;aZ@x-@l({^Rx8}iwH6!H?_u>#grgsc0%Gq{_O@suihzWap75M# zGx7ZifZ`BZN|UZwf=i#-UVV2wG;~`kZ^(b8FW1O6Wp^8M>zeL71yGV%8>XIc@A~w*<&gjN=xcXJ8+lul>fQsC?eQce)*|!ECH&cfJ3~QrZ!O-p0b? z?(TM3&zeb3S5V&%VCMtgZkfh)lgQu9bN+#0#HrHz?Ss?Ze|W1A@|A|;bzzu>I}hnE zk_6a*P|t=#fk35bOOEn+HSu(Lv}*>&RRhP&~bY@m4m!_0ahx*R7^LnaPw zI0d!GCtZ3OQzpv+CTm7YT(9~W~Tf5wzbn%WBT6$~@%73(>ngoYpF40~p zefstX{d%2TobM*6IL7fv^YK7$?qcrMFK(N7Xj-L=SHEpAV(dukx>*a(rGCfai-rY`u!q>UhJZo)4vcNdpy_fVh)@prgu z2xvHt#W&LCgdKbac2MC0!(WlmDt&VKvxB>3sm|@Q5!J|FBZ<8v$bqevF=NLif;H)v zW*76xpTH)ezd{-EYb_S5D8n zja&T4iyv}1x|OWyDpR+q6BV-_u~xn&_;S@^vvRtP1jnSfp`CoKo`TE;#KM!jISND* zP_`0S3iAD^plNot`g6;(A3m*~?NTh#1SFZ1DOBp}+;rKJZZR;ERv?(|t>^15^vz~M z*RW5yY}5m6s5S5We!migDf`*5jox~0ypL4&9PoSe!(UDinVdDlAEdAP{5Pn?DJnZRBZ5JFcVP#DdrTb~q_nfiP<0{&vK-FRRC0W2B8^&BT0Dm~ z$~%WyquY|^W#uM~(b6oSc~X#L`>BdYdcVkR4fD^h9Sr>gK1rCgyGAiZtFZU7_rErF ztUpmChZ~J>xFeP7>ccUPOz9Dt6a1`i>?ul${Kdk!QU6tDkd8#S>bxDDH46}4w^#j- zKav2{7y<1Eo|+XhB}=pTg51m;?a31R0QtS@pkm850Xa(jjDBBg!N+K;#oAjg{%qmk zdbSXxI-%I{7)6f5@~hg!0J6#Q+P74ZJfiO7tTm?d29+ zQc@kuQaDMGORI#MHHdrS0TNZniJu{cj^`W%B*J4`bI-~xelKS0beoxpqiapqSB>5} ze28L|3?~XdVqHL#86n9?ehkCMBbkw<5$sxTzp$&BU#_{_GHY#_^xx2Y-gU zc@IygQ*1rn_-^cR`N?+UVNRB4mNRpjwRO!^AL?R4iZg0k)V>?A2?f8LSc?&M9lQTB zs9{9?W4T2;Sqak{Y3a8U-Z&s)6sRB!9aPmN-rG-~|9A&WQ0bZYa5e9})s8#W_1^wv zI^Y8PX*5tx6G8b>$<3i?CY3!G#As0#{Vf1zBczu43qLg5n=F1=_d(cz0l7Uw&tD3B@Z?W! zmG@78a=_%$_Q=wQg8tNPK<#NXxxH@&QS?L>h>WEZT90E`pa~7YgqYdGR>Tv!aiUMX zR-ZezAJwuB=>4-N@ii#mSJr(prYywda9=Nv&Ww$r{6yM%Vq2z!&x|KF$MzJC9#}cG z9zU$;y6U>Fdl>%yY}oZXpmitSD|PEtOzJ+;C=jq9E=o#K5wDXWz|wpI@y>I^?+`Un zm&1$=V7-%RywcnVR64$(i{|P-IteOu^u<${k4+XHMVHYD9N!C@Lbr?!KxfSRsEqq7 zzB(p_HtxMRXat{rK94t*20SyjMU&}kHX!6#jouPrn ztZ$?a4#%`vpZzStr@pnQykX&*l13sL?6tL3=etopjGc20zgt8JQ+=kBe7R4Gc|yvw z?7PUzIrj~f#vC>)jw=`GW?yB*X7sOCF&<(L-EwQ>5#lqS4qUmC#)J1X>_`{U4+9u> z@izue4mMM_EautzzZuFr(JqnsR#dwL0OYki(jnq&vd>EX?cW~nCZ?Bu39eWDC{!*t z2(5ksQBa)pshR5$ZyU2xE;cQY4%a8Gy;?2P?fO%c{Wk1|1`i`+%INF$uTNt|-U*g` z_p$O&zUbV#d_O)nyX7+KgGBaL+xz#{XaoC%^O`kq5SwdoLv#^rCNcQ{arj_-CLn?g zD5s4XT3TLBJUFRtW`?43ZjFTzM5eV#*$&tA7JdjjX!5S8qH+?bX&PUAIpHd>&bI&Q zILV^5ztoe;BM42g3KyKK+gS^@)!U`ME;KEpm_<~Zo!CilABC0!M~#jxz5VjD;b4fe z)gS=+1qu0DHyBf1(oNf&(b4QNN@s#_RP|~R8kHJ4T^h=xM>X7FAiga1Oy}PNra#E^ zg5wwmMnK*joCxx6Q?Xv34%VnI#s$9cqf0rY~^IN z1zgSKqZI+t#-?rA#(^)bn=ULrR(rl_p7dZ3DL5H#p4?nk>EPNOgwj;m7-vH!RyADK z(s*BP4WNhVtPi(W=~;H)#FttcTzK7_@JgoGqnq+Ox~Yy%_;s~-rXN;zY7dA33>Q49 z&8}PO%Et=2#=3#fP`p{-4eWoTz8r2ee^JH9^{D-*Y|TD*BJ})=_uy6?=vMAb;?SLF z5CmukMB2S(C+bik#sU~<;4D4;X!h@{#J^SdL7__sE`WGKA{y`i+o^k~VWSG(l75~W z=U#IEBJMsTeu5I^=LcarDhZ}mOFwPLvJ0&*&>=?X5f0gfY!t-T{e6TGvT(DNks#y+ z%wrp&gRtXCm8^G`7U!jAjHv%<^#rxnE*joI1Bk~@IDHu>U}g$cmHAgM6%~sv<<~I@`Qqq zk1wYq3fK}#5v5M`aGdnX)D4abddDg^K2zU?Dd)M~XCGqxziob9>+T>)W(K8vECK!~pCvcpTMIG>L*e*d=VjUq)y$p6kr>(cKD2NB6XO1df!5fV z;8At+qLvSAUc#GC0Kl4{ZGYSDr+d`<>w5V^(~aXE=KuMLz+Vv!0b+O9$P?ciO7E|1 zJp=Yd@D92{N<9btdGFKjj!^B+MvJH_Wbe4wknnF?M7RirR6?J|R($?#>!+~5BxUi3eSRl9v(O}d#5y6Ha(y*eNntn)H1IkqpKdCd<~eOU2741)V~ z7mRQk`(^L^yQ`{hljg*pSZKRE7;^KdanQ|%|D<6`@)V$DT%(3}kJ9Z9K|lE>YP?d*)3^e@=GKWDz*bIyFu z=X}n&=S~hB1x|JtH_s-RY#eebeKvB!z3?3CSiSeoPyJ(fPNg3v+Laj)W6yL}+Ol^N z3H$<|x%vN%|36LX+Je}5N4n*Eb6$Y9bCGGx#vwQDk-*PIys;6h8M8;OBX+ipUayQc z?0&x4a3af=z5fTuhf(?80Z6L7?-+rXw9=wv!C%FDFx!5xpU0NM1|v&Q&Pi*w-`jKk zr=HD*yXQX)&>vtf(e79bk+^y2= zrgX7M+#p=nQR001>MV5`OV{Moh)kr?nisMaTxtz$cuO`nS+T@7eW?gzdw296ydQEt zpRMu2Ai!_Fa;fCf%c)6t%+^iediQF5zx#95`SfN{{F}rt5$XtC`^t+Q)n_I=n?8uP z=EUC;`(@^h&sF!*n~jm)8@-VvkGs3Zf@q-(d%qEDDtL$dem0`a&M^)(&0InJ&lOY{ zeJZ7dYfYI=?n|QZPeF&`w6Aa7eQlGoV?L>PPcYaJ74{nW$W{1pn!S$=o+ugqgAZ-9 zd+Lp|{p-R2hy=1p%ndUABdl0!(eM@CW!tOsknO}8umSm}+_3JyNgmG0=i;5X=Kce< z2~(6_f*&X67$F;#a%LhmLY*TK+u@DP*`&{b5djYA2GXjBKZAaUmSZ$$lT68hIg2ug|9%N>0WqHklcg9vBpD9qYb}_fe2GX$1s>jeJShl zV``jI{LttSnWzvK;oK-5QnoLBcX@Xywun$QZIf-+CG^Vx5z#}_5KNJLF)iB&@+`U< zFloa_pJxx5DBD2MM(_c^TwhR{rDDj3(`nOBI+fmb5>ZjX3XxNo@X-7(C5p*h04SGs z3p$k=8DDXTv~4NLR99T6G2{B$Pt#z5w;I=~zYb?|5EAYMbZ z1olkgkBXYnCQr*m9Z5`0AhVg%jPVIyQ(GKZ5Nj+GX9%Z`y4~ny=ksNmuF}@OHv`+* z`2Y>47-6=m#5@$2UwdGZ;bW9#e!beqoAuF2%l+_ld#lX(adv)uzaNRHj>BGW(p_oH zYzd~|ozSMSVC6#U;*Fdlf)zL!7U=Y7 z=nO;Hb=HM7`3ftxLxp8Ih1D!4(-a&~hzZN;(fo?IEc0d4G-x1c)U&ZtVy;P44naI| zHjv^Yn}BeNhZV-y`1p-@-QApOx?WmM*X<8bUUX_%H7aA*VN_dUy0W>eXVUn*Hxe=^n6M+?^+R!TF;a(=h4TTC~i$ztx&bzw{!&Q1{2mV4J@rF3vWlaG&&`Z4?6irJh$Sj z{%7~xtIa6$mDN5H3gANaHSA%GDK&C`Qau&_5BI36DUj_zN57HqqOqycA!_{+W;^-lq={=&{$<@`vJBS@Q&Aoh z<8fdHZ=b%4;Vm5NIs`V5S)0QEoZGc6ei3o8 z{D_Vfj$gwl^~r;q^nUef1Pj=fFb@%nt~&+_#%X+Vri7__Dpw;0SOEb zBSflT8Bsc?cIx5(!yoxRmrsElkN1QqNz|R#u*!oCXr_rFn#?e5-*I3%t4swnq&;ca@#QqKV9eRbs-M77xZebkjK#h-y97|G(H43O=-fRoxNdv)jZSQmA${*q#W-dKqIsT(7Dsh z@ovMjNMH+#$;B^CW?4pPyVQ+Go8GQ_s#Z59dH+7&2lt6emwRV?cVM!Bu%lWow$7g& zO>SMM%b%`VQsV0Ab5{^vaf0l)vN+skH?#?9E>tS?nl*?U({pVUCgk`JYHEC*o^t`; zim@uHsnW!muIjJ5otgds5d}!Y#AzIbZ{J2uuC#&V1f%z@f*!ZODV=K+0Oj_QQSIEx))UG6tKA@5r!n zV#ZtE?3sQU4H5c~p@Ch#9b;5M zEy$tCuXHNxu$E0ixb7HehSdox=MicTe_`xI^FCgrm9dQe^f#~_hzlt7x*V$g2zmDH LKCr9QKRoTL7wCuzR#&g!}wbZ{# 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001656851577.png b/docs/css/umn/en-us_image_0000001656851577.png new file mode 100644 index 0000000000000000000000000000000000000000..1079bf68df8e9eaf692cfd7ffaf332ecad9f3eb1 GIT binary patch literal 115839 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001714922041.png b/docs/css/umn/en-us_image_0000001656902246.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922041.png rename to docs/css/umn/en-us_image_0000001656902246.png diff --git a/docs/css/umn/en-us_image_0000001667002438.png b/docs/css/umn/en-us_image_0000001656902250.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002438.png rename to docs/css/umn/en-us_image_0000001656902250.png diff --git a/docs/css/umn/en-us_image_0000001714802217.png b/docs/css/umn/en-us_image_0000001656902254.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714802217.png rename to docs/css/umn/en-us_image_0000001656902254.png diff --git a/docs/css/umn/en-us_image_0000001656931909.png b/docs/css/umn/en-us_image_0000001656931909.png new file mode 100644 index 0000000000000000000000000000000000000000..8dba5865c839dc0d7caff3e0ac91d6261ad0598f GIT binary patch literal 37505 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001667002442.png b/docs/css/umn/en-us_image_0000001657061586.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002442.png rename to docs/css/umn/en-us_image_0000001657061586.png diff --git a/docs/css/umn/en-us_image_0000001667002454.png b/docs/css/umn/en-us_image_0000001657061590.png similarity index 100% rename from docs/css/umn/en-us_image_0000001667002454.png rename to docs/css/umn/en-us_image_0000001657061590.png diff --git a/docs/css/umn/en-us_image_0000001714922065.png b/docs/css/umn/en-us_image_0000001657061594.png similarity index 100% rename from docs/css/umn/en-us_image_0000001714922065.png rename to docs/css/umn/en-us_image_0000001657061594.png diff --git a/docs/css/umn/en-us_image_0000001657091157.png b/docs/css/umn/en-us_image_0000001657091157.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb4ad734a2f32cc6eb3e709c11d75a8a5999ab5 GIT binary patch literal 22618 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 Dl|*fS literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001657091853.png b/docs/css/umn/en-us_image_0000001657091853.png new file mode 100644 index 0000000000000000000000000000000000000000..62bd806b933767ccd222ae891ce38d3a765cd6be GIT binary patch literal 27159 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%0A82g}iDC3AD(j^FB=8r4{CxGJ(7< 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001657244165.png b/docs/css/umn/en-us_image_0000001657244165.png new file mode 100644 index 0000000000000000000000000000000000000000..d69f486c161ac14e6638b8a866289268fbbe533d GIT binary patch literal 58129 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

fM7 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 ONPkrjuMjo(`M&^K&P_-F literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001666842626.png b/docs/css/umn/en-us_image_0000001666842626.png deleted file mode 100644 index 802ffdd22a95ae62fd96699aab4d641da71deff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11656 zcmcJVcRbtezyG_dwyM2%t43+nref0?wY8#F6)iO*2zP65V(;2})+mCO7(wm5V#FRH zM#MaE-}m>N-`T(OIFIv3#3!G3^0}_-lU ^?Y5yS{lkEg!F{hu3aNhRZ)0-?b>x5 z{{IGoJNUn)B+sDur|ZtIl>yhv`WV;o2e+){Uddg%RvAfjW_BBYeDAZ0k@K}{q-|G^ z>zxh-me;QFGpQ=b>AC~A(-t%t44SbSmxywAiozkaxD)pBWP`Y}>Or;UH90wZ1^=H- zUw8%t6o?2MqT*)YgzD;Qsk6z}j>7-~%_@!WKbk5^Qs$fZ3wMD$hl|yfjVpKV?_kBP zSHh%gJ12;1f5o7cC2UuFlaikLTFb10`jQZrH`x5h0gU&!Gzr-J#2%=nlLH7GAI3`I zUtQFC2nGv&`Ow>L6tAPLnrFqP1e+CD2=)z`s%X@QkTP-Ly5jGwqjj#X6 z&LXq!LVtOVy!;J^k9^}q3xUfiJn)n`6FM^|=TP4le9doqK~}j=|Db z-sRE^dWG^;mhmHC3zwg>h=oD^`Yf0`hqyL5eDf&P(xWl!!9M>B&`8I6*+ z_g$rEIw)&q#L`*4G#HC{g2IQ!OELlmS9j!(3yo!-7f6J*WQw~U5VQS=*R~@4HAl&Z z8$sus6QZ!C>Ai=+7RQxY31V*eQPf=+)hU6TGhGx?_Y~9uwPX61eusK*q>P2HF+9f25T04j?!Ha!RO0o0$?XgGeY{3RhWXM@Uq0mfS`cA? z)RaqvICJGjG@=BRs#~(tYb(4hUZe)zjfvD1O0nD_4n99%t7bbo{cd}sxhvQL6=CJ8 zwP=aRx0YOR3O9SjPwDgyXtn!ckBs1s?{V8=wo^3GuX3-laU0*jY-*jA!hb)ou-zc+jp$dw}vqwW2gq3$aONFB`9(rNNE)C&7+9$j&(JjN{Xt?7!EM1gQV*|{uB+u32iR59P zxk->fYO|Hh@r+_SG-&LS^$XaPM#56`voehrQLwqqhuI6;rpBA;WO)=%5AUm2dXy7 zt+FGwv(ie+^S8aTliuofbgikKL$~)#*}A+$N;pm1>Kg?WD})RRK*&xZl-sNEgO@Da z*>7x#{M`gLJZx6!I|9}{9_XlII$VbtM3PGy^DC>Lga}lcA|bAOyv*v`<1W9$=19ID zgDhfpe@O2t>)pmaC*Pu27VM?D3{N58GG$V`5b0Dq0PLFj=yy$P?m`<>E@U0DOev4W zc9JgS8m&Pcu9al73Vdmbm>s|78D}O(J?>K;y}V2A*poLQ9d6_3;Je3vxRZkpe#zE- zRp{FgEQGteJy=kFV=TJcQL=SoNAXE!2y3SFfOIn#r=_T)Et6b5l59nhu`oMWN#!R< zFmu~tQ=9xI;9-+!cv?Y_GpirTzKj50+_r^_J=2@`(+Nesc?#DqtIvhmVgr++NWeTRu~rJyy; z_=^cYY|Zbju0T>dc31Nra!>*CdqM{c*oZGNB&EF!EsRQQjZAtk@@=L4QfaWIfe*2x zdN6FQH*qQR_ejOWMzBh0`3y z%?1kCsogUy8*#VOtj-jSHGC@}aR3vr*G|S;?*E|##l`+LboL+<8|GdR8t9{pCC>}x zo?C~a(?neD(foGcn;CS``2w2XpQzt{7r{;PybP2SaNGO`yZBKJ_E* z*aV~2r~(5SiBWP2tGcLNU9;U^wzBOHh@9mK`x5;OxWSUEW#fefL?)xs$nU!vI8uPJ{iPg0cRxrAu5+11m69F{hJkB zxIhEPAy+~R9}SMvm@viwM>Rgv^OR=e1Um+e(`=QH!%5u-77j#TfI+-q!uCrr?WZ!0 zm(tJBOPpmgy0@PpLO;!=$w_e??djZ)Cd!|e5DF`(jPV`gp!oIKM*2b`^V3s4`nygn z>w!<#qy_`}Dg^e^K2q;#PPKanP(+_Tw6};FzehAU&hD-%&B=1AqGrs=w$JVz#Bt;+ zbGl=NVHPMZ!|fpFo{HQtPaNVzh8H^M>JtsRBT^<_Ij~~({^0iia_0Bc1k+AA(7o@3 z>}$LHqU>tKVB>?ZXcz2GRB%#uW9!+mXUSWQuiUfP6D%o0i3r6-CM4Kf8zr!-`Pp=- zKYzj3uu0~FJ!}&_FFmxgME~EWo4Oa`iC&vCbVhOU1Xw$h=zEJQBLr$vSWrW zWTfYdR5S&C3YduYk|)?x_A|=%uzo zCOe^M|Im0N$S&F|xElD;%;FQXT!xIy%;}zo%v8;kvNkZAQ?N@>QGt(VpR1MNxw=1 zRksqET}GFA-Q$#8hC+vniknI#XVfr7r?B7UM^0-VC1#6$iZo{%i4TW^qihXzFbafo zQg=-GJVK4ITqE+B6d%Ts+sr}6-iV#a*?ZfepmP=tvl>ekLP_mg&k$th_BzWoR8VP*h?(4gj&qtl;}#b3yCGMS_`Yg&C!BhF+?GWV zOtMinuDvv7Ee$Z|Modd!@s*7O(upMl75tsH8Ow&j^;fqOH&ZqCO17H(SI*$Rqu&G+ zX3j&QZ0U9bDE|K92+X&`(LMxof8o{yTHGj_dzF6v=<5PK7n)vhtn}PN3zKuFs&LcGW{GPv#oLthl7+ySBLF?y47AJupSnc~CTA57xTpo>|-U}oQp!{;fY3!Z=B zk9mR0O6?Nie^#oahso+V)r1WXatDFWf^v!!+H+gIicHJ1=Dr&DpMQfUSfNmLXZ1ml z@>>g+?zwytX~|2zQ=3a)OayU-;onL>W*93{I%op+TXyYgkRVF)y^vVGxjoB!Qqg( zDN6u~G*W!w+8H^c&#!fJ*v`o}Bfc*~(`--lq+!Rdm>(y78W4#<=c%>0kKaYkNC<;* zqpaY)KafAfb6RT0=Dq-N#?v?H7D$(^L+!FWF9`v825TM=^>&knb*q;vowdsoXPoh` zzNok&h>jrs8hbAHvQ18eN@VZr7$s`H&z)P+4L4xq_s^2 zsI_c3%9$~oV}G$0A!K2iilwM2+g6cjoL5W402$eRZ4j3?1a z#cO-$seu75j(4$ z$3uoK6#=n_zWFjx8qPM`0Ei|c@l=*th<)FR-W2{cj$d_Fzr5d-%wmV&W=Pw>NH8cI zt~TKJ?7k#40qQL!naZLm=)GO?yq=xu*F^c8LdwKNcpb8B#MFOH(Zxsj+oClWZl5Iu zm>ILooNTcpF(R*pqmu9sf}$o`QVY>0PihJfn_tM!r+jO=zppKytcghe-OKmx8@0z4g+^2c(b6kDn4 zET=Rj{=Yt|LTc{Z+|aIkbA@L$+`*$nP=Qj^JRnnv0%U^kf4FRy?5n9{tjAIQ;-81XyeTytk0cb+k; zU3|XkmLHTSXHN?g=zC>6Dh-MIGh_|a{i2ju|HU7{-H*E-`r>VoP;mJAm5;%jFH(Of z&y_zT{2%$V|GPKR^WdmtXY8>uh{!mvdKteA+czSC=NoPUVLU~&Y$AKS;cG1|fjTXp ze=R#@ZkG=4-WiXA2cYA>Pr?ZviSx zA5u{u=PpZO-cpX^X7aW6phtp%vtHtRm!4DlzcUN$dASmvOf3Xh+nP|Z=iKpw1JJdZ z+Xj?D+*Mr{v5F^V1gl85h1jUW2;TScN0J#*`r!9&_+MdO={T35Q`N~uwF}6w#ICa! z`4a4(W?**LZi#2`Xoq<5QKboQ1f9_;$RXJHk+-p*LD2DtKLK<~y!V?9Uj`|+-WR8# z?`fZ#q{D*T<^U@+8o|r=N|rbE+8pn(k>sk*9%_=y@NoL5hR#N^H3r?5`kavl_jt;{ zkh6^NzF>aKbM=e2qLqS$#FT0Hy|y({y+9#iKBvJ#+->~MhWTNu5|74cI8EUjiBT}H z4|NV;?LoL-rC!a)D5@JYr_Co?{OZ+J=yxlg5XaT#j|v24DfFa!J~Xb>-QwMI7U>in1Ou3V8x^ONVcThucqjW;5veIMHyBLUYxW!&5iA}}4x&h8A{ zt;e$2;ubPJ-JH9igJ5QHLqF~FlfUc|(kX(X`+povnVQjXxUU=P-W{yC2 z1(~E3E?4TxbCZwL*og_S_xqVBOhXFbE?hOqXaImDztL|as#`HBh zJ`?g&76NnWI63Z`i1|MZn=3fSbj=)?VyxRQZVEw;StBWCPsvrg1kU+OkhFg^LcTrm zc@YB>>pL~5DCy=iy+2)jT5$%5!#UoQ&sxwH%V50&#|)$uiEwl>kKT6RS{9B)S;rXr z&A8!PO3Nv1pDkqi)L+mM-TRkm}1TST|v-%%kGk>nU}GR0pf zu@CCSfHoh}D4eKoU}r^(eQy4;AO6tv}f7q$*Sb;cf=cW zmxeGQi0ZlCf1X-y&!Xt{mh}Z`5OeUB_`E|ro=oOJQ9*f4i$AtIjKj+N-c`W@TmQh% zW?UbxBSP5|;I)e1=MK;5pvaS#3KPOv0_uA2w;gWzM@a*QsMA)BIWoOYvl?ijq6W1O z9f-^(v$b@2;>1Fc*9}#GlyBr>Z{ORnnm()g$mW#rfc=z@+Ee|=T1ypE4%hEcfVKSo zX2R%vTxLvdqwLl)&OVLehhal?#AF$ijWuAW7t{er>gcnN{=pzTuHpaU%ZYA#ZTvg7 zKOgdb8y#E#Q{Eb|CJtfY<+$njjb=SDGK7JXq)w!75`?o~2n>iIi->~FnV^4J zzBDcI=lQ-Uwk@N;`}+?`6%a%bQM}{P&uN}ogI1{m^<}>bDdC$RwbEC`Oaz-B!)@NC zF)F3RHpNe}A`DWO1uz$Rg0|stL-+iWQIDCvW42CUKmYpbipgV~jFftDs!nvA`d@c_ zV6TOfG@^-Z*mq7{vc($4pcLohGJE#2h#o8P!9Hi9uYR?cxAg5#gqm7a<|trli~3lG z&rJ~K%s?BecAiRVsYsnNox~H3xbNi0Q$H?%UUIP{P?#3T1;sh#?Mh`wHD{3UeREm? z5{TwLbXHLi+Iy_s;&oHuUAl>&%7t7rj}LQQ^Kk#JIt^6T-2e(+H!YHVQ4d6KNVdS7=A^%`}fUW@4p*ksG*ICSkR;1n>0)HR)_Si zz*F4w?TG6x-tRzb$$uOPoO}L=^Xa^Zf+8d7o23$9k^$H`Y7%N!(p;;M_v3cEp&&m- zP%`HgmGpbY@c+ju|L@j9yaxCW>FD2AgmdH9cx687wsBLRe~Uu>$XEdMk%NicM_1A! zI7}E%Jp-}He=^V3yJT#?zx;0xGTE?GJ$%m-R-Y`h{F)E+(?Gjk-wS#!i` zzY8Ksc6pcCg?4p(NnR{n+b*R)roK6A(=P_wtR%wIUFU-SrrPic<$(Dn z+IwY-M*cFmgmt}{vv5(tlR^h$(JY4$6a*{WWqAG%Ci7xXT&m ze*50`S#5=kDB+)rQDae5!EEl=w`A&i;w@dv<*wY6Uo_t)%rR{G!!q=ms-46i*s79t zXEIA62s-8-nNK^FHCk$XcrT^G57sE?Gc^7Z#6Zy0Us?NvVCw9d-+2D` z5bDwV2#QUhwV4#m5hcgZy)shD9Js?rWHac%Zd9r2dF%Z!_vS*V;NqHx81U{#S$DUw zCvH_FX&Lb7i$|f=QQ*~km5k3-rSObt^FaWbJDSQ03JS!d6V0<4C=^uj-246~bRTPa zH+xEm#memSN-rW@)0op+Km=Q0g4ca#`G&4j*^uBw;9jI+*qgB5*vkt^$hijNc>gB2 zZ6POp+?+8OW%1=TVzr`jUKvRjE!f@If6!VN^)N!%nStQcV~~yAy6y^va#yDMJdf+< z^UWp7nweCESEm^w$~ZNPH^~8mPrPQCjHM+SAOt>d!0*hKlxSwsA8*idTgH|s_MQm! z&My1gRbGnQ38T|HhFTvsz{O8@c*tc8VC5T_GCtg5$5&vVk0x+Q0J4^uO*SkAzbQrtkrorl@tuP2!+^l+&tMFcP<<7i4%ZtnfE3QVUl-_ui#h>y)@U@c0 z)>6qto*lt3AnJ|PvRgFeDrNn{ZkXWF;|tk*KHzq$>peWWv|xH;+lc3uhAo4SF_54x znA%~th3lMzJ`|Keb^2;;wHXz&I_F>J%qv(EVKdo9`{+PxzLSd>u|TNTS*k4e>A3Z* z&Q;irMaphT;76YyAw{jFE3rTVO=$AyFhLrHRmXU>-ks#A+?-KNL{P`~fW4Y+NebR% z4o-GZ0@2*J|4PH8(D>eiLaufs*1}^H6ti$IqJU?h*&in`>B$X3NDiD-a~k zxom{r^bwN2cz>)C>ZM&D&f1`mj`q%sNRpIS>>LYt+~E7<(x}_hCRP2M%R$A11<}~y z*TB{AQ_^}AcoYrO&O33uC(byk;Gnz<#dqf@y2v*QOd$)WIF-x5Pc>k&1if)DtOGiU z{-)5&!V^tMc9n5Zo+d1Y!b~f)`_<6&bStJ)eodsIOiwuH`(aX0FP17rpzy3VZ|^hH zGZLnA88$7Q;l8u=EZKW@?PF!f#?ZK8cBpyrzF z^La+x7?JP-5n}=18l0wr<(U0D{1%ogcH21CFsQdCr~-0r`0>3_+5u~ShM__|j1x6( z?55A;mYdxq(+f;ONkj>#Jpq)oO1>BT>E&Qa9I80YxkqKLF2{9rmBCS%>QGDUYQncu zQ}m(zrB3=7_gj{9!}Xp5e~Tq{Ysc@Xz43x9zrt9;rG`@Rg=C~$@24Ud_2LK44B||K z2w7PuQG-gOeWC;e8y}i$F=~<#%=UnQEzf`Jz3Q@`uK$aELb_$&b=Q|33LNjo_!{Xs zTX?#=gjV}YBr;qPt|p=eYRV~5)=-anRB^`sUINUvz@3}oDOnRtX~YzBmmx;boCV?h zGM({uz#7?OcZ3;Nq(hzy0(+~%R>b*m`FYi4wYSa1vQL2l+9S^xV+3-UJ;bRxHyXxM z4)^(2WR3+Y`*HfeB^nZ+fJ<5cQk50v16D1@UG@Zvw-atcre2<(JufQ5QwRR%hAgMzQ7#~f!Ek(nzaYkua zzutL3$bmaA5bK%c+zt7@=}8lc!RV%%2wv&CKc`=g!1%L1-Wx@d-Y7TKy0~?b`d^yr ztNr;E#|#h?Y|Uu=Svq8&XRZeH4cqFnS8TXWa3;MWQu_U7BJho}ib6wrp{w2tEexT_ zxc|41MXqJ2@U5*#-ru3yzBD5V>!@NND89xbR?YjMVVz3CC?OGi!&E%U9YKR`xbp<} zPW{6Se3&cDZT)b}Q}C8vU%ff}0`Lslw?0iWTll=G^cR$7i#vW^6qxxG`01rK<`f!g zi!RO}Ez$Efl`d@I@wwRVq(a6BCYwYuDJW}XZ5tR=>aR=Vj3d;$gir(j4R9(GF^zGk zK)t#5xR9cXEYM?@@gx+)^?j4;Y>~JB4Nq6pPSW0A=OywuIEK}!v;1WUm zsI}8kRnR3+giwJ#$zfLYaV+dQmnNx-3A2=6RME&bu;<_Kp-H|f;at&556`0Aq&Lwg zvc`(F{;N#dm^-mj;;eX&@H?{%J9WfOU0yJGbefwk_qMso==hd>=vAnFl^U-M1bOnG zVjlu7C=NVBmv^LPzXoe&t4N^2@n`=cI)MR5I}BCBmYaHCdikBdVNmi-w8-h7oQI4V z@V`3X#K-Em{Z-pw@*x70G&fqrob2k#v}7!FR!@Y4M7S%3AXkC+eG5Z#di?VGz zRl6EHF)Fn=@xM`*hCdWUdR3W;3f9R)rQQ5%m=<*(f>-}Wb^oe-xhCrDzg4UGiysjV z|A|;-Oh?^U669ygrjCr@Au!$Lfa-^m1VDK-+AE<*^@X0E^V`v$r$Wq$ZA~pD=6ZRu zzu9)Dz1{b#(4EVtk7^w4h71w1B-#Dj0n@2dk^`P>K@)=vnZl2~wa4+0t7utiV8HJC zjg|>h7t7@Z#9I;Z4ynV4} z&&^rrzGBTee}q_5ouEwf3>^1G=U{93%{H?^S6Xnkhc!m~(G_|ipPE!HK^HoSR5+=A zbQa(%M4M?hnNj$Kii^nHnt_j+PU6)SrE@}Q;WK7+~h&= zvS9g+9D+sD?Ly)U-iFdPrzjld^9_+%4}h~s=KM=|*@BlgRB7f?Mte}hdnfq>5n&!@ z5wGi%UF5vQ0$;^hC$x?81lO~fpw3y^6<(Gfcd~czcdVTHT&6X9^F(Z}9>NwrzwWma zicrEJqTC5QpWsyZ)sJfNDLom}Heh9k)CJc%G0^bVRW-4(=J#n2gdw23QQj1kM;0^4 zU!x>KEWpoEIWKPzIHSJB4rr z!&SYr1DDPaAQ*KY;1rBkULC9CYHSk)(2_$pn+gNn8)dC4yyZiB1B2>48x=5(b_O94 z-wz)aY+KJim492r=JeO@fu!)s>y?p^EQA`=hhi`%F%ngrn$7$vv|(nTU%TabE|i9Z z9xNTcnWDPp>gS_{U5i8_GCat8BHc33cH&m4F4CeOIWwgexd@Z+P;@CL;q_u^{l+&g?SDr3 z@Ly?MS-i#-V54zH+$F8 z{Rg{sTTlTgY}C;&#NOrCb`rdyHb=b%H0F}iWX10=|D7Cs*@T@cjhUXWRxnk@K^_q9hV{MFzS^6}?+ zA~)2_<%kU|<$t@Bf?|aDltn{0%eS9iVr__Hy+WhH&9^KW0?;WZi!p4~jT(ywjrn^k z!D>rK<$@Y9URxZGY@+>oLyy@aCdf`wza$_$f0Q(=H2Qe4+ALR+0)P zuF)$VzsbI>d(LPV4fBSm_Y^D;ev(zovCX(sqtaXuoh8Ce=<_rUvl(^j#(Y60Rn$1E zlDG6>|GsWQ)8J=!tq)XE^&ElRmZB|W!_GYu$AdEk1CuQ~hYRy$>3oYBrk#gL^uw!r zSq0hD4{zGtha(5^DWLfwLs`_FOZN)XBQu}ztN1&T>EFiR)#sIXfnSVe zT_K(3a=gVDj?%k`6R9cbNDJkD6Q?EckqWZX>C{sgi7IXAEp6P~R%zavdZ2xE$GrGw z52t9|5H(Y#u_qJYL0oR@RLb@CRo&M#+fygxLQQj6%UZ9m$eo)RKbpOdA?-{1PD3US z$>AY3N}A^YJF0JVm9)Z zJ6}^D{_a%A0AMJrCmN(y0!YP0{-(A0ULP&hoHVpKMESF5G_kj5JEZ)i>5S}f!=yi! z9`KPrLKoxjB_hNpYxdX|u10 zD`JFk(0+Dd4C&mx2gMD#nB)QVEH@?0?TtN23H|SzAbkq0**%Ur_2zfh94!tXQ5WdYK=cZl!gtKFuBennc!9E*TjckT;r|}qz|6j$r00)Cm;kn zaIJ<0W)A$&&QRA|{p-_Yv)VBzzJ@eAuzwi^G+_%AQKJg{Ja4cDKM_Q^7I1?1c!sk+ zS$s{+I-qK(C&=qh+Jv@s{AP2{nW%A2qRC3=q-%Yx3R2`_?W^Yrs-k%?)RWj7x&9`# zCtb|PF@44HOz8!F;jbbBR;P)D-xHZj_on@d%^}LaktcT1_^1c8F3w%PB!(b@nu)YE z=Uev9N{u{e4zlKb18pb;W^6KdybZ0rpnnWr{HUutOPjP&K1Ek9$?P`+89XKr_icTg z9R3BbcR0}znfs;BKMkeHILkzAJ+66ecEOvzNt0^g&=CwxK$c#%26cM|I6jrdIWX*L zb_yLYhyffAlTw@b7F!I$Z$vAtyuqFx;%&l%le$H+Q@S~GH=nuIlkn>l>!EAj$ntfg zZ_T+rR;88NFnpG)(H;#=urv^|f^qXeK`w-$K9lgLIGjn+P>NxbwBB)VsmeJ^Df{$S zi@huB@eGfB285^!#l&~tt(g|bn4HJly)bxR`{YtC(56hm;z}lq+qYylj9Gh9h8m3I z{5*f%&nkeNI9peZUMP&#RvNNR$LLZ*T@L`6VE;cT1loPU4kJkNQ4-``o!qies5z23d{UTeMU zeLrhGxa4$B<@^2LD=8_dTsVK)MM-H(fRfUt&EIVWO0Mj0{}#wL!ClUsQmXFJoCbt% zA-_5PrleGxv3)II3m_{;p7($&DeY|A_}kP0`!h&M$EEuz`tnCv8JbL#ex$-Q zzAw?=pQDa^OF1kKxVMF&I(DSVz4Eiqmha}m)YE_Y;YlVTusvPNCv50iSjXPpN0pbJ zAiP+$S{*NrXB~Xn?Aqd&ve)O}gO}&U;__GU)hmdr^c~2anpB}w$uE{0jqvfjr6{9> zrGreq0UD+BJnxI%9Gi@EeIfEDMU9_bl}mY8ERw$}nhoJ6@Ab_?@`nk~knoU@ka|K{#yI3Bg|c3TMl^V@r87)N}Xvlu(Itd2{DWdbUe;Tt!ZjqpK=2HbeQNC8>G zK=4Oza~z>~vUqp|DrgZpc_PlBfqo!Xx^Yk7z zs0T-QZ?B7G6Bgj7ytjkFS?=4xETEPt9Z(6uH>sl!c+mlId_!c4fLpve08z3bDw@>i zmAO9KC5BN(BOO3Zi92wCG#d77I+q3=V(?>y*KzjyhMDG2vhCMDL7_c*7|zkeMr zA#!VJlXLT=I(P}(3k_SO5uFRolOmm(9dSh;|CS_@KPOY`^5o@dqKkJ$6yFmGLU)1&KecK1KUM&vk}YT%X@}t zwa-N1lKC)dyB*$jSn={F!GS$hhGeG=y>DJ+83(w@m?N&!xu_S%)nB+yUO()kf8+Y$ zZLXX4J1~1d*Ed-i>@H9v#3#fjPD^R>1K8_n%zlFawPT;C*l}|r!2;CD}9T;EGgNT`AjF-_c*3#xhZ@kUv!s*Y`9LWJJjgd2F{g_R7w z?kJABx#qR&ni#8&o7YDBq^dQLP+oLmOgizpGU<=mJbV(SFmU)BPjei4l&s)3_d|6u zEKs9$e)<~<{0ZjIle9j3&nyq3mibTh=azrxovIe&@-(JzUF$XGul0B11Il{AxFjvF zX)CT_fDnEYls$~{NvSp=NAPtmoUL%#zJF`FYF?I9_1EiLPcJB2_8vKEohTxEnWt9~ zlT@0w1j^k%8eC`b^8L;wDrRNR@zJ|A=kKZL zmGM7+uKw57B1a`^ygiNWO+}L}>{c68{+^qqNjL14_tgA?N)CPhm=bRHwL2~w1PuLv z+7fo&uXz8lmoU~38>Q}7?A^;I^ro|KJD1v!cz3hLb-bNBQHlaT#~~3JRyH9UkyPMZ zn;!do;Ndx@CyftkAT*vG#}r4#$&=RaBj_OeJV$3W`%4Cska=}0Hf^N62L z*G7X=CU}{UDWcshU_;~V-GiHNP1<)Yjd5Nkh~)Y%xBTQwZZ7ON8P-LB;I1;Tq&TUT$7CjTH4!|h*`SVQRHOVASlmrldM}!$^~mj z^}v9Yuc-xwH!5oRGj4wWy03*QdC-O(CGPCiNt}`Q-sQ3gRtq0}O2BAtv~ctgA)VMR zRC&eYn8h#n3sLy~5`8c@IznUu0V^2qVLxWqD7E!~;PmCWl~1-M`gC)R=#ft?_N^m7 zu_ce!@}RbypKTNpkYeH{H$asQW;-i1@#(}q;oduH>i#z>o+&qanq?k<&vSVZ(Qx5y zHqzT1TZ#l*HV4Xz#0qeZbvka?4fEJ?EYUMN(dzIM4H>1yjYjRf}ZCL?Qm zh`;&Z)MAWy8o`r1fsXBpbWi%_J9 zc@@#D)&Q4Zy*%vW^{~pdm9ZtvH&0t@w6RM!rY32!A@ZU9;N01o{pTf*Qe#*8I~V=! zH-|Q_6gJ0c3M>>8PL!M!s2qo_i#QC)sj2H4twF^`C{FIAS7d0R&v!~L`}v6m?Z!L4 zm{e$dUYvb`6?`v{(nJ6%nlj5U~K zWvtmudVx{qlQYSi4H6f?isO@GGD_CcT6u=cl7{CUui{4kZmxsbxpskIjBMHc`*F8d zlJ$8c5_zC>-=*~cKXY&&GJ#^gmKyI0k8YR7B=g(g6+DFEqe+4FfQ~&^cHVTZXfbdx zkCqlGjQ_;5PEZNSNeKcPhh^duWvncS&U$>8P@m%*P<-0;4RaiUzH`WNgPHcLibp3KSs ztsdOsuWbrB1&x_Bz2Q$r2%f??Mcbp$DtO*A%YIa)HE-*D-K#juBFJ>h>!GVKKRPFr z6xPteYe$uh)AR5n=u`Ro{%F5ezOVaWK!tNp11Q{cZ%%pE4ps**U1d+XC?*p{C<5PB zW?AA!K1Ox)5w5Ex>TN+LJ3YRDX^H9R{c-C334NM)ok%z`?a zl#9>vb8uISo5u;g`CM6OK@ToS=uAg*$8!6a1C-a!t=G=*?`>=6SY$wCY00qlmd)e% z+_TQdVP~W!*`&sHqeB68gy5;Nj=D_)+B0L8G+MCPVST&G{n50TfuF-vNIfc{97j*+ z!Rkng&zSc!RJ+dE7c*<)=z`fW72b)df-yfnb=AtyX&b&+ZiR8R$|x2Ulq79&$IRGL zT|>FhD#+_ed&*zd}+UP$*9+kM=g6k z#ydcRcTN>trlC_I9w*pARH=0908wO%Uv1{u5LJ?|o8+L!`Z1%eHByk_nTn-4SM!u( z$8w0ji9})y4J`}|dc|{MRIInZxNU1cNFn&QM^)ghnd%un*~L<+8B?pV;720gxznj= zuWxD?sU~A)EtO%7zc71(?<`H>ulkl;MJ}FnwzTR!6jX5wA(*0Y!^0OcYcOi&sJ;fC zbkPz~&dRD8E9{dN>e$u>y7at`iWm|k@u}sHI2M~;NN7NOH+ zQSk?s>8al6aprowe_8YdJfu_@KAjH>QB>`-VqnHig9n4o_B5pw582jJb^?C6Y2}Rr zr|o9P$O--_6OveBu_&i_d~!ATim*`J-NOq7C6ZVKUf5%8KbkZW`Q1C;!_xLs0eM|- zUM&|K2_Ti;ym~C9uZBQdi5nMG@U1$2%Cb#lEWVglGe;kaej065R~Z>Dl3-pOS5T~C zu8C9DML9#GsMB>!86Cp*BYf2V5ktc{c_oLDixi>1x5WA&lnX$eo&x-lfHs`J@Rpg3 za<%nV#mH;Gfs5YeGArwR3{|a<|Dhp5vtTS2);OclT^`tTf|C=^63fRg&9nWvJce!i z0*yNdeV>8#V}4vsKsWFp1{w2GpDv-Z{OIHx0XlyvjoNHHIaJDYK`UGpzfQ`)tCzb< zZ#&`E_>vf0!tC8`F50W&MpyYv0more)4(gq?7mWePMQbQS2X(aszuV`x=m11QaFqW zx^^7VeKjYKTz8NiT^+r7l>D}eLWkYFH^h9b1Ey9Ni{d5|m54|l7U$hmQ+R9TGv0-= zLV%UE#I2p|as|sHx^8PrcVb%|rNJ+h8*eD{m|Squu{&=YJ+1#5UZzw$Uf{a<@WVPu($$Mqfq)IkFMn%m9)0BPglwM1`(AG@ zw7OW>5_EI@z`=k`DI!|Z$il^+9>Nc{KyZ?^d7CcSS_-8oJoIdJC}^4XZZ5Bm8+&_e zsX%5wIN)t3iR=BiO1s?p%?^+8i@!52Z%Q%~kSFc~Y z`nDgd4N|rqZ$dGzC1SIyv-j8!#%k5=2+w7ZIy4#aMvTK*FKiPBz$i5{#l%cK(SFba zn-rdp+L=|ipciJlqod7G<1t^OBVIv%2O;3akLR?OzJ7<0Z z5#0+2boxE!NBO4b@xG${JF4i;%G-~IRjW1R8}OZ%>v@+6ie)()jmHPuCE#IPM~>!) z4C0KMIrhc{&}Npf#wwScKfIx6b#_fNwYu1fe!QbqI5Vs5>8EP%erJVY$J?SIt+{)=wrzV9LVO1NOt||6pEj9$aF}HXs`uw2*p8{(LCl52M zxZm?MuF|JTV^Ay%;X0%#>s%xvQsYE}D3)ug|b=P!R=sa=(P$F->M z{b*K+K%pk7s;D^Wm9GB8M#D)GXT_=O?yuWiD8hbD=>$BKQ%7<^uiX=rPEf}YoP1Rm zCyMA+*JeM3XV-3y)TPUfx+=OrkwtgmebLr>;B9vbY8m+-pFt};=>q%`l9CX-qe^mf zbZ=U}tz>O6>_7t~8dUdXuAE+H{o&q>S*SQ)yQ12J6dd6o)pv)NAMbuhxwNC~SWVnK z2H`pBhucvlHd|4ql_^z;P0>y(--go{8RR4kVx+c{z}Mu5W)}fYxx{QmDQY`Ix=$N{PSkX~WWSkYPeJ_G+c zDXlbuoWTT~67w^W@rOa!wE9hYha0y8pu{T;h=J}nmLH0m{gU(UdD4vmU}Xw3+rUTW zsbZYZI9}I33NR5$TU!-!AJUz+?760VT1159?g_gn~nGS|~xk}3>w&wjXFlG9Ni|tamzDUKoq<`2D-}1T|il?m30AQ9ZVK-NkW%HyE zK7r|5faGItvoApLRQc)%bg!}RMJTLg@$3`A_Ps}55-d0g@G(XY7K~-E<7cag%pQz& zE@P(-$VM`}v~tJw9FMVyJ644`5p~^%*~-*owAM1OcY734p)6 zR5bv>765>jn-8d*+rw<72h9@I(ZL%}m}>?YF=Te**P;zkhuLcT7ND?bz3OCH9#B); z5WuncGhW*ze*(;w)I(CAFCO=7Y6R{c8SfxO3cvuE)dRq+p?RCIV9jV9HKWzx_@xW~;|T2k>2QAzfKy3E%!stJSL^n?rjeN;0bb(6YFiyG z@%cdOv)PF1lgGn2rdF)OX=1+SXp}(CE$F>D&5mqwP6s%w`ZdFOYX_(fs>9dK4*$yr z@2Q!J;Ha7ZSTiOAFj*6}D2#=wW}p3=UhiGvBj-IfSw%;9To^{qU8#@xez3el$gH9Mw6QOwq}~sJIlGWQ zy2=&`6XK7nXO1p4Jjty_aU?(fS^gd0Fk&`4XXOEN&xf8XtxmbsB6tDwXKN=YXVJTV z+-{3#v?ScogSDPzw4tjePrWP&v$jVe@6flBksbhE+AF8r5@M{Ap?Z<+jfjdMM?HRY zE5!}evkYyzZn9&e(&40JDdO8Uy)fK+%|kxhvuaSXKL>b4V$*ZV8e(#pT8wPewc{)G zS7&}%a~dpL&^)Az`=e{#Z_M~|D*!SkEaL)33T5_yPxpa6XEw8r*h(AkXMQERhhHTt zRN?Qw+;T|}gF)`C*UB?$#cDC_Q5_eO7ybaC>mdIxXa@d_en=vQS;LFnXwaMMp3l|H zr_^hu@ZmEz4qD7!hfnqYDHU7zwO;!|sjCMiH~;bV_bSxIJ+)GTGc^Sz+qO|toxXL$ zqyxz-_y0f02^epb;2u<0SGN(-ZM|#P(Dx>S)2D+fUVf`rdH??V!mpCyUoE?LJ*j%C zmQ@4X2yg!?{UCHYeY(Nk{!;57_wRS_`zoFKs^XBrZ_0+cy2l{@?-T~ywI3|)Wr7gQ zDG3Onm?F*(Z*~}psp#%oA4iRvtq!};1MgXy#LvOU$5HbSdcDSECC-mPUKm&FIrIxJDRg8mkGgHGCYU+8q!JlC+cy?S+{Em&saXBpyB&GarLL%JmbWne3(w4&k z!c7((j?-2-HGGZX$n?0&h59;!cC6!8Weu=CFBK6jd9Fxf}8^{C=g4^w-J{WDjl(;Vepo}>j~q(KtGW(E<#MSf_X@eWVs z=n#wyO0eZS8;eH&H20XKH341M<47YhXoJh1vt*k@>U{Ux<0Y^22Z}Zal(kFEi;M?U zBHzDpjO5JCmRaXEvn(ZO3vP133 zDUjdkAZSpyFrx58T?*Scm5m>lMHHGQ%6UM1j>LtEFVd=dkO&YA(w%xCp1b_XWLR?D zwZlm$hL;$x3p!)CDfi!VFDO5BYeml&#a{x9s;QE78y?ZWXInyDxNK`R3T}p|%jqL3 z7wm5sf2mQsQh4EjMM~Q}Bv<-Q=i4u;+ZLsx0*H_EY@s#p2^PsAJh=bfak7l-1Nt?X z?ANGW!BLFwcm=t@ktKpMTN|Q!mSF{u*t5aY-KC6LPuV=SqH4&^HU~92hr9_Q;42{E zjKys{e+cQSLiio$;r%d7WjH&nzlC|tv_!}zKa zBOazNhG5Y2XBxV?1txljeU+`XokX-NKY8=-nxO(u#3jtszP)QLrD$ixS+zCET8>|_ z2A{kVf`v*BL^<*-;5Cvkte>+GF^GOmJwQWy%G7o}A#My}Z`crnUJQtOl=Eg+u~($LncensZl&xK95O^D%$^P zvuyqVh>E;tH3WmBh5|#dy1KXeiPAV`qxrh8kA62bm=s)8AN(QIelXf~@b*qb8TYDR zaCg)Ej#rsr#_cv1nL9S#DBi^jh^e!lU1@_yCNpseavL6V|2@BmKqDQllD*32z5BH8 ze4b#APAG>9vgp)u*{ch|^i-QDMnk`aaE343*N4#`l5f0$W44-leNtLmm3Azjknq{D zXm_LYJu96N)08M{OfiwcONLLE4KYJ|V8`;T?={Qp-iOjF;(R%(do!7hf?)U4rx{P< zxIUa=e~+R3ZB@j0mHrvgbrkF35SrrK?$9d(A z4`rTXq7Wa!Bc{{o33K`|cQpD75*7=_NYSHYMY#)AffmCtJOY=ofLspcwf!Lwy7F@9 zkLPWaO)O5IHV?FS9|U+G7LSP7;dQSb-mebpni(6^PHEfRWP02U{_Fl@k!|kSw*5WE z>?`K?Z22(mbAh)rgtZn-K#iinKLhri7DS0-)-mFZ>Do|Q=?Q%n{6J6T+Ir%uEmfd- zAcTeoKrjeIHHEHnqfpv)yqO727Rym5@u?V*wwnj_E{Iz5fY%T>`S4gVRA2X&H6&bk zgd$-7)iTwcpSMc3VjT&JY>3t_K(t)D7LOI!u&tPs^?xQpq_VY>Lw*C|$FA&8ttAGjEiu0pGlMBSGxu*sy$z&J=fWQ9lCZw+1`EEt|yj(U#0tT`ntMadU^)~&YV8Yee_lO<*SP9 ztmjF4cJ0dlPbhrnFxYm^30U6$ox=Xey43RbA&kMUe>*+@J%=nJ?iyNDXJ}grXQsfE z<*6yZxpj2*0>WJuyY>^{c{Qp60d`o8sT=sGbzZIll#L%QyWqyh zdUK2Y5ZALzwqx8BjDkHjvG$Bu*@5jSy7nxHVB5_=06ky~X4h zbu@FSeasG^xpBIaIudPr;xRUChmu!6p*O8J(R#U#y<|qm`JtNQ&SKX~v~HtsMR$;8 z1p+AKHpiCG@XJ4Yfu9n9BP%Bh)UGLSf3r0{S}J1q5sc~HC;DtEDhvVyEnkm+><30q z%_ShVpuakbZy%ySj#Eg`LJj^fyVBX#e817Ch7OcY>|85A?^HT$rB|t@en(~5Z>QW2 zHnx8WmV>s5pC5HCNwk)87SyJuI!JO?BxAyKJj-{FhO$jMPtgAAQ`{Ye2f_Q2$#&fEp!3A9spCbH;4+#K_qD|$Jz z!}XR_EHKi!*l7er*tg_u6$Ze52_2x)X*#8aHn%~OC4qFD&FcGc1EmFHzm?k3*T(#8KYW?1(4P9SUa4j!s|H{` z=9dn71$M5c?KVzB$H*6^{4$unlzN-hFHbn79j96w)?aJ%&K;<~+8P5x_s3w45gNTQ zBcB>zDexgn01{2j7zNa+nVCwjKy5R>=p1PXzH*zG0z4=<5a z`|LxF@i`3)JGrb_zW{O2zK-bmd9+2$`CKNjwjfriH5|ItVbNs(G;r&c zx`1PTuZW-Ao&_i74az5=kAXMmw*xO2c5J(At1pO>^;$OV_tHj`c@7}<%Ca^H$KG;n z1Pst9@M`AP9uqJ{bP1=X(0!RkT_RUoTA3KBynCDX;2??<}|pI0w@+ z?Qxk_)^eVYy$k{dIRB(_MbZ}k%|4{4zyvtt?1J@U$uIqSVWgYkS1kS%=|4VTL9y^^jRE!6BNY?CQ3j=E&${9w zvvP0D<>%MxfTfKQ!$&1aKRt_6s`(6rtu#!6B(#g9&pscwB+zykLQdW6lBycxG-Kt& ztTjn@5eRi?a>Gt61x~Um2ZYqsGxqb?T=w}*cczv^&=Q?O(D7A?vHV}z_~JYjYW3%F z4Q4@=lE1J^v2eurV#POR)g3|Drx+Xd`sR++%-T`@CV$gQt-&2#jUI*@Oi)Sb<2mI5 zEkjOl)!+8?BsTf*->23h_HOXV|JLJdmloB;3r{kE_3PiMKv!?&U;kqd*ZqTbR{wh7 z$~)WPRH&t8856%O?sY9`%qR@guYB;&!gc@sOs1#;djci?GBq(REVQnx||1Uw0rf&cM diff --git a/docs/css/umn/en-us_image_0000001666842734.png b/docs/css/umn/en-us_image_0000001666842734.png deleted file mode 100644 index 8f892b0b9d21fbba0fa6a5a84b6cc2e2bb3430ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1108 zcmV-a1grarP)KmrHBgN*IQp(Ot3?Tfuf5*-g`wbkP#%4=7!=t8VgZ zv(2uX1_GrJNE(xnG`HHSEGN2HvUC=qqUQuVZdxdZb6yY#&E=UHee=CDB1w{hKP2f- zf&abmG);-3=$GKiycLV0C?A0FcuX9}sH%z(0su*p%J<&}ACJcz9v*Udc*yzrIX5>q ze=FB@9m}$K^X3ipdYww8@_XR@ejnfW>GgVeo=2Ld$g+&8swj#=9LMB&P8`SV?d{QQ zHd$R=rCO~b%krI(wrRK9IF5s9nj}er z@B8?^KXc|&;YpHkbaX@*hN!B_vuDq6U6;kh#d2_A7*Z4kwr%tH@nbrj4vyoH=Q$S_ z7hGLk&4f=~lPt>!f`B~FF-?=TwKa5IC(AOnwzdevkSL0H^5hAfPKWjNb)G(bilQi- zoSfi!9)@8&3=WXzIdHpw4Z}bPL6&8Bo<|(V#Bt2GZ{Khn2LMgeP*t@Ye43^+;d5s= zMNueBGN3j#Hdt6# z0AMf}FdPm6s8lLgmh~{WBuQA7#b`8QGMV7}KB}r>7zXWj8`Cr~O_NruRW5Z91cYG- zfMr?tX1b|xUDxS$y97Z%5CrV+@1toNwOWm4vq`hrywm3N^c2tY0O)i&EH5w5girnF zx~{XbvVv{f2q8E>KW8u)5Cp-Ux}(vE$<#r`SRZA z{-@?z_8(Og1;gQxUav>5*W>Nmw-|=;(_r|C)9ZH$A+RiqR;vYoX__-nD>M80|GM;_ agZ~A=lf+vfz6sa>0000_7!&k diff --git a/docs/css/umn/en-us_image_0000001667002386.png b/docs/css/umn/en-us_image_0000001667002386.png deleted file mode 100644 index 3fa119852adffef2bd47d28e85550638763fbf2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17845 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 DNkIU~ literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001696838310.png b/docs/css/umn/en-us_image_0000001696838310.png new file mode 100644 index 0000000000000000000000000000000000000000..582b16181c952f118ec40aaa7822d6adff8f24b2 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^azHG>!3HGXX8P_2QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtWGW7sn6}@8lo$4hdJ13@X0A`}==F$CUr8 zZiR^?PLNdCyrJ=6s-f+H6-P^$n@>Nw_{N3XAj|OXfd`u^Osp?5^+frY8#svl|Ig3x YdY!@Hgm1-?KtmZkUHx3vIVCg!05MiQ&j0`b literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001696838318.png b/docs/css/umn/en-us_image_0000001696838318.png new file mode 100644 index 0000000000000000000000000000000000000000..e4fcbfa99dd951a0528d8be41882d796ad9d3d07 GIT binary patch literal 18908 zcmbrmc|4T;zdt@LcPcTh_9bm9d&a)Z9YrOk60(P4tV3hprf%Vuty0w3nuH>R7z`!} zp<(RnkZr6pgTWZHeJ|bTKA+DypL4$7^E>)U^;}+;xEp510{g}G zgFqmGt5+`F0)ckbfKc8MNr-g%(%cax6cPo?Tc;*_L;XNIcE z3a1L=PMbUt(1ge|N_ZMQdHL+3-_&)u(*v118Zi&O2FB_6W)?worxeokY%JJIzpt;) zBEO)pK4Qy%9?8plaqHT-+!yGNo$fnxfBpX0^*_FJ1WWI^J=sO#{!`YGR3v9#Vu%?X3*hXfF!oC8lMUC}JJMx#Hu@iSc@7zc`|v8$}C8 zI>69)c0Ufdy4bq1kB`P)_U!Dt$SfS^QXQ4XY7uoS10~^$g#iyEsf*CyS&e@lHkiTZ zXl-YYXG@QT^BUQhDF>b-b81lUhvugl-Dp& z$cJAK!gu{l^2LN8xpcWscIz7lcGnq)#Yv^Yv{14V>JW$in#P$m4&Ke1YpQK>44!)A zMN+D_(#)!KT1=&-kv9_xp_W*pxKf}1Yf8ARLMj3lvDT9&l-5_m{%J)zp6H0D_h^i7 z&FkEJ$n66s3ki>P8UaYLjuhwty4rByj-szpz+aOAeeSt9| z$2!0j>(;L62D48vS`trfBg0)W)%b<$wa-w@wzO~sD@3Rh} zi;cw^i|YvekkuI)ceU66S>@nke?Y-O6IV&9BZgyXgawO*N{_AkX!^)=qr#HKASrY@ zf6sZ^n|uLZ7&41Dm$(qYZ0j5WakA?-yg1Y%V++a5`VqoLN02aL5mCQBVJRKEB2(J1 zYqcMoe zdNt~kf9VvpH9*do+h{SdkZOCGxz zkRlY8r!g+y$S`?zI9oS`u&?MvEuqm}9nl=_(gOQAk?}O4eiPPdISAAVoq zNg10Gw~NB--LSd&)xM8s^V_A}VEc4D&qEmL)m)rAyXzVEWe}b*BkQ;oA2f_|;F39v zF$BtoH?im#wmRKv0$p_DG97gp)9o$7L6T^`9U4P5Uv-?P&zWPi;;M&MEJGOrg7a=! zagF!!)0=fdZ{7S?1U<7Pk2MVpZ!yT-J&69x7e<@<4s@9vP}xcfL-Ug|hSD|0HoVea z&St=yi`AN8KTqb@Yv4K4ts1hQgU<*-^1-s9|`;I zdYGPxsG^|Lkga}LdP}A$Gt77TiM6gti-|Z*(f%-+w!x{VR()Kny4G13wMSZS7el}y zl(*n+W~-I4n{^{So3xr@5P0viz}D18;iFqdt)Y_WW8agP*k7$fizLN+Mt!cZ&y?_r z^MG{J>Iqx>_#umItDTfxps|>^dbX6CS>087P(!50ZtFz7ZKn@8IJ3tjlJT)Mi!2?z zVNEA}4uo@Cv01vz1yAW|Th7?xxQ!hWzqwxJxxg9VF14m0@Bs`LbV|~Q*9fjSuS)Xy zQ~{JM8;0h~zV(FCk7vcCy`~!6S^CLKfr=U}bYBh~^7LkfAz$_&bYmWPT{r1Z4?ti- zmX5eTSY1jgYzTT6rPW^7H3JTtITB2rTw}_1avh=V`8@J0YUQO8kUVl}-^Tel?9S|n z3*cSqm8y`mal71-^fHEx_L8jLayR3y79_2+yHMbSO@B{#K8>Mfh}@_=pQX?q>-=Dk zVt8$WS-Sx;{88%$XU^x>lbM;YBj|AyWf7L8s|AF!{*^r1C3qHa)rC>pCRJZ|h}BlVTnu^D zI&|rsp9v=92#qnaJqB_`AS;I4&9Z`1ZK_{6nv7$Vm>5HDL{LzTbtOAjkD$Xb{GzFN z-9fcxN)vaAW(QY{{hpXyYK;gs3M+M-7%-t6^WVJsfRsg68#nb#b~lT4yEHx>IknEl zyFZX_RQ)PDdw)cVbDTCGiY||+kuSY3JT=)A)<+D7;)8K@46;rB_#C?Kp8QZ9q%QVi2pH z7gCU4y_ue(vsWA^fu=vw3CX^AZaxY4GAL$Rq)~DzULFF?P$Br~%Sp7&oGc6GDu6$= zCrvf9V7|shme*MiX*eGtDM#I~(7f!k@Z&J*)wzWCw*8NeN`9VEi9abRC5KOMmXaJ# zZUyhaWly7)7s2{fKghM&(mRbJE;kjWOReaZ8BgxO&F9v98n6`Y$+*PUKoGEix zWQfg;Wy+38Zpz$s^7jgT-xAxu_KJKlCLVSYnBuWJ@cMBTLQ^*J)UzPs&mR1F(J)?8 zEq~U+YF(iV+OTC=weu*x(t$%29U}0pCe21NO$_OVxGTcF2s6IMD2`JJ4gn9{X_MACJdJfXc}hVLZSZiOM4 z^BUZ1p}yy=y&hDFx2krYdX%@U_SMLcem9tN{1|73-z2%FyH5ep?33IA{Y^@|4L_ZV ztO#;sZKY+gI$%9JtZ=^V)eZ3X4GR8yf=WejVa?0aL_A+gqx&>fw6VcHeIJ1l#z<)R zO)j)EX-xgz_F3`omuTbDX|iB_2y(#j`LMQUWXmwGs+AGR?79QzE~m8wZAxo29I7V~ z$}BWI5xl80h&m{MbAw%ixKn4$Gl?T?$CsgS1lt?oiy1oPwfK>#7s}x4E1~3bRfiqd zvbzEwd!{NJAoQV(Sh-3H%uYCzAsxtq<|sfs|NaZ1kYC7@r{mm-n$m%?M>NJmrw9Y6 zQt((b-AQ$pFg{$|r+ zN%)jpX9aES@uqjS%@P*CARs*nZW8XdwVSp8p-*?5m(%oi zL91})b0$%yf^mdp(dNJjG(@JnO0UTs9i{zPRtw!Mg!+EfIPV9S`cdK|f^K9L@{Wp+ zeeQE4*^Tg4PJzFZWDaKwL3s-$1}A&zUOmE6UGo>VZqP*(Q-jbpZxQaNU*f(i;=@>| ztOISlk(oZ;0C;S(1i>>LL!@ReHO{{ej%mwEvA@}^VLcaHolL9^4rv*Yj3qnfN*c+~ zgf3j^70?Y$yrPu0C=hkU*^KeRKuj@$Ut@(}7kRoiyFoO1Na9+T}%AOQetkXTt!Q{))%J^0+lDy3hk;H6?>U<7UDMYbVKg5iZcUq8>w=VX&!l{{G)qz9U=0&?Y6N@|+~ej&@*|_uZe->@~t@G4&kNe1z#dPPWn? ztIjb^=0X!yn>zT3<%Gz+#x>I(rHvE4GghcAqVAO+*jMSb8vYn^T8a$q?QB_KymNnH1-ps9armE z!_u5h>BTBL<5_8ZYSU0IrdspNyTKma6`il?G2}(8gUA{3DGlB@Z)QIEr+9+95E?N& zXzLPIMjO4OTb_Kp9+7W=o_L`iG+n&iRGAuHT)0!w{2bF(8 z%epyt7yvwq>as;*5!TjQ-dhpe8g>jOWIE_5sbqoPWk2G(H@fT8JOwJ%N>bH#TriC@ z6UZH};V0;@4Zmze{>c4i2SB#@dychX%}*Ltw=^uP2w(JK$Of`og_P#|j91dqdzFKu z?lCSbVs&sS#9o2;SjLuQ#%cb=+f~QRnbjP@+I&B2UaI{bBcD`gcZsdo*E_YTLX{EI z)ln=+@_`h2Xpl$Ci{j<^QtZ5@h3vrQhHx&&6r1Q=y5((RybjkG!H2@WQdq z6K&5`+DZL}AifwL{ort|rxI7E6NAlQrCUKmS^RRN56nmlvzG%HVP>I2t;5ws37%zR ztHD0PEp#PmhEz)8`K3_sA~pNleq4iFUOTrg;!(&`9lmz%SLq#29c8mn%vNEe!*ppp zBP9r>q#~F5OE&bliP|LL(hyL_m}5X)2Wmaq5ziTh^2{2~{&fL>4gRyf`1kP(;>W+V z$p7VQZ;l|rYFo>^b?rmz)~IZD{`a$##(C={IH;gC<^w<>y`Y%uX-{1Z9_y6tR z{x$k*@3qofK@MXD8_dFZ{6NF>SqoxWIi-*=%xJ%2rnZc2ebjeITs$^iu zgX3R5gz*!s^25sWq*ywKK$s8{17sYLJ@4j5e+|k9P`Q$RTP1?s6pJ0=&gUY}f(+>X z(!Tcb?QZLgF>b@8bU?}SiR(dX_&*N^4y#q%a_3!?0;Bh3k+pxvGOGlMvIC^w)P4}}jTd+ppv$j4BD^SPdexQ}pq$lE<%1sFmVit} zY!>hp>dQ)Rg`#&HL=OlOyl*IWC@&>FiM?|@z%n32C2O`cz()X!12T0GHC-lkgXI0$-?zDB*YskO8c= zEUjSlxsCn49{dLMLF{$VaYzYJ$ybsn2j;(>S9B{^5YIYfpDsNPa3KKKX#qC|!)Vob zn{ASI0`r|h`obZpZYjRk-fdM8^gyMSae1C9dPJD?m8801W(JlX0dMdX&FT{t9L{eg zB5a#ofe$F}+n%182)>8JS^;Q~`0Xl!szLc-^p4*F#A|7w3XBV=@{nDihr|OQ5ODk- z5B}xd?Gs;stlypzwY^$G_=`9-HT>S55;I0w+^lhVv0!I~I4~GHSpKWu2z;Q0RbH2} z7`oNul%Bwfi$7=VCZiXG+6D3*$5cP@2?#h;MB^qH+K%iB_0^;qB9E=F#f?py8~2ph zRUk*c<|dzrc((`iGYfbpJpEpOboKc{HG7O3-8y}GL4?GJQ$JE@oW5)|Gaof2$GY3M z2N8xAru6g8IN=}kk!_BF?ur{AdxxxFb;s8C&+(4ay%ZCV@E#+{#`#*n{S`U~hlJ)n(ibSv)%{vv@XyCgwB^~2DMAkvv( z?cX(SR$N0k#hf8IWJ&ZQEpL{*exRPcw`~1+x^ZFcVC+}*ot7s2$?E)G-Qj6s>CkSq zxVLOTQr=4WeXu!HuAsk=_a5ymg65+Gfsu{TTALSi6A@INn_7B4!MF0Av8UEk1ICB^=v?heIh5P zk>hXr1p97qCy5vzHI-7I7E$Is5(DIS5LFLCOO^k#M7Mbt2qbk0-hmRkW2O5=Lo7iC z2&p$f*!^#SLU1pJIq4hd8yGJcrx#mU=_rqJ6+PCSw6Exqkjy{H-W0nL2Db)df zTQU4vQ)l!otRs2&Dl0!N#I~=svF`>Klod=pRmlW88YJYhNqKYrRHQMq#R}E}QP!Fnxiw&~eKwTFhq% z-0`>yeA}Ob21xO*PgD==vVJ)|sW@9&Rq53_LmU+tyicn9|V z@DqIqR`r|rF^>HKLSyRD?FCYX#QF)FgrbdO?6G8AJGpgUl^-TV+f!?GAvEqQ@}v-;7?+5n4Ndj~DGU$@2?V*fI#z4; z)f7{4#qK%vKt@7bShIrt>Rrhvhg5YLbDK_U5R^^*FYvx!;T#YKUS}Y*x229kJ3(JI zV#)0MM?>CO2*d=gk8t20h~V$6^9vsQeemyi;a^T1htTr2!@)}(U!|)xs8h|IX2UB{ zq0IST(GtEsJ4z3sf_d(^Gm zEjr14{l`-A@JSki&{l*9ouVOu=~ecWz@9Rsv^GyN*Mkx4gyvbh#KHTHmz0$MHL#FiHJk^Hu-y zxMfR2WLZJPpYCEvb4-Zs3&wo2AjTV5_>~^%eN!#WGls~}S_Ru!@Cgp_I#Aj_C|p{-ug=V-MREgem5{JJU~40o`* zRQM+{AoLDL^_uPx(>j#@U`Ic}kyh0h!g{=c33-{&Nsg%eQ>>bT#c6suTk5!#@s0Go z@1C8L0@IhIZ+q&@30_ZC=HWCu)i9X(OS)OJIvlSoNrTpcjdSeP>G#9$^8}{2wIN5* ztYdSQC1c$^+`;+-eBt$v%DFw4%RhT~7dFFYmAt*^--wrO6v|1duI|zH>h+Z@z5w&u zY--Q)3xb5flwOZ4<#~>R_TUK3;Vgsfl;zZCR?S`AKpXyKa55z2p^<+#I z8Z%NhyB(Wj%qM;D3vu?wCTU@Uu2b!(O-wc0KBVuclku9Vqy`fPl>o9UpT$cy z!*<8yqk^A4ytR@(|(F%2jI!^vYH;EEjXeK=n&f4Ef;mxBN!gi8XS@YaDkW z$vk{KO)8Nu-%Nq`2q^C~Vu}yG{9gVy*gP+3mNtx>E~xeAGmRx{z9JWvddXi3ZqhGl z8MmC((c7=lYEz`T=lHxh)g~vb2qFXqZ?2FI6?umo58&E3?TeKaZedXhlPP5fJ#yl@ zhKrGK?}dZsDVdwq(E|z^cSEF$HaDb`vvOe<8ZQU1BKnB6N!>D72xPYNJXhdLr9h`9 z%l`zV0sZxP@{?aJNt4WAfL7vrBw`bhXMlV%OF# zh@#_Vu`i95!GcjU7%kR*_!0sXcm@K?#KqS=XI}QZ3ZuJJt9!l856LCg+Q5(*#b@eI z-07xRg*Rzm%90XNwd~hnLGbFf{XM!;=&7vUTQGVsTro&RG0T=Dg^4(MJLeJo5WhQI zY6&eKLpGH(2w_cQLfm0=-&X8EkM2;Kgmhnu9--BEt28A&%M~DQCm_aFnKdR}ub^$_ zZ;5sc^J3+^YR7sNf*kmYy&43T;NFpzEd^%2B1bNfZB+EcjM!Jp6aYeSQ|IF=VJnHA z+FNj`%0_>$C4_1CrQc$}^eX9GsUg?s*r{&MY-u=keQ_&Saz5-(NUl zwLX^tY7A|qmh_gHuevg*l93%=1EWzU{0^Z$f47v^J}Hn^X~Uo|D+Bt2lnuOI7)(#C z(cmX|@*LpAygSAAV~#~|9Y%`doJc?J>-sr|Evuf-}JswjvX zw3+!y?s`TXon7*AK2lZq-d+#;x-6Lb(R%ecanyCqW8W0OMz)y*Cz{;()`wgiRoz+Q z0>I!jUlJ_CU)HKshx$N@;+1589B-)II|?o-w+2L?!HEe`i@iyFmv2ip+QW;>Xt&|i zx4sh38edcy8T#t#PO()nzpiU0j?OzTmSvHBMlVYsxY-nnFO~m*?|qB?6&lv-gi7cZ4g>#SE-Xq=#f6Q&3qe?G{s-+ zho-2)Ftv~FO8nf~z0HEKDE}>@P*YJqR=i=%$ykHA4G7B>A!U;!(YN@$rMbee4r$ zw@f87*Z0Y%U+@iiKwK}XmkzR3eD1#MJ|bX zv!ClmZ;%qLMC~QasM{?iHF@0DIla{H)k!wK%vxLZR9FpymTSm>mX`qn{l0h4hqDtF zH_!3%>f`M!x;^r)qo&3g5Myial~L`mzL3(8&o);$aGvq74zArmRY=+cT{`~Ty0mH7 zhQiZ#6RtNcSh0DFvn4zc_r}fYR^t~9S%ko?@18TB)QG(x-9LzSV#-9qK}JFhx2vi> z!fzJ2Md;CM>F4cI+$ixGk0~JRoN5JplwkOAg?OEU!`)}<_h9Np5SHw3cdX`@_I8RVr|1AQNS528e5U0@b$4z+BqD(@p6wSSO z(sgX-O8wr(_?$w_(5mx!RTe;Y6lFE zs(Bl0%Ay_V9L{l6wEEKbO;6Z2cSkJGpK@Mn$8WCgS z=0zTcRvwFS^EV7O{IY+_*#yX?!Q&*2s<7s};wdTwYk1PFd9(|fH8ZQ%7LlYx9qMa_ z0IdJZ)LsIi=x{gd)Txs@6!WOr2lKA43uu_c8^PaA{l2B6{5W#acQ%$Uprj`FcM}Pf z_@GWrrSO8*k$V+5w|n^V>kJdlw{Wf89Os1!fV2I46iW^hC5f*G75_8kqTVu%vE2^u zIrslcp8X%lK4g~fuf!CNK5dstB_wr7tx~Ih5%k=|)aw9!&(1a1$LVU_xjw8@9q79Y z_@v0kn2ud*h z3VnI>eD`HN0;jts1TEMbd`;y>r4pk}_ujYm6zz-sAzM{cq^Y)ZVb*X>R#^(m!GP|Z zBUG3fe*3-H!t%Q;DFRYg_%GfWTWh=S+5e&V$tTks;8wBmAiX%?Xu4_4Df$Q9oMxn^-8sjUDc=3uE2eu;9klRRE?%CxLl2%0R#(Z z1TeFtMvGah9c6wcNFm=5D0(n0NG2cSJHMRJWWE3`uF)TOnrygsV4i7dbbCAiPK9Ro z%8j4lRz}pk80|Q@O?R4>6WRl(4TU?loWS0vBU=5q{2|2=kfiTJRq@uVhf`e8=^X?0 zO6rnSiD>e>N|dhuQFP;6TJQ`Ge9SZG})>g}kiEhy&kjA?XKC?fBK5@W0t|dCQzi?|f87J_I_CX=W^W^}Npb`l&Vkn`| z9KKzr3?!Diy|wSZoDj9=`Ln~SisNe_d0Jw@b>bK;S~5+&08F63WLZu#+ts0t0g1)g zKK2!A2H%TlZLNw|My)Q^b>ZBu$KYL$8;f9`760g(2v{{_I?~mF&N(O?8`_soFV(Rwp<5 z&{%6g`ZC%B>7X}Ko34q6=k;1#Z|=$|F?RA>S?C*I?=~A&b9XHLX$N6aL+RO=X*p|o3Bi6^q-@#_>Hb( zVdzG$_<@3x4^qSy?@2fm0wdzWw!E*76md^_*^fUb=tVt^ScL!1~;Fe2kg6WZ>2t}nlh$XJhDq9&M#{n($awS zj9qTUj24ji#DNih0yW$2>IS97^-|8xt%k#XcD6bYs}kJza6o-}rXn*FFmg2)CdrY; z80vY2t;%2!Smh@tr4Ij!T75`bj9zaS5M5@}P>pnlvCY}guJ2DS_TnzWi_?y9MHAN)0M)6V(v{#YNMbXO zzxHt7p0&(q@}}T1zp)}`>#F$67oNHVrzCo@zufULlQz|Uo)YHw_~;!6Y$nCaM}7Jp z3Fr203Q}W#V=i|O=q?g)Ss$kl2{c2XUZg}Ni82rMC5&o?ITQ zdPDp_DwhAEW&g{GfA^~fF~snQTBwe$V+i*zk$W%)sQ8?o_Ir~}6JD7>pF}zHW8q3a zJiV}(c^Uq;KrpFfJ14%npWILA>r_@zv3ax|VtBdq1@Z8g>j}bY8Ra&u;n`;_NlyYB z-CDc1Hd?I^rH`wAYiseQzl}a7q9vG8;HoIi&aKQGWzSXA%x=g@2VT>)#dl2f8Jf%M zyazp$oO1_Upx?kMkZkFQkG-yK)nJgiGmHMLK zmY8B7Ut->RCcPFy_nidHDCo>iP`Y@Q-^ToLNKk_Yv+I@)QUX1-5cwf6g(#8iB7}Zv z;~8wUo@%|d>k{Z^YABk8FCUwU%OX#h9$o_q=7PRK`5`gTrxg`~skFs~Jgs?q2mQS2 zdTGndgq))e0_F}s@WZdj{+HIHOh8uoWtqd%%LlL-yB-q2othc>8dcvzIR@LWYN81lB)O9E;e?cjb!R)(n{6PA>|TI6!Q%6H#d*ADu8xJ02R3_teH?LY{dI z&za8@U9Mu@`CwbLe6DHeAjk&_84w<>;}qvBui31BfcO_gM}Dm5UD*GJJ=l6c@3n%~ znsA_rVr~CDsHX;RA{?+2%j+#6_8I0XU0@S9XXhT_Bfhurkfpa!NOY ztT@Sa23CI3=#l(n;PTc+BH$c!5o?BzdUhIQ0dnwNV?$)PaeQR$CDcItoQ4sTr26#;!_17oQB_}oB$u;n za|ELm7H3}%D_0?S9BEV?Ef58%i=eAz4YIm>4gjVzAyP`?eQcNpNCpPrjsH~v1S;aF zF2qry14utUYtOe$?;KTA{6$!4(6%MNO)RNrAdUceT(CJ+zCf$vL^VMLJJYNBx5DE8Fkec{S&^CFYx`$o4l>{El9hTURDr4%>lmc(OqLk zQ-_9h-8-A0EH%8Y7MyD~8^W@>TUFSfT^6aCbBaZd8tJOFaE{GHm+ORS_(#JKwNlt}qri|@ zz$D%ai*@L<$h)LRun1EZfBCsv{@O@L&koS1XGDom?^x9Xd@gHxnO7OU8ZanI*Y6a> z_;uL9&8@Sd3bNnUs1^p5W``GqV#rlaxT*OaB=p55+$q%DTV4Vda!vc&GSJ%F2eEbg&ocn+d2SbH@&H?m4a zb3>jJC9Kp8*HnyvL{Y^eN-#VX=iT+=kJze6j~|D$?9iibCv2Qbs>bkGlMn%hdnVEp zGD*~ZWx9=xp930C1o`Cd;nIULpN|V+-ExB=^#e=@7Z5UFb^b0B}Lz=y2tPz$aI z;Q3(-azn1Upce(XKEW~D^jR2F&Ae$3bm>M08$rx|p19sgO*q8R16=AKJ(scR2Ri@s zk?@mBOw8I#X#M$Aq4tnN72~q5uWo&;k$YAo?S<5~8B9G7K_>6E0~Cl5&8m<)$s2iJ zy9B2G_YEDG5WT;;Gn%CT;=`0GnfSmg0$G^z0xgCf98KP0lFp2gC~L7S=Lt`J`rWyXlPNsrZ%kKcZBXz;qhp~q_-p4wXxaV zMt#oA+OX>J)g)x1Co_(}u4{QTQq@cslnHau3+w=395KESq96KwnkTsaweSW$E zrSxDT_-SUOPsJGmve4JsxUor^RAaGH%Ehs3qQ2F>U%v5jr*S#inXK--QIhUP?UL;P zEWTBra~*kvF)uI4GR8(uzI@)2^t)Evi;i|otpo4iXyXyqo*(^{LqF!axaV>R{Gd^w z|DPo&Y_(OKUoEKJ;@vsq96E5i-*MA0pL}~^vSzXb>X^1O@qPLvjLdu z&m{vLGDl&kuGYO2&QanOOZq)T8I-Y8YCsl0KdZ0>6Q=CNy= zK*h!tr7P5DzyklcpBa)uzG>pk`9Qi@Uhi3c_AE&_u^fvXdj zfGRGzkI*&n4VZ(p6{2UdB*OXrc;!`_1u=Yt|D;PRT+_knlGp0!N*39<+g_-xWzT7t zzggNqh{zu!cImD|k(=uUOnqoa`VSH%$#%hAQLvK;r08Thi1_mre@u1j)xJ$~R~8w* z{QEh0f1^~hLEm%Sn*-UlQayJ2TT)7Jx)9hU=4ls^JyCjFf>RCNie&*(d1DQJ4r;6J z18`yNg}jjEi|{JTW&nFN3KDK6+&OKqa&?~1*PAOY*&|Uus`PE#K;z!I#|ok^Z;Dme zRq=l-$hmNBLh}hN`nTqZdY$)gJHaV>J)WZvihUUg)}a~LM)f_=E^#m+r)apuu)oJ{ zffC3#02(YJj*b_4HUR)jKuvur2BSr2i2{gP;37GqaH8YDklDG>{I~4Uh6prYL=8nb zW)dkI_M#EYdK)fL;>1;LSnf7wfUW8Jgr@X6u}#gaNh3^ka5h=_>AA?MHStM(0_c+q z<~85q>h$+~F(7HYZlxV0H#cpwtpA3@{kw7Zj|xYRVw65@Jz-pke(8c}RTY1QrMM7f+ShQ2w>xD28Abmm#{VyR zfbTA8xxSY`Ej$j9119qK?G7_d7iydP&M&8buNK=+7@;iqBh=FgN{TSS4YOkCUn;>F zx}8LaYwRp`{Rt3DIVL*kR$ztxd!_n~Zrgn-@fAguh|+6-u#oPV+O(S7v8NEN-c`}_ z?ITp#Xv3t;u<)dJSHV?tD{uwOZun=bvs(S|V3U%*7*4hGXO*Ou?bt?Z^;%_{*`;XJ zg)O*BTQt3%yb~%k= zG&kSigC2wq2JG{fZeStJ2k);4dN{yK_8R8cXkOazbXlvf_Po zh=}~0CXY8|`YByT?v?DMQxiYrytj|6d(G*31$m}QZkcdSp{C8vJqd(wjn?ozaUqWhwB*k_;)ZC) z)hdRYi5YgzJ>S%aa#|(VA<4jZ_;`EC-QgSr#(;oRrCT`f^Fy|50#X2fiMyFnQ9l^c zmPKCM^{Uy*wy(!dbM`Fv7D)E}s4rW7r3Q2gU}+{c$|Y|P zm>v^NkZgvWJ(E}>1sK*SX>H!48p**ZX5B2L zswSVN@t7RTaNIr0EgdKy3bZfIICG}HVRQ|v2dr4@&CJXYb*?)xeNu>VHw<;(DkSg; z@kitIt%=Byon(2nz28Gr+|BgM&#ZNtrb zr_ad;$8v;+G$KF$WWP`D&Y{t)a@w;or7dZpk{7^}-%$b19bJ*^i4lEu{W zHV1U|bW0Imyu8y12~w2o3&XX)d~9{?A8!k}Zydb`-TH$_73K@=Y;J>m&BB1BtMSz9 z9NK+d?Zq66Om@=j${OVHObN~w!~E$RNh}FDj4r1eq=-K?#3(ha# zv7H2$MfQoSbLW53Krv4LPfuOSsx4 zJ&#{Y?j>AO3vUkQ*(YhKPAENa; zoFB@qX9>l)eREOBt1&ZFOpZk!g`S5fq__@|H_r)no;}T-wwCEvs;skK9mZ&lO;=g) zMYQH7@8Ec}NGqSQ6bDtcWRYuo3KUQWJcQ68v&=P7l8@68%rnFzYQjI`PP2@b8xzPN{`U=4k!O2S>RgM zT!vx^U3oXQT3xSsYhs{~%<>7tReE0t!s_^Z$gkGaHH4{xbTf#$OZE2E`PD~XAao$K zW&7XWLM&(Bd4$se;Sm!2=5y=%Y;5TbwIOouY%1`y*4LHkMMW^-$j!)Bk(h?N$@PuF zzUlE^nXw-9@|y=dEeE7^tPPiqVIwO>)t&8cJL+|B%h!A zCXmnmP4}n5J#9bFvmEyJziXdz_P2?6ev+)1^!sk<)@P4^rPW5M`oj}y97^W{JvkRx zE0k6iZTTY(9LII~9Om)sXPR~O;-_T*+bv4mAOr|*3GNyo_?zG!+#!VE?qSe`gx~~s2sStbnHhWt8U}}ffx%q{ zcb~I)^ZV}o=c`la)ID|UR^44AUAuO7@9y3G^m^8MdWXJKmBV{X@fZgO2Tws>S_22? z{!1L3TM`d%17|+AGkgaA9y!bFyW!vvy5D?n%~;ZY0!|XR%jmglI$64VnYmivXgb;lYKuv1M6`fDzU6_yN(x{!;I;>P&%Z%axR!bBTd{H<65+W&p=& zOF$vz-(+AK4KLH*OvIzVsb;#)yMI%r1m=Hp2Udje-um}ki*9pAGS$xI zsjiPfqon^@Q`Yrq6Sp7wKRJTM_mltTohxbiU9!>BYOxa^79x+7EV~}1*Q{C2vgs+v zgV&4L#D@IIKJl;j%-UZ&8MF5Tjm-)C=T3!Y-ghK7a~K_~E=rd9V`Et9Oi8$U&UA-b zl`op(O&iaeRoeIZqp`YCjrHfBQ_~^Lu~x}G0`)$CFu*j4>M9$no1PYWDf zgNV#+uj&=RDlXr`z{-)sj`c7aH84RY^-MoW3fAhX41M=GJi@&Ve;b%Np8(cMI zlUj;wDd<%)qJco(C0n{TGG-v*9uLAQ^2D#@O5$>uTWBy zkp}Isj5^O086MF4jLLtiZ&uJ6RRL<$SY`~AM|Jl^~-)`4q zs*U?bUJe%C6CEm{l0JUxSFSZ{XP1u;+VCWZvVlZ=x^YvqywlxZ?~_gUndSUyVe)HeV82bXYbY>6CyHl zTbQ_^-b&>wI>wS&rwz2j07>FE$;6BBJcTP(|2&?>Nc3l=56mD{{QGrEr(b4HP`UM-UZ8Y=t-SYLQS@VX$)FvngtezVW zI6{jkC9T#cD@dQcr=WxR)5I}L;X*totG`*`HO#W6@$V8nPikn^cFMpW9%;*%db5%w zR&Jls&Ui$s+#5^+2W1I_D(k1lC6MKLKImyKRIx>u`BsjSu3GpW>uqz#wvTHfRpZ!J z1&J0{e=ZhJn0q!OJW-t{UPy(-^=Ufsgt;hVCbG1y@svYqz~2C zdy!e4E;>Z?$;%4zN0&>(@re$I3-s>OQ8yC8fJ8^5u3b0vt9BkOMmjgX0MEY2#zS3k zU#*kt0h6mKCFf7>!`!Y(Uri5m0u8&<^PS+$TJ7S~bMj`L)dLud8W=oQpp*;pC)k?1 z&#W6pm=62&O90aA9uWAl5Q9xc=QD-cEy3<)> zWpbVW5SERO#J+*BMt7f*=WuV9k?(fMNAQyO>YrB&TR0)dgdibCK7^a6!T~3rM&=K6 z@FPY&o+Dk&r;NO6N9 zDQ3G?UR{T^HnQpiQzAlpl$3M~zm@B5$0e+tKk5lk=A)}2{D(ZZOpuQ3V~#q{9ew7G z@=wxSNf0wE$newyf>dZ3SL5o|A^EV@an-e8MPGn94~2k$<9e=ZRoh1P9)BDduahaz zP}|2QlQpeY5MBs<;n6=tryHmsjhOk<(DhuYcp3`wYLZ_Vn7XaJ08Ey3J3F_w?adt4 z<}2l^G`LD+oMuuf4TaFf&O@GgCg;O&0~a5qnXJsT*d*hrnz9-}UTyu4=Y+cT6DuhW zwg;wM9`_t5ZF{7p!D7!1(oVv<9(3Gkde!wjkEEzCKybjlxI35o7H#A%S=^tc9cg)o zt0J&qiW}Z4l@?Jm_Jnnowq5qt8k`)zHzv%$W<29+({X6UHYGkef&IqRoFm!pIoYvO zvGzKLb6~7ExqSKFjE~ozou5f)KQ-6ohvzRD4`Sby1A6q4zcZkm%|N9uGyoAczQ9} z)#h7%k1Xa(Y}Jgah7CMJ^PvW_y)o016jQ|l!S!Mngs6aPh~acdH1Dn2iRmnp zAB$l}NMH)T@?PKYe)Nb@;=OupS&>Ycie%kOPAjxw|ErKc>0Jp_g+GPyzwMMe?HW&zUM2MoEmlr$P+Qg9%gvxs>lZUSsKWKU9 zn)TGk+sV=J>Qay(daqgq0drn^&Mo=GZ=2!p&H5v)=ayO_xSKh5TmGz^SNYr9eA+Xo}Yh@o88XQT#36HuTgBoGz6H@#0 z+TX68I}PxY!?1vexnZ|Jp^Z}Z=;h|Ca}D$M)$7AAup@#B$k~8|Q)(=$ucEY+=EV1W zg%h8YhwCElgy_`6N)JuKfIU#ov72tzT=#cV5|schUoWfNWxcved``o&Q+Ekzp57vJ zt$~^lvYfXLkWnz1W81o5jKnPKkqYMm3DNQKoB57BR!wQg!KJHr5xZoXKpl_;#_()x zJz5n7Gy0X8w$ob4Z`__7i0OKzTL`jk&HVwozxY`=hmqyTW;ni^PKAbYNj8|`Vx=Z%x3;1goQfQM)JhtZ0A23B_eiX{h z%tm>?>5V*=YUDNj_O^3F*ZFI>K36n5ob`l0Nz{CWsB1eS1)#SHtK=Jcnsk1Jnvs_K z8}^F-E_a+4IXdCIechKb_0Pq#OtYK!`tCQx{k&!?FY~0;Em1ZrSH95j`z79Ot7j@{ ze0Hvy%MnaKpf*2@oV$G#5^i8atOO;1u6Tg8Tw?)mQcXaY+buZ2y&d8me=B^5jA z_08f(h`mU6a6+bb4dO|A>FN#?s)M6{xJddQdq}*+;htJC*H{tX)A^*TfrzhKV2T#H zh@Ze$jk&L>eFJ=oQnPj{L$4cL^|yH*M1rpt>tWbE3cEXV5{kxRD;Q$lD`mji#~kWO zcQ}@4f#0k#uvqZTUcV`nZ(3!JwVH{$2+1_@Fx`$F%2l??ZKE0RyV~>D#le+3DX{94 z%rYIy!*dyJFQB~hyHm)xJ;;rzJ3jdnYY9(OLR!@;X7(Z5CngOG20}A~WXlaRMh>y- z{C9(T0EdeQxiIqNer!KzeE_>xy=wYr(jlYe@myzG%sI%ialTn_XC<$_>u@KpsAwI% z#j501l^7fj%q#VQ`t1PwB23kSTVivDKN6kzak)JPmTW@$;Ujdokzu$Tm_ zn3?d8`+*fqjF#)P4+&Vy@joks>X&sySoajJ3$?13@}%YC*N2!0Jbh zh4jHHwC!?u@x^|A&zRIQgY#jsDA~$w-0^YVTd<{qzB6vYGQW%6GxbHn)!=w-Dov~S zTG#nuZOneIY&2!Zd&4PL#~7j0gwElk3MWaf+->Z&6saWk5ZdJ$5c8_20W)mD{bng} z$Xs@Wv4zudGZ|<8zIv;YnU56O08@{x!a3hn;EAI|t zzICVNmu!U1oa}&6>{V+X(0I|DYnJqwL$&B0vz|v1U1|Xg3$jqWmR~}a=h3Lkp7zVB zX}JoPCzjV&)u9Wu@3lRrBHI5@P6*=MA>vv7PCk)~9jM2%*vOac#5#AY^>0Z|n5ldA zF41;8dw=`A;Cgnz^{6oboR3!>5a0iNtQP4?`nC~UF1Q{+r@5vR1xdn;%XJ}UjG*-QfpR9_4n-mGGp@JRIEKWr{m>m zyELaW-Vj<4HT|dWKlBQr_kTIaqc2u@SsniY4dJOK|7Ax0;r{dA@G<{Q>HoKHy-{zZ z`?NL&1OmlVsupNs+3C>O@Q@KVP6EkA6-fdDNlD3)FJN?fxyMz6hp6~tpXov>1y6fp`v*N#_<5 z1+?ktVhuL+$fxay1K|T;A0>~ah?`*pMqGoW-hynfO4{hDGW2<_t)ADBtaE;6Bol*+?b(T;8kosClu2dI&W z+${W#$jPy3eYjp9Bl&?VyO`%x%kBtc-|n5Z(NhWN6Pz_Tk(CHm&&Q^&Kkv#a#G2>W(?`RjMsV;L)*F+4??mWN)OYNAgA7NPbFz4so)G?k9LyZ+rRy2>Q> zT94PfL@?wJwI;1Ehh zaNP=%CUpKaW&=3t(W9fI6QlW;Tbmmjo3F4ViC!MY+Se(C+MXp|^@m{zhz5~{`g#$F zEuP`VCUA`gmO|0f)02Xf0yge98h2b+qHTN*uJH7*6)N{!zgJ)3=>;4ohieBv&0kP? zLzj>2yherDFvk`sZbL|uzO-~PY7+I8SdVxq9%5qp&RN7>n z^U-0XM-)P&t2}+Nhu;$#9`Y*bBZpn@L_y6<`=iDqff*Ps@R-COa2c&{p3Rr?j!5~D z(~;IN&}&2EQ6chf3c-Cx-!$T!bervL_qWJJmG>Xt~ zzQy@_^e?sC`+`+yG*8wM(;g>%7Y)C7rKSm|?8{A>Hr&JbxHZ)PGcvNSb!{uPf=quQ zejuMhqJXSRaKGLN2>xx?$=Yb#HhMVZzG19eACvkgZ}mlyMZ7yb<48A;T`U|pMC$u^ z991hOlB1VhTSyZHm(POd9ed3*7w>B(QcC!?EVgbMIw=6hR9! z4UJ@*2PHjEMl?oXpNa;}t@u|2Bvy;z)8`$rouE*a)ROJfFR#2Y(hco*A=^e4+$x2D zVVW}9A4?oh_e0q1{$wOCDtS_DK+2ePt>P$y?!3JWiBjkbHLNWFS=69v_;CIS$Y>bf z+F2Dk@$mu~$yw}bm$Is%b@dAl?_ zPb`f&u*ytP!X7K7f7XUv&z_2#uWee<`i+T9bV=t`XZanbK=*tWXflX6h7GpR3+*W} zuBS^G{LD}q2{#!|H&ix$RE7s+ETPN&FisrLYdW`-rPGL0lVo(7A3LA@!Xqhq>vV0h zR&MpKp}=Ayub6*`XBJoY6-)@W(|f)w`kf2U|ETQT=5g8{M~#%EsF~Ok^|%Vonu%O{ z8uGiN7`%iUC)4@jv0phlExxiH|CkO{YX@5%dN{W0b$-CyLDsuzYgIg=pbM@R67-4h zE6>~z8k@`SOKdRzWIRRbd#jHk@d6%i2? z5vg!@XAu$slE@qbXbh&}t%Bc%mhJZD=H}Yk#wK!XsL*3Q33C~QwTzar#S+3}hoBGAe$aC)ucC4`jTj0sCC|FlKOJ?QM9(& z?eH2JmWp>hWT_|Gx$3z|cQ{8|DQGJAHK({eN47)Z%-Ro#f_6iW>7O7fUNWxu#h zOiF+JdN^b%08BL7lsOs9M!ddQvn_CP9W=Gu{Oj~;dAV<^D_Y67Rst$%eeTZ6u^2Ca zgZt$PX@gICf2G&`PYsW^QDqqwSK$0PubF0N;w@k%GjL{~@NUK)=eb(4d~$r-_=-js z-toaL^PMW^I7yy@Ok0Ws%2xcHNeoo|$}$3&6&Sw~oKlER(vDL~p`~yimET57R+QqW zFNqF$?bhY#B0j5A_rkGezXLAP8kUVP>K=U~Wz=5ZFR0$zW?cS^9eL%}n{t))iUoho zP&wpzOqAx){?FJuqb`=%2h0iIEmhZEd*uBtllAMUErMlaT^#Ox1 z!7p-Yv&4un$FfsmRgawWW`*b0VxG31ZT?`^smfUNhMaK0p_y22riv~`>&V1Sd)*)6 ze1jG^gD2S)L1}@%>Wa0h*r|gArLqN)`2mJ7M~!Z7l$L_g+nsz{L|9|r(_D*JViQ=0 z``iY)FnM@E1ioSVmF`#Y2?PFqU*dhbY!)PJV3rE+a#SVv#2|*99xY zF8K#n4+c(H`MMlQ9u64s;i&rYkc&gPAh4R(D5`;i^9fj68vMO(Cidi8hf*%AbtY|| zu<=h1Wn;bd(IGSD?Z*a~puPb8r=j|K8%(afCqYb2qzC1c6~tP6NUu_|bi7j4+efy~ zknv)S^U>Z6uJ*;=B4NxL`3pC5Lmp!_Jh#n>*!mZm$A^$8uSD)d&Yns;0RE`kNi*nN z*}Ir4BOgB+333k(N$_PB({U_%3PAUiM~iphXV8mF*z{u8eZBsd-r%E+P=4c>Z2uK@ zi2OXCPj;mdIx;Qi!d*(+_Y>5U+xq;FvRZ#G(Rp*cC~C4mHG^f?c`aT!qa=SzTH@6~ zZ)WgDHUE_V`xy!Kt!ml(YGS^n>&d+#@nf1+70M4Y=FRz+GGB8l3M|h50pqLsk5SNA zPUVDzC`Y_AAd|3Yt*j<2?j;mh%xu6%1z&PI4P_yN_csfc%F z+xfFkMgSQs(wX-lc~j{i)BmT%1-xup{Er!Uf0zvwUGrmUb$HWhOPN#89qbR!vnr&g zCyf1|E0j*~XkU;)T0IVKG^`<$5~P#%5ZbEq9PWv78w*mAmfi@cX0ugF2$?tBE$Iwf ze{}WwD*`g%jpx=^fB#lK*zQriNpO9Li~p<%JZKUI*Q1FcF?5-N{NZsbZ$3I+>@ug% z+|@I5(69v=XlHi?`E5plnF74cj69cfUij67U&l&62pjsZSOD^cd%-EDxJd+cAc&!K z`}*ek&9Oapzo)2eCEn*e@$jrx+yDAn{9I3Xg;6rip8ZmkG7FVc9-0viPch zduwNBHuo+h{uao8J594q`MhQ!Sk~IZHk&7alZNpY`uQCF>&`qrs!P9nYJK+lQ3wu! zGe>jd6#>U)04Y{6LdJ(GqAIk_V3vmkG;%Y1te)f2AW4iJa$NM>k}7ZW8Dln3Sb#JR<0Kv+;VL>?^ZqH z*e5c&^OP)6q<<6Jl1x(=#TPf`#I4XZamPoMoTg#1+=T6M7T>&HTSqk=(Ik8;`BSu7 z^$UneBM0?tt-xk~^H}|2c|(PbIivwUy)I`eljmVyZ7A-#p0H*h>+yErkhF(erW;#{cqd^lBgZ!r>wrgw&D^ zj>X`Hat9mj2T{{KJPyk|E6NEZ>Y&W_PkCq|AJBt13PjF|6mVKcP!kH zo8+U^KFkqRp$-98YTFe3TYPmJ5|W8$;BQu$e0c9%z})@~*X-ayv;#94Q+fbl=`) zZ8A=A{E4S|jW?69>0SnDkQ}dGY)RqePayD=LPlisyYn)g;KWtA@3tvFQmFjaV?@Nz zl;3G_gFQGBm(>9*=3wR*Y}XtccC{f8+ME63c%qm36`YNg5r)a#ua+8$5C3UcPtxc`eBg}kcEyy5&T=B{e*9$QwhUh# zU?U*tS`jcCNKsuE6|5jAn?MAI&7dc^`XY}mN@{Ez1!YV13xiYM#wHzF5gJ8L578E# zsW^TUTr-xIZUrkT1RLg6)LTP7!t)^fB5vmAiCzicDC?U7`Wnv~9~k;k<@O9l`@k!DMKDmr=wUKCpTWYT!~uyF z$v{KX&zp~uJIB_$)nLslvA6>;HIEyUm!IqUGnCB)%+SD0*H32sTGNU8&M3smG&}EJ zU90%-k=BTp5o1J==p_P@Zx;gmsrLZ*rBSQwjp8tBGG$Xva>6u`H`&cLw?5aDn0{xG zoL?w36sj{s^#pp)M#iU@+6S7)wQD20^|@Iu^`aG*-#x^4RF5F($1}oLe)Y9i>1(DB zaf5*MRAkHbYl1#6D59#$@n_KQTey<5@PHbJbLv$tqv?~?@Br7#qmsn(9%}I^!8RPQI}slm?&f%O*vKeeGH%FttE$*K zFHLMZePdVPZJ>LMBrgggEpzLGQdU>JF0(yyqRO#2KjdS4r_wB5{6ZOz@*CXlk1F2) zJ$qzV8l%X_sLVE_U5i8cL|8C?0cCN-NYUEF-9$r4z&A8ZYygjV8e8_1Ez{KD1EWd< z0?M>w+kU?6Bf?PEA|O+lWQ4OL<|WsF8L#fxN-|VOgzv`+52FBpe!Pk{t`2IDMX=ES zQC^&FS3`!^6$SJ;xPYc~xb7BcFCK;rT6>(?Gs_)=xTKr}sOgsUAgZPJ(UT zrxWrFx2k}s6yfhP?MgEZ$+}rVO*GNdt#4cD@~orLlkD8cSw|2soLpxc&74f zR)c4%YiVC&3tk{ zzRTNQn~2c3Q%J*<+_=6_8}x|C+pDfp{i)aZW4Fm>DymzIp7uIQ*r zDA_+FxqSzxuycxF*SXht=w#M=L3#Co#i}HWB=*h3+3eQU3M_xtSIfKdDsB68XO@`M z4OJ`ZgDv{dgHED`n|3?s)`Oq)QD46yjy3uvpe>%E`7AMx=}K(zc7*$HH=1O!Td3Y^L`0qMVNLiqX2TgbQadH;!~08- z%-TiW1CjUxi5qmN(cg^L-Qg4Y2Q$;xUoRNmY~WVhunj7oY^1p1MN?dQnHie(yJZfVlskb`j@s<$$Z@zqm3Q) zw>G0(e}B@X)CfN^o#rhPc6kDDBFrH+Pnja=2cVY$zPs2^5ph^nA(54+@quS}R#w(& zcvi^kggRKqIy0TWst3rv4U0^UC(Px$v`T-{QY2f3)Q@d1avWOMs;(QIXgw0$xI4Xo z%H`HA_^2UhUTA>L?OV=k&o+9=C;kBp8C6T^R+zlw=0_jMX=i5}FLGsN-{0&pl%qnH zH!xH!Fxp(&*eEQVEeYA`=})$bCM1aY&&HZ(JSLbN-*=16M>D`ua(QDlFxL1;j#6lOq-6ljz8;6W__ZexCH0;V>=zvGm0+ zM>0PaTB)jFq<#OMll)VX(Eh1}>JMh|eOmv#jeP2Hqd#n6LNl>dE^&!2M-_jz(JpcF~ z*NhMrQz?>fkt2Tfh)*+X7DNJPbytn|9|q1Pe@&U)7WS>ZtZpEp(Q*vY(`%`N@>uX*zD}Kf)=ebGb1AS99Z0`0>BS{-saI>4HS>OTM=3 zM@CC%78s^JBNsYay4Ea{WAyDrhI&!GhAsw;rC@h|SnxZN`)86`poCFVKBnXt9urlV8VRZsI-MZ11g(NMTl zqUNGPWlL^)syM=XSpoD5Y%pQnN)z3BM7~XGR|2r>Av7;F*nJgTk4&Y5`99Qnz*-Y= zV_p~+%RSNVoHgIre*TplBLu74nO4uViiQ9rtrxu!0aw{>4c&;6<=~*RM(7Lj;NrUc z>%&4+!U2&c-H$3|ywg(~{(y_3180nz^TnA>ib`-E{jzHGJXAC7iy^+r`nsyWzkhjA z%Mnjp=vvaR5iT}Vu5?N}t1VKgNWm%I%+VDa7>I)nY-s_0TYy77SN7ihVCCcG`pmWO z8%N$%!~1;UI5wVI#2E0s9p$%QEpKtN4JjL?n-szm0r{&3W>onjy`Z_xM)Gs6E z9uG^@l}%U5TnE14Dz8AM7(Ja?_7d?^(zcxgpI_w6Lh4*5$667fej`f$;pQtD3yBw) zmoGb6Uv5CbVR;9+J+HAL#vOrNuz=8JStD@z#V zwpA(PGAQdUB#cWX(v8m<;MQz1q5ZK&J4ZXWL;JH`9~pqy3Tz3y>5ZG8mYXk-{D;WT zEHDO+0JMu))4J7S!51y>Oy>%3`YQ4E~%F;|y0co*c8KOa4Omqs{e8wnbi9ktI-C5Z2NC5?uWKBO1|Drm7xR#{LcOVtmJ2BY|0k+F_|)xzwgHRALaERq81x-H+T!3c($D_hL(X&`a*@ zv2O4gN3;gLT{*`2-u<;j&MUkkrSpi%1^44avJDhr%3*hG4X;N|bcI{~!=gHcbBYh? zW!(a)D(L_~q@=Y{eyZh~DlOd``A)9(Y#nxVUpPZG;3xn@6Stnq25P&6;Ic?E9)1j| zI=jH{nVH}OmWbd4za&7PgoXTMq-0CN^`H-o$%lBJeCF2$$faY6cTu?DdCR=Wgf`B? zq9SelZEJIsG^Id6a6tR(ftcD^R~b-zwpHiDA6cx;x%cBE1gsDIM33}hNXQ7K)KSPe z|6uaC-URl@SN*rkg$%jDea%ZW_cdd)Zvzi*RJtUvp)0y+rQrFEBpdj-{^%gtx#tNL zaiLmj86%glOd3{R?Y@Rpzs{=Iuv5e7`Vg&$KZAK}j5l7}S5?)mR(DnLj~@}{gbuCF z1!k2rANZy{j7R&6ur6iuR_PLoMrKR|j4|B<13YYvZeHWAmn zQ_pnYDRAap!{t=Km3EG8z$pA^IpP_$)@8^R5RW|>5ANZ0$p0W=dWlkiXAkY0$XP)uf#WTU^N_*MPPjMrQ zw+15hI+7ca)|Uh3)P8rfTzImw;K0fVhkH7R{SB-Rq>LaVas+uz3tJYZ{VP+q$jepT z`8S30-wM{oNoUFZs*#N}qkl!__n+vZ|7#<_zMFy3JL1p`f9#4#>x;feQ{ATYf&Da>f3O{-}xq=-10#Jy_%2u ze(?o|aPLz#)Nk|XstG_yWDhs=D%T)2@Nb@W2Z}At^sZ3rIU@Mf2K_icM{Bn#bobY6bxT9exlH%F!mHPp2doafrFdEAZ4wmmI8`lqgR zS{uglr=|wvhpg&M_e)TEo9D60b`chf!0Y}kHPRB(3*4p&OQmpgV%^Z|!eB@|e=&DJx%G*NmA3n~VeviR9q=tS6<{i}hSbwqg#(FvS+`uOV^gB?OBJ}HqS z$VPsfn?~cCrnAt(QM*Zr?Fu0H{9Kd@ZN@VKa%@ZKo+(xA*+5<|Ner|p%?oJ+Xjd-P z{`>KMRp_)wkrH0=`V!ZlI|d3Xi*q|F{9HAP9MNq+yK1}+qJo`Aat$D41b}GDY8ame zkW>jn8&--5AtCK6*0eF19a93p9ru*I+hJjcI+<2FANiZV!2v>WW*jRO9C*`GTdNngh^xfa|*!X0b4t$*rB_0U|PgC0J>tU2Z z?i3Yr5u5kxGMlKEJr`Gqk6W+k=*}x3BY4^bp>G_Ck@3U|XjzN0xw=Ptc8H#|IPrie z3IjR-r*e%jjbd^WiOGA~E2g!7{b{=P-$~jxM7@J|WC}{av^C-*!49Q9IqH*MWrP^3 zwkFFm1#R`NYIY%p2jSTPWCa|6f?eXz3b0D9Pw>=!hMUbE$#EXn+(16_VRYvx!nMq` zXH`&wQ@~#-w=3w1+kEe?NzZ}(jOf8<-SRRFh*h{Sc=3(4u?b622jYN)FztDgA?T-H zXxGSVBmCmOEUvR5ys5E<&EEl9rQ`mgn1j8dyT;p>A=Mwl`XG8=`p)|}m!4sqVu{*&XDJK_Ty)U;5tlB!`{^6=@#&egL6Av{rk9$mYDqx!mX z)Ux(i5$UDOdQ@ zmHMa$iw>|1$T<&+q}~xT(74BQajC-X#JIR}e>k%lSD!{xNx!e#B|G#b-G}H5&$V1c z?g8n*Gn*2JS~3wyZ3UiGhb(Q6g&!e&#g1cYHF3Jtq>{d;kkqC={*{nFwfdp9>+9J* zk~U5RHfQF2-+XAbpQznfB09Rh>_zx%{Ym>Q+MFe|s}Oe#L0hG_iuU=Kha!)}joKqa zH;OTi?kX*H3kf0nK3Ci^^_7A2bu2{m4L~&lN?t8ly)NUprIf4Q4#8nePrO&GYhbxY4 z7f(LRORtGW2z{g~)V~k7^BjZ@fX|9C>Qj;@)dYvWO1g9fbif1UYFB#``trx-IwS=X zv*?ub*baXPW#T=~iFbAFxp;JRglPv~RiqXAo+&6sj(Pfew2|v0ya!CnM8qzvVwb zCvk|hy%7+@XCoLIF#*K7Dk>HsW&Gm08$y*1szcJw((sE%%4l8KK=7SyWgEXCqUPwv zl4&^3J~iR^u1uHm*2rqQc8c8?px=NC{uZ5h2` z9wp*YFABr$22833G>?QogcR7ts$PH*bf2`uvVf*gv`x@;;uD2h?y*gAca!am2@J!1 zVC++Y<_C9r&_+iM9%o2@bHj^!ne{a3W%X=%Brc@HlKlj%EbhfU{h6HRR>C( zMnnh<;}=)PQXggP>Iu(`vq3rJ@{ct+Zz!cb!x;~4fXTcGL;6(ZpNS&>0(s<>M4Cz> z3IrJ;(Dvc9mH$OdZkt$yM2`C3$mA0KD~Jc|@2D_ier@FjyTw&}X3^}9%k#Q`l?N(Wj-X3-se}t==yza|tg@)H zV{`Y|Ik#7v4Q7d62fz$h$maAR!UR=STm_v7ozZo{OY^c3p2DiArV>dUH<`;>xcUTr zmDt|mAeVhC;A#}-q^57ltJaejcDK!_#No!^~*;AMYqy#v-gj*2u%E$$_y5y7UUbP4*^ zEUsyVX!qxD0P z!<*E+c;QTuy>gmL#aV+hD^ZIdgJBi0f8qmw#DA zl)nC|UQsXS2iS6|Ri`==V%;stNS_jH)mCi@tB%m&N0SAxQLefv%+{-yuDTI~>kd|> zbe{P&s+f#q@%bHy`JW$%m3WQ7fO#vg(mc(d-^%`!ZQ5C+5IGT^Y3+-#6f4|*5}qV` z@(s`gU+i6D^;44%PbFe~uCijfxfOqV{7}8k)PN99 znfH;Bb!T_w_<(LvhDnWr-89{fWPJcf$mtvN04_Cr>vZN3DdQ!T5TvzJWRkL6*gLGGTftqEsW%h@EB#}LV8OwmkKjA{j0!L5 zHM#7yx0!74mTQ|AOkt%n4`S-s?5-|``f2z&%Q_`}RF~@=jeu>^3c|8TAH^!XSynEl|1TDH@Ge>GlM{kQ~6jZlVp9l*lK$~Ha$MmI*ANJ z>k8I&F4ulE@=%WZT(ff=fD|9z54d6az1SP?zF;#luR=%DCY|Q_d=0YIqtPl8)tyix zno9GFqte=r#1>c5acwd(K3;cesimg$Hsn~0)`){Q^7IQ(sD{Ve6jS>6H1$?gnLV3A z+{EMMYgc7gBn@Bj!>>+VVw_QnKp0Vi#sM=_Y<({^6;aDyQ{XYwQa=Bh!F)N2M&f05 z4A@P&daJtA6j;^8Y*bIj<9w9j?`{MoeD5#8|7$b1UKb}y=Ue$s+{o?_4 z*Gg^o4yNwCJno`(_PE`Y(sVjM_=L3V{JVpX($kDA5^+gs^6O(c2!CChn8rX8{{+W8f~8*0|<<%9j$lMJ%*h{eHUB`R-09}|e)mM##1dW;KkKxlUpmNVY#uiru0^&y-Y z{E|cWzWoA=nb)CTQk2x=)R|7Nd328nd0QL%c3ksBv*t zBwMSKc|)Z&CV+qRCO^VjQ}Pz_08?~l=H#VF;g?mW_B6_@%or;B>v4DL&)dZt@L?Tf zY#>rtqw(J3j!BF~o$1CN6WvDscI=0~(Nz3vK&PB6-s%GfjaBb~Q6-?J^)ue2v-~ld zt#519;(nB0#K4JFsd275xsIlDFK6*+y$ZqmYnL5G(V3HnLw0Ergg2hsAQ5vAQ}~~} zGd1z4Ycz93Vcpn`ab23AGYRgy!GCQX6vdJolf`}!34dFoavl?5ot>~!tDxwTrCK3!aw|Wpg_zLU(F;_jg zMoz{UYhW8aeOumHceS8{rq74$15!Dxw_IOkZq@6vA#+<=HEASyGhUpjvZ^mby_pTNBr{+W(<5p2IIZIjAL7u(#so=OfzJ{fI6$ky`zI zG}@^UkmjQzy`eWzMAFi<;m@n9T({U7`pTU;+@24|l2$9N7O{h!rW5F&=q3r1$j5|~ zW?Gq+ksiuxzdJ_On(Fh?@seB+JB)vA2i7C9(|>5V2RaE$QiFi!RiRG<0fJ8|UAu!L zj|7|C3QcqxVKx@=R?3qu4$cV0aNS=p{hIrqUoO%Egd%Xsh~xbph}gjI&Ri}B^JRm| z3Rb`+3zfe_e?9j;W`PJY;23m8agRDE#!ri~B?|!oK@;A5~3pw=v;9XpC8(LrM0cw8NSQtM`IY z>|CPEDmvlJ`4N@k-M>xH=Kc5h^8;^UUY$M-pJv{?RD&dqk_+HNbckwRjbdbE?-v3D z#L502{?Mg=-+vI8cD!|_{V3%QCB>b?uprxyd)3k+nov*zws&6xx=OjOAax zOQ$$ovF(A_tNUws4@MvIU+yQTvI{wkfX%8JFS{VZfMJ=b=#u=E%<%V>9f5CzF8}K# z3bhlsuu9jz+*s||v;W=AA^-dD{`jBnHTi#~xUU3Vtiuz_o7Eo@!*Pv?9yU-JK~C;jO3!St6TzH`ll5`l~WeP}O$$`4m~r zW^wD#)*(UL8_Q3v-Um(zpy3C_Zc`bz_}g|)C)XNUw;TGL3Mv2PLt9iFSUxECC8R;A zMRw|Z|7B%{vK|{C!e;CqUUdU}(@YQ5RONau5jw-Ax~3K2)po40^ZcyUK4q6i?vjRI z=670Q(+!eM&OeVUh&t~}50LoYxBP`({!`7F^t<#KPT))Tnp23Hs;$@C)srz)z30tsW#F2oib%Gf@7+3H z0LJEVXsytZ^`2c;`YSKRi;;syXsgf-nX;MxD1kCIXqv{Ft2;T#Fnd;IQZLDdh}Sb8 z@O0R7o%E!>tKQIC!OWx6v|RtHT*qaG3(K4%JA62Urc%5*T>s(-y5X#l0f=y|`H0;9 z?i0zZ>{-7Zh+Fiv*cs^1lPBH7T?C8S&5wR+^f1HKP-C-JpTH}kiT_25DU%xRr3o?_ zo?g4((6kCKZ1BBsn9Y-$hH%Zt|6#u@s4Yd$vdyr3ugY!Rld+V^Mx;Nh2 z08vnomR35XOIl>;l5S9H=jY0)l&PP{Hgp3?#_r)2<#L7-=f=MLAM4jb{@ ze?+*q`;mdKcT=D7#O|F&5>oxWi)LBM;Htkqz_AfH(~>jb;=neOQha*ydYy`&6m({D z0}Wy*+quzabKlRBP{n0o^VyGxpv`QmsJ~%S#Y`X@b|4#8AR8V(6*79fxG@JKKa<1z&5vgc5ueaXA1ou+ z7PwP7(5in!naNc(&ZnuY_&TA5fQ;!Y^=9}Gpcz|fXem&m-=%w=U}5u!^`;{&;> zZ%Os@?I*EF*a_vYrx&|>=Sxmjmv5^814r<5W=h~*LUW*KagO$8-;|?F3&*Kki!qU=><|1=aD1|3guPkCExa7+!nR$J$ac#Q`cJ!E5eu z$MQS~+&+QGBFma$8)`LvW>nO9Ipb8OXREF??wo@)4NN|Ild})rAw;PY&`z$9=v($s zoEZgR03x1+UsG_aOwA&xbw%sx3CKG9S zj#a12o&pZnQbopT9uys;hZ;Iiizr~04kjxyp` z?<1_$<{UFKu1=x^@(_B>4ruXh>rXCTCNu##$GG~X<@(*;%W9{AsKH)6S67LtLM?0& zytP6cytU!fB73wRSICdn@z8Q1q5znta`(=M_c>=BXf3j)RW0c2DY=G2Y|g6&Ya_9TQ#jq z&KJ~bCxC7Jry}8zi!RIUip`3gD>-v>%*h${%Y2v2puH>~A|oOAXPV@XFUmGeB$o)Gr#!s3&>$9Eo&AJoGp z(f(T2I)*ZoOn5P?bER{f^l{K!+CaFtu=9QvNyh@yP~aBeFNZAp+9TM??14~-au-&K zz$+1CaOU=Ul;vQ$rB*JDeM{K!PuUM_RAO2C2UmMlB2CI79#{6L@8|Pt>r6x7vNJUu z_tCAJa(P#=FXJhlYog!NX)D>~;s63`>rdTIUc81D_oGep=mNp%F2vYTk1``U>dpWEAJ5$pqUJIaKBrB?84zA7#h)CU;h3^NflML<>bpE~RpC z1kKj?Vys6MQf6Y#`|Hn0ayqL*Cg$^JfZ>N{`ERE*+bj!yrc+sqvFjDRqb?fdg=Rn_ zjM0m>&8V7*purVWtE{arsrmiq0xN*ez+}U{mT^cG%8%+~S`*JsS`hNO&Yq_zvSaH+ zUEDW2ZU25;t(5=tY8fxIWxsHykMr@Y5^mIxZDG~kXLOKzJ#mfz&~xZ4`e4bSXhHLY zDD5v|B?U-eEG*J5`rtY8?^C2!lx|S0^0Qj&`Ngg~{X#9GtV_RHO`65~Eo;kS(n;C> zN{vPa(eiShzIF90Nw)OhOmJ#~S!H>9a>8w(uOkiNRKi-Ic&%K3SRC&2kfcjY-w$_{ z=A9ETy#x_;pP$(NNg}D3btn&IuDFlORaHC$uW05uq}4OEA9;s|AZH_adJv({^%(o4 zLG6>g_fJdK719!xNv-K;_wRO>H-6x0KQV8Z%iTjc5BnE2bQ#Qab1tbOR2B@@SB2IW z8{D^ip~vaDP2F()1)OTOmsiC@Q#9eB@oj0`?gr%cECb4k2_wYh zM~%>+-dIv=fGcCJB@4Yi^>fe{EW|@qQHPR(s>1%r7d*G3$i~F8!qhV+3bF-$VWomO zZClmc6{y@?f|(8d#B5RM0?ld?iJsCb&J#OL+qSVWWc_Ddy;xnsBn7IhxcHoKPO?P* zrfjoqpqo(5YJ>qp{a&7S}i zB>kAuTFKA|Td#Hh8^f4Ik@Y*pofLgOixS&%!SQLmae7)w&H*d5g-tdUQi=+H*ZU=c=s89{97=hQE@Qs_+ zP}s$Crs(26OV9&wa6!KKKAl}HdYZTwJ{h%=KY{}W7TeAhyp#5pW@8W&mybQ?OK;?P zoUHz=!Gp6BeQ4MvtNI$MT}fcCdQwwA(@Bnz{rwEse&*%Qu(6^Tsfm(oMordB{SoZ} z?tXihToY}Kc!If^X<-dDvC+f|#h}IxMgu$pVG^V7sN!U6U+Psi;q&MWot5l}nj14E zBVZq>f~7O7(B9e~*kzNAP*ff3i27DouA9V`ZnA14EUmSvsV@emqe&!o z1UgAgz8$sZW$#oQX5%ia^$i;>CGuZNNbA_$q9aajYa{+7h!8?F2_hZ`P_r{6O z;62X4?2oyHwt`gV^suj5GWuYp3X=m!?}k-TRqUj#JQSs#3uSbOf@9F)ai8{&YFkse zj0oF_9{C+D8I!KzCyP=aqQ&|jBrFCCafZf+#R{w|TmbQV@)%EWc-$vb^~ z`?^ycw{-M9Z5Hq1$r>8 zmat~7eHK1Me08bC${G>becYyZkr1YdUP;BH7jwT}c)D^gHGB@GNA~HxXKk4G{gsdK z&{SFQ&0Wl#f{$#_r%WRo>BQm>)Ij?woz2-8xSkMPjUA7y#(FQE9)W!|jm|xdpvF}? zPgncs(n6jY{eWVT+Rb9v2YQ-{C)Bag=^ZGbGMAcb*Krq3rbst~3C=xc@Tl_LEm``E zvKn%jPdt#jPxfP#ZC4VzJJruOj9}iPc}>1_5aI6mc$mcSxM7EBl{Y^@kgO zw73ct@J(L7RbX^RR}Z|LM6q7JT4knOUr{j&)H7=Xqx48W~JQgKI1)D32vr!`F%#3&MAtHLC1CLJdZtEA$ z4mbnx1@oGam$t`ytYDxMP4uaD(~;)HKgN@ovS6a6y>eVFk%2yczd5JAeGc_b)j|*Y zR6n~5rKl}yYh5U=u~NsSTR(>TaoXhW+pX;@jSN%C#Hcr(vOR9y%EURXz@^Gv{0 zUXm{LYZpab*#&CvXO!oAgkd|@vnGl9CUf0l7CvzL)Zyuw)}~Tu)ZVy#T079dm`Dct z8n#$G8~3q`_eLAlg(}LP;H!Ch8*xfxx^kR$hA=9~!fk)9TNIZ7Mtk)QuZ%O>eRg6gUa# zvA(n=+_JdJIW12we^9fnbEmBwotFOM(FckM9=qNXZEd8o_LjklwYDP0&>UfsXFg#^0~0=pc!cF75KPHaI(sjVci}Lv<-KSxuFzta|{L zZnov5C|=YsZbl!Ql$^6s#ipl)nUgR*%;E2zoVnOL$tGl~ahW&<>vXMG9=<;VE(%eW z4)Y5$;cz`oJ<*AnH&gGZjpye4abH+xql-MAZ?QY_z8EHzih^75ZR#92x#R>!P`QX#x^#%9cgB`h0RM_)} zeG*sOt=yIlo>wJ@~`fN{_a;W2Km2fY|)DkiLCxjqJmy}{`T8{ za*_f|A6|d#{x=0DdgVRL{~vbrw$FKjJ{kITV0iG$ak8}P5huIjO;1LGz}*jdxYz%) zDDK>O{q5&}_`5qF?uj};UmoDzFT*|fSKRx1kdOBu{~~(mMGS1df26^`>z*=?{MXTd zqW$~*-?#sp9h+*#9^CnHbiD}=Bnb`0pe4XSeZp9k_+-p6x_z4}$hQtsBa%j$&=T+$ z$Unu9d{_NYVb_I)wJJE)G~>17^{EMG^~8V9{F4xUgZKmm*V&o9o4?|{3fJzermKHh zGMlaNeJq8~8bk6a#(hKzeY3pkJ5w_0`g<`TM?G{(=D#mpZr~Qac8y-I)0VOUGwLtS`viGD+N%M{O3p? zz*v8PLq)Hztx-z^h@M{@&d<*;*Vp&#{5nMcJNi9uwi-<(o@gu)aJ^C9nI(Ju;pTjF zxhI-hLLEgd=5w;a8R&hoF}mD(y*g?_Ef%YC6tAu|_}G|?Ga+ZiLe%FZ)FQBx)o_yo zsAUI*yl8W%g;>#L&d4gM7#3(Vt{K;?d5ocLmNk(hE;v&4j3P1aLJM4R>SXFXm%UF> zT5~UsK@BCcyRz;Jmt%rYXBOnBJ^}~#sgG{^Pde6$QUNxDO^ot&DpUUgT%sPexr()z z=Qw{k!BpG8d499CG6MRQFkg3Cq*`iw>+ri0=jZVwpniSpiKfAcHF?^%D80q+;`b=+ zv+x@NmObes1%aA*WqO9N9y$dkFO{z7zMtPd%-b%E|085d&t68dkVfi+a9k_8q9M$%oKaaZ7G$GdXPw?^7$$ z-bEC&&U8Rv%zXR3qI24=opxvcvx_6H8J}tOSt)NC%;YusO3NwE-0(7q_73&_U%w+7&|wZc{Gs!LsO;wIZ$-9yO15Ya7SsPQXd8ZtRewCcszI?@G;UPtNhy zBr5^58K@xUysCL73WqH6hEL*=`{dn@buar5I)Gu&M&=7zfeq~2nlYc~jm6-?O)9L){G8kj0UA9KO=|{=!L^DB zKBYYBL7wB^l=%3;#ZxpXognGx)7#Qxs^;J6tc^BYxsM;3!C>x$Z0-dQbY_3gABSyu z_wL&)^fWs1IPztZpPsi{8I|X>qyf`Ye4Z~+ZHB=Q0=j2KC|Jr;SHq{{TXL$31`<}U zR$<;BD&e^v>8}Hzzat!`XrV@h-K_2`mKy=={av|h>zhRKpslhO6Voz1)K}I6U}uKI zoYft_mPNq~b909PW7XzXY|^;3&8I0RYa%AYh7FQ5j$a|(BfHp_Ubm@X1O8o8ODnS@ z5QEmjtC;3i*W2!BLD7q?mGcFP+q0Fk+E8m57lno^BvWOeU|9fBy_ny6l7^>|`Ofwg zlMnCSKuVcrSHSQ*MO>uGO3C|8s`XNueL7m7b<*$7Cc`5r2#sSMdgr3R!*zIT`trTR z+ThM7S1wVZp`XN2eAant8swuCBlUL8rC>|lL#FAPQymZm#G7gS3VCwr!3s-i$GbU;w9jxqKHdFGX!WElIWJU;aEw{Opb zvWdw)eR^Ct@)p*!oRXGiMjp3;FGigpMdWGr2dc{X;A~iCsSSbd0j%xfjx~8=ZmPOm zgwHl_-#x(ILgfK<)BsL@an;OjT@9c7iF7s=U%#U0TQF?e)_rsOOOG(7vc0N^cFjBH z*jOo@I2ZPQFYlKF$D-EAmTJv%Yrzo?v^wng4pRg;XnDAKq%KpIoP{Gh5Iwq@xv=>L z#0L2)e~c)B?kj7tE2jj@^31We8gzjuTgJQ6pV~KjAS5k$@kcv{4pWlNEBUUx=;_i! zDcSi+_1jN0p`X*03abL_{ikey@}h_MWwUR~e0a-m9ExrQPf8Jn&_^8c^^{xtixesSIl z*MFPYA*p>eOQ*zm&)gW?5+C1P5I4z)T$Dlvy)rR8q9%)F@B8=h-!Bwt2{q^!=#gLT z-wN!cl@?iVGPz?i_7QA}#nsj3({_09t^WLW{9&F}(R!!M9Wyt|E$vvd^WLt)F01ju z%xdvlayEaHuSb60&?S!-Cu6BDMqmW=0|PAV3+py@X%U|8c8z>q0+I3MLvup`JN5dr z)w|*LU&W%%pfjcC>`l9{5`o~IJc{+vXp*?Kf_F;2$_)Y6mkZH?PLg2QesnFw5ruau z-Riup4n;;TUoQk z&tgHA>?0x5hOlnM-Zsl-T^T@9g9H?0%(~3i1Btqrf?8U*TzqNi4A*)0tr|xJDKb*F zi>_bk+syW4-xmk-k7!!pDPq^0FVNA_c8T@FHIq|+Z9KcRNkv;F)d?jJZ73g3RMe=l z(&!?thEHAO#Zv2Jm7#2p#8;Nb z_z?!FwegLL;4eOyMJIq`N@y`uSITT{M>77)W)K-|psH5d7tQek& z!kFY--eD7nJqY^PO7{@metks+*He}W5R^rULh|?;IgcN-jqK1)Y{=Re{Z$-LNGg0n z#Yg4GgW2rhdvAGH^HJ4H4Dh4AQU)ohfmRp$pZL;}?DDdY(!6rpU2lZNuWS#6lA&#De z$4QAmAO&Q!LbL~T9|LliVc%VDsl`%JdGYgv){PwJ)N*HgGM4Xc0*q~Lo^EC#J`QYx z$1-Lt-4qtsOcbUzob-3d9Tk0q8#GiY!SzaW$IN*MZ@#Yey@{0ksd-D#3OLr}+!f!; zY_&lXFb;e1rmi=t-#N#q!NHq;etJ9Q>cHumjZWj|Iw5!i9KB-NbG-F)1~D-tRx4|s zg0VElR7?>%xPLW`VFDFU%D%Lgeyh8=c}f_g@b2=9?ejzYfrj*;?NIag@GluHSzF|^zm1ci z+CJIpP5k{J6r$#P#|`d`le$+tn)LI z3*Z_kh?e-+9Ksd1!q|k#OZ7uw@h5&`;=+dZnTcb-SE|1n)YY+-ght}Q$YTEUY?a3O zLf60AqPT!k4YW*^t^BY|6rq*}>0L0KuglpX2z;JRY1Lo3ay^;iFV~+HKu=z&lIX4{ z?AO0*FDkCE`dloN>YF;(TNxA=7vpub$q8|wx92+NqTjk=;&u;>q2rFy zk%ML7AcB z$Z37XRefy?lJxuj$x!d=&U~GvIF4Xp;ru}*XMj{TUwA09i|-hzstxz^JDfOd8$DI5 zbhZ=wiVmZHh04ujRu0v4DP>|>f4=*8Y6m>euDZJFr2MVpMQPKbmO z{3tqmV??~9LjZ80$`^5zXP4O!=sqTIicQPF;@EPRZuAP*QhE$-=M6aL3WAN`_3#G*;+jy2{er%HwgU1}U7^NBkoZ;rR!JkD& zm#g9IjO?RTr8|Xwcc&d^(-E6~PTr+49J3EJ#$7+0hlG8p)sMoDIqFd29W<4=KEY(% zOKcB_PZV?%PADO#tlS*A@wtci!$`2dJ!pRE(~{2C;5RDZ6*|PHzja)Qm66vAXxOKI z$02zYfg`(5##oR$4C<4Fhg$D~#v;q-;ioxS$|?pW(ZmtZ_90qYVI6Vw?ukalM{CN) zE(udVu7L1C43tp8@9&5xt|a8fN~uMoE$NSK5&|AzSrZnz1y_qhbl)t5_jw4g{RvTn zsYMi|hZ2=Y9^dctMpCYtj3-(9F>Przw^MSW5&Pg$509nA^yf1z-1=-cs~ z=){sn3?(`~jh2S9l2v*fu|@XXf~0PONOp^cU2JrpT;r)@TCkLG;VJ9G{F`pqdq1p? z-?@Mf#^YrdKQ^{n4+%}y&5(gW)IGCK7CPm`${+d~zY};SArP?Sh5YD!W#DFZ#^$qp z@!)h$0`&`4wpALKBc22@zb<-pxokw5VpM6ufSC!oJeF7pd`%H>o$2p*ow2WzW}ABv zw_Ug_7+(EB!VhbJ|CC)Eym65lKVQDuL>AS1*A^ z%u}}sND+mS@MFc`f3uvJ?jdO%# zzhgMgmE<(}xDTzix*v8~SQ{GswJ@V(GPD)h-6yqk4|w?h498cO1TunBO4PH$#H>|9 z6Db2jnJ>jG)i1u(y}Jta{gmslp%T3L(-Ph^Ud6KQc@F58a`!9#8XWukDYhZqEH+q` zkW=_WRmu#OneJiVT17nct!^~b;JDcVfksoBj)xLY#hxq+8j@^Mv_%K|#+PTU3=Kb2 zsVSzTzIWDmKC7-v4oyh!(a}i6xiX zI@>YM;C@YCO8RI%PyXPk^;Ew%FmP_tj6$;Xy=d|0VL51j_>{So zlheep@nK6O-~KtYPbdlaf~=JNJ?&x3R<=C9>11rTMRBO|ra@?pzZH;BJ=Z~zjRy68 zaq+<9$b1`l*|gP0)CXN=pfaG?ZNz(uznZgMqGxbT#GzbhmkStFR&vz)mgr;;867k4 zntj9CrN}YOA4e#HOK)h(?sbIU8xdqjEW1HtgQ4E0S(Z-Y1Z}X7bkNF^Y`3y-Z^o^# z(B6QCeDShb-;W7P+X+Pq6&KxGS5%bS!}h|q>Is1@$PSI88wsTH)I?Qm+;u9oRln`v zAHif;EOjr*1x0a0F~l@ zi!kmys-JL)bV*C!Od=L4==2b%8P?QPt&&dFA2~!EhHwiQufIHJT9EKCj)@~O`DMtV zniigYvbSbBM5w!}mh1y#S%?-USwocG?^9ZFsV25#uTAb}Df2n#Q0v0sDQmDEWjAW z_|L?q9Tx z-8g$FeXHJhjq2_#&c-Up?aHpDVt+|;;U`7n?&c)H_N#YEGg+LKUzul;O@vGb6H#?u zWnk{b1v%(ko=jCJDpWep#L9>9KN^aIn<+&vGdG>6h zio7x{OCh0araEyxwgLw;&d~)-n1Fy_W4hNLChcB0MMP=lP56QGw1L=q(OPkSZfx%T zeAB{~$(P(LQdh!rfmzRE6RYcCXk+CE-HjuL(9SyGPv znf{h_+t+TMLE>So{YBkxD?kj>t(567{nBu+Y`wtakw%@OS;grO=@Mgh%;th$A1?JA zEk*c^p)kSjZVmVWUiO)VMv2u|4D!-UYL%B~q+7<0FsS!@IwC>j#;DAKUmL#v^J;nX zIB2M-sF`tko!^B_u%2`nTSKk6)Ux(@SyWsXTd0{;I$vY)S73Z59MEAg^Mf^6rfwPe z=Etf_4F%$_H!gr-+Awdw>>QV+xblJDgmb*U0uA7jc%nVu;G(1B;4|2=1dpn5GFva529Q&K#{~78yq9@JwiJd_?}?Bs-JBUYa5|pN zKNPvo$F1zVZ}k8p3P|FpT2NR}T=?EM2_Poq_iL)7F_{8?365NVz-AU&L%}V-sIYLN zDd%@g-s$tiknJ;t%-cGW>3TdGO-U8k8&^sNnqr&GvP(fiw5n2b^nT^)OIe&bJA%86Vw>HucfQ zP!ieo5+(EBmQP?X;1-EX+C1k#xrEoL{iLcj^UBgb?tfVT~O6jU?C|^{F}^fM>RRdC;-Jy;6>(wZ-I>T7^-knH&^jr1x-(4QZ~{%!rD2OwA!k^iK@b-8w(QYh27|+OVyCj>>qsC6W=* zLR=q*+0MmH>A9z-^vUwoJK)hFy*s@_1-+3g8zDCt*V+IUGcn#P#X~b_n`KqJgnFBL z!*grM>*P|UrCmLA`<;7#hVsVAL#AAESlq&XJ2OmvnC}a~H}NCR+1YwVX?Mx;Op?0a zWmt-vBm+Ins_8#@`0mc=&wMv49;3h9?(7Njf2?Cg#nNN#b4b5QEIxz1ePY~9x_ zKA}8@CCh*pBsJ@p;GrdkA%9~*R}q$ZFml>Jq;j$DX7xg+SZ5QEy2=85kazK84o^KV zEyX==%pozMi@NsLhsT_ON1g+dwrF=1<#j!8WQ-%YRsx|2YAI~&lDIG#o}cX7>}jW{ z4LE%S?-dwORP?d^T_{@wp*59uM`u<~xxg+^LSOf3~ ze=RA`I7CS|H-_|9v!005o({jn;bK{?bA=DY&5WuehG_#8-zQ%yQfLUuSdtQ}q=jB9 z1rNnROOme^+Vj{ z$vuyG3}cRcex;0WkSGg$lC-o6t+9){`9kv37F%UNo#_tT^YD_tYp zQRGo~W$WI`895_%-WT27vlF*oThH;R@XB$X@#$t3M%eyg^^-FE(Y$XUE2BM(wU_#! zFHYF9-(bf0GuQ#h-%9+@`e<@w7928sd} zc)KBH81pTReNL{baRt=Fq0CeEDOojNe)iq(|3(|U-FS`3Q=){6*pwOx6vIO0jDID% z{M7cCHm&HbzTmJQ5H}txPXG_LdTnCt3Qum%t3W_*O1nkd$6fvUg$`4rL@=TZ4~C+` zZ&d_o!#$I3Ckpay+KMp4sXZ>({UA~}y$gjOAkc{$hz+Kt`@&wH77pvbNz9cyVp?7L z5%FWa>q{^qYHp*M7z=;&OJ>H6w8>%Lb|xYIs7UL@T-+c5nOSfu{@uNQ`};W1lcgulB+&Qa9(0v>52apT zx;g~ejkV4na7>;$K51H{XieH}It)&q9)JRyexqzel}K8*LzZrXu1k;fEjnmW&H94n z-72l_NEVX}BSeT`%deX(`)>}9#CKOSisQ>ROF115QSnzMTf#XUY76jG0w_k*(P>(L z*_HqH)#zc&zHG>s)>d9V9xw34S;p@<&o5XZEi~lRRMgZ|z&k2n2iQt&bN_0;=Sv8B z!}c+}`4-pX$z4=hZN|-g-1QGxfj_;EYvQQ-%N!Ry7MuK!Cw~nY)LvaV3OVAQETNZo z(`p|$E>Ji4gT0)rR)$ANi63HpQx~cQ2)GFR_r<66fKti;$(jV#9~4unVF; zb0nw4Zt-R7!B_G-3+i1v$l09IH*v3P%m2^>+?K1Kj<=$2a*wuAK2o*jP-%x4!wkbv zhY(;aIqQw|(Ru4T2FH4jzp#-<$af)dJX~?9=kKy*avOlqhc2qM1jK1pyXf(EE0#>M zbk;H@bnfu8&8wPbCSDqrF*$1#?5XxWnAn!MMwy{f)QJaPPI2o_$r<_bc>S|8}DL0tKQRfuI;99F1^tw9WgINmZ@B8!a( zdsxGFz1JnKi14M$Qd{0?No5O4<~hE=$8qDAQPgE#2SOw5s(+q1w~-d}CwM|7osA_USw&%H3BWzE00iam(#>G&fZBR3e$()*6<*-3N%X|s@= z2xbp>jMhqs@B{wV=17x`0hykHx6?;R* zNmHLXT(M|)Nq_us=&Ae3)6-twl>K&XtlY7wiQTsWCHUuB>nO}5n3U5F7*N}udJ}~bD+}#{opQyf?bGG zF`Hd>3ahGRaQ?oN(K^pU*k!=h2ICfox-`#GM%!eo@ytL2T0RVog&V{E7=-Ua_9KlS7(pMg%=IgM%5hc!X1#8fwMAYmoCf|=;tT=a zcq(9W|IP=}FIa(T7I`&zN&QD zkp8O$oOau?W=3`j2KlxZ)ZuBNAffiy$X+cPbquDx@lL`YH_Ov(U1SPJj;6GUmsR@C zV><#&E_jTk++h`+pw9G?IuItnAl};RT!(PNv+js`1CbLopIrq5fGqx%(4FjbB*sBQ&H!C}2{sj=@s5Gb1p|I0<6iXz4&l}1b{Y4oEWKKDr*gG&y0#gCMX)^a zSY#6)V?Aa4LwQ{S>8`0TtXsy|=8P&+62e5eu~wpBd4-#mvxNKa`sitn^m;Hpkeg}m z9#>Th`~{%A3g4Ab-Z|;Hy^f&|3zO3^i^X{HNZO26`cCX|;bCl{oK}$ESR<_@i(Hm} zAE!KiHpWK`f=@w9h7Q|k?i~2-@3f{6cbc({seS8Ye|AN#07wQJA|Nn?%`+p3;{lB#1(X0Xm`sziwQAZmwKTWVf z^bf~uKVm4qksP6R1>to30Oov9y^#k=Y7)q&m)%3vFy|3T+Y1=uvzfeo{H}gF5G0h9 zq`U|=4!k)HJUt{-QTRwgY3~JOg&w;>J+`bnTZkkfkp8(ZD{k+4#&TDfF}5i! z&;n!4=?k-8NCwlsVwv$)p|MtIo7(?}%KNZR{TH${re0eUH6&3lQP)6ndxt4kM0G5L zgI044vrkgJ=~#s0v$^`ph_n>B9`4-Ql*o@3fiP*u5Gi$CUsL{8iJuYw^M^#Q`)N`z zFvm8zL1^;%DZ5z0sF=gQ8b&qoMS%#Uqh&P*r0M$`5}!YO5G1Lc^0=axej;l)XM3QN z_=k?PSt=Cj{h~CrC#w(wriJ*)n@$@PL6!3Uo}}r+-+Os*bl|ne?Y#c{qY!Sve8NQ` zzeP#9g4DZvpP75~3HVEuTt*!9i2wKm$#BNrWMkY95#c6#EXo-7O`8pr=|k`J)2XAV z;(R;8c|sH>tDP@b4!NCDeTvixLeEZEUStZ2ljt4d6HmBg6sF)*VxpO;jM4&V6QMN= z;uQdVI)Pt6qi33eN~;k7BRz>}wH1yYSnwQ;{(6B>pa442Us~oC{J8))5^?i>JSs@< zX!;!x`hT-jtkW=(Ef!4nd$FF%K4H>#?4x>UR*q%Y7fkZFrYF8@kI^&%boSvsX4bjV zpG6r3w)(0P+o@jJppg7_O%SQQtWGVl-R`UhK!g$aps^a;x}P3=U4QwSTE|cGjO!m) z?vwxznaWV!WnG*o-&Nn;Gx%A_A?)VmwPyrhJg)(f&)n*KZ z>-O^fWzw(&Tvih;@xvTW(@}ZX~EJSM=Us{d+BPgbp2*$JyW3ese5bsTPP7vyj}#&O^pn(=EEM#F7)x_xC7e@o)v zm*W>)iB)S?I|M&){K)ekNU@~q1yGZW)wDIuT>NbF@;AQv0-3rk<==$=7h$zU$0dZO zLtq}1FZl-g3dxP&K~REq2~-A8mB|&LrE3nPeuV1(r6I3Mw*u;E1d5 zaSb1Tj!b)4LH%6uE|7mjCRSDtyDJ{Y__K{<0<%xHyB;;8gWOS&ERj}thv8Qyt0?cz zXP-VL>wn)MrhbqlB-&zt=!@b5Nj$2Oh2oYiY8`v6iMocrmZndU?dK6`u3?~l=C&q4 zy6;0vb=v*{GC9p`1z7Ug$7%eULw(Y0#&WEI`N>1FXT@{?IrCmrg?yo0zSF;GhxF1i ztW;~V{(Kj2Tk|@3dN7Ao?N;H=d6U3QU~_-N{NQu z0e2+ccsGU3e6gDF{pV$~tELHUGXw26za7Fk--_5aQDr776g3+L$kZl4sM&U3&{_|J%4la}ap0G<(wFe)3N~*=nt;9$bUzk^~(wuiorKv)F9~ zHldie0g;7Rcqu!1>`BWCUla$*DxkM*b5MS}+*BWekYqBP+9|A@<}(C|Wnnjt>Ly0O zX|scL{r!T|gS>cZ6MbVi=f}dbBl9xBg*ed4-quDR=d0=rav-&atcD-KK(o;=i<&8R z$sOFxw6r)9Sf3)`i%4(cCr4nLI9UL=c{7PJkr=dI2rnjE+e@^a zB}9Zx$>?y0B}v;2ZYv?eTTb=GTejn42Lt+?_A(DU=@)4B3OG$tEt zdF6eh%s=y1=jZY^9T;Ws0BI4=V=A;&gvI`wEWD7jEMCgc^ZE=#;A&bL&FjIra1|ON z>i75SzoY`TK=$m1w%>MdFVD6B7`FSyJH*V2vV;nOrv>~2<>b#*fZMPjxUXZ!9^GnHr2K*w9Bi#49l5(Pqu4psk1U{L5X%fl^IDjK_@#q#Xvec|k-%{;SbDrk(=G$|H6FEo5E zTSTL<3h*~3JNU|^W+ui;?SYGyp#}Ic(kB45IzP1k@soBb`V#Ta#C!sK~N=1_S z5(VJ>Mq523upYb8*xwgUtJDKGVS(0kmuN)DT_%bYXlqa0EGw+W-|^O!3FUR%ff@*-8I+P!~> z7ZU?O!62y)f(W)Wl4h_#X8xW0{KUMJssdp6+OVk6oL*R{VJ)da>$1UBM?Tfn)Zvca zwk-LM_Ef_Y5K)DAkd~!NXpJ#|NwA;7I_WF93%%_%ubw%t`vB_g#GZ?C{YhF@zr(Qb zkzLaaM33|P949aeAcYVklK%?@DKh-}Ok=VJl>(@?Zst*c=cx{{1;R)-Nn#xf0O1tOBE8z8YT^d7-yy zZ$R<>XCL6c1x(`R=)?P7Cti;QiifVw}SEz;{ zN$uzDJCofjiU*Diz-Ql!XQe=(z7Q2}X~Wpz1B|0Gep)o@AKZ{Qy~P#qg{e*zgftZ9 zwufi=T>g*N&OMyz{{Q3MLWPn;%OQuH=X{DEIV4jyA!nhH^D&v`G^;4(d_K;3Hqwe> zxXC$Z79+=niaApa$sxXJrz!s6IITdN%xz_zRBQ;kxu7WPMdtg6ntR&sFQ@jAStm zd`6zDca+lVcqmmP|6|D~WIW6_wFE*dUI`xo66U6EJ}A?+m+KGaBJ|1*1XoYJne6T_ zUmIrVhY!PkmGzu0^IIGHFAoyoI{v)ZzoBBms+yn=u9qC#f0;8T| z#8TX18s`^T-KXg0&vym1cQ2ZPO>u$L1KRS8(G<x`U$ z0m(tyG}x^AHd{~0tC=$~M$NufJ(q*f#Rd2n463V%rKDwYWcmV7Ny&66vTyuMcvNp(plM2YZRl=CIGMms)};1kyDT zvch}#RR?K-t}_tjmDM&W^EQj0zqR#jf^(<#kRM2o$4<+$6K%Th7nAY1!H+|rq%0=B z5|pPDlJa8M-!3Dt8}qm23XecEKYrszT)9Jr#`d#W#GfKN3GhBBWv#V__&<}6(7YRo zTfQ+eDT#m<%=Bdk&^@M4GyhkC@ajsyOux~12Y$E*3(LL4k0(B?6u%3QZ%YoQ-!!)C zKRa?koyGTEz3z@id){dx3BYX+d_m+Fr@TOusgm+H&o8sEy^1CuT)P9pi-~+IF3)(= zZ;QJhTBwAq7mF2R5s3+3&a}kzF_+ucOPg^s>4~KR@(vGZk~lz zVPz%Brq3zccARfZx+V&~3Bafem`UsR{jh5852c?@g`F(=i^LJQO^@mCDOhf|XkE^k zsJQXbEpe^h{w5t+H;7pbF)WROLI=O=%u@ScOTGhxwoZbm8DR)(D>WBzlvHHe>0Jdr zIZWCDAeR|)%sTj($lo5`8Y% zf13x=C`exdm4~XPF>>;qjgWRmP}O$0_V$o<+_xqJZG`7Mbz6-+lk{jmE>h}zO3zc; zkF%}W@p|6n5kkFDKcXzOgp&^ngp;LM9I~7yL(_%XLk;gB4SXr6h!-bmYG%8YFJJPf zc3`LQw-h$9$)E7RrX37|`JTx^e#Z-aifT!=CHeDNA- zJs_++-UH5T%SO88z4$Jfp0#)FLvdgHZ;b@iI3U!6&bbsof6M$?=*iyU#(4GFjVmJp zW8)R>ou&s!TUkG}Lkk#Wi-uF4M$u*yc`&^7+Ik3{(w)T=1l_>*?J3sQI1c~k{z!A9 z+rWSVK6Q~=;p=cgOGS=V)uO^HNKH1~efm(^_Q^5(4g_%);%152stpVBp0**jr*m~3 zZh2+4KLr9h$gtlA;?!2BwwIj`C5m{5=@fhJ8`*7dKp?f3$Mg`jE6e6`Yx@@wbutXF z!M6ujN%Y>3pM=>&(~_@BI|!2V3}bDZ$5BZq55H-NK0=isbfa=b%xAuBwRh|T=81LX`IE+DD00pn_rS5lYqk{_6Sg!$uF-aJJEQJ=tX~G)H*GzZvHPZh2{|t%&H<+e!}`D zn}w|taAJz_>xT;n0|-%G6ddwd+D3E8(rSdr&3nT<6nJ&x2TW&dZ}AC%R0jr67(QLV z&3)94g@%M;PvLNj7IV}YxA}+G*|Hb3O5PJnJmT!8va{ynKNIlOZG@qKh{&r-KNsEV z^%l7n%#K;DlI(lo9dEBtl@?V1E;Q0xO%;>ewZT?jhZ}CoD*6qsY6Rt7>7I6=EJ;ot zEXXzOc75{mO6Z0`S$2Uw%xNlejjw)6=W15iH+?Qv-}FE`7UxeWiGXsE60v9?-<1j4 z11e_ZMc76-V*qJFb>L{}4&$e4{|4Plifx^`3aHF?*|Rym_m+Qguj7}s(>`cs&Ln1y zG9tz@R?e6nD+ArMijqG>@t;H$=bf9o)6_zkWM~4tE5ee5$Gu&PbkH1kV=t=9(JVUP z?_iI_SvWW-J}}lZ>9t};+ja@(t5z~GHG#JHj?&JsgeBz9K_jzcFXv#n-A*e@x$&tU z@c~y<|50M5*!AGRfD|B-^iN9$ZNKBtetE9`OVd^?{L1=;RMP3xPtqB`(nF?}N1E|y zbYu3w6u-ALLG|&Ke0^XSJ7?bGw^=|Uv+qA1*DzRkjfRTh{dr?37TFvo+;m6J(~-5G zqSN$f7T7BSv}lR@M6Vjmn8iKgU4R|l`;sC3L8i2=E7qmxQI)OEF~4&{IBSL}sRvXVOg=yd^Kjt(jkLRhSaKz=bH!EX7DJN@6}^@2 zL{E5gb8(pU{bfISFOIn4YBY(r%NLfwoSplV4O~(%}mb5+J{MdYa@%@jnk#;q1qbuasqBy-oXl`yWZ`?b$CwbS3Iv*y`>LyO+uuv zrAH0;^Z^XQS2~s91a(CXScl%?MW@HBg`I`89~qm8`GzSYww#FAt1<500O2mTUIV~9kGBcFx| z7wb4ly3em6+uqSg=k3QVO<2Qd5*!Skc%_qr+#yoE?P7K?-E`V{Z>{ifRa$O>5`Idx z5+xxe72O%87LC2Bc)G7*TO{B+PqS=-&;tnPS@SJVPz=RM(X;lvsGtre8dpRf7Eu5n zBzccoC0{m_c0eFf2tZz~ZB8i!aClEMCn-w$;UzA}UtMKH*7x|7NIf1;0k<5aAscb} zD*#EIWinLZl5bLZ%J82WkxLe$9DZP#-ZFWwS@k9qSX{g1eUI~s^xiBAP9jLeV)f3m zF@q}ZvJ{E?$w(^ZK!rIODOk~+Cdli4jU|tPmCp|RpLid3BJ^0w1CNh z&>ENkboY!uXrp})lw$>kiK!%99rzKy9w8Uroy) zhY>4BJHJ?C{t&6ve=|kZy3O6!nNEAOB)%;3_?B*V!RElbv#q#eO&*+X*-8#4WnePNr~+8!8!3v5-X9 zWx8p!-w-`LGU4dGDOX_^68OXY*c~Vyz!Wl5iFqXvI(#UKg^Vc%)a%J*i?;P0guF z*|q4N9@V2HwrI7CsPg3y)~f@{DHU2ZW7}#$9aMLPyp2wYr5fQj(U9z+R^%nlj30xs z9xTC*X74X5z2Hd=cjn&V0k>Ck-?TfQuFMF2QKikB)~q8pU5oGug(nkAdAjft1}@*OXBRqso#DT7T$|DOx-|)!MR#Pl zpP!+Snz^?Mpr0u`6EpU4z)}IElk3JsQWpD@md~^{q$?d&wMp8QjE6O3Y`LV?qBieA zeU>Js+u{92!>zR4pSq8?q6Is%02degTG{ZN(r|?n%p~J`9L&t=l)1aPTmxq`&iG3R zU&im^Oi4pgYtKIS86}7NA{%)nzOo*Q&)%@0?X>aD5ryPxvVy{xl|{S-)y2e=!OYV$ zy3}uQi$bqrIpGxb{~J!+3;;ive#bvIg$w^uKghpikN!(lCVfZjITHacG6Xam{e40W LOdu84og)7OkKF_d diff --git a/docs/css/umn/en-us_image_0000001714802105.png b/docs/css/umn/en-us_image_0000001714802105.png deleted file mode 100644 index da72c4d6e497513403c06f9c4461259122f1b822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12131 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 BmdgMD diff --git a/docs/css/umn/en-us_image_0000001714802149.png b/docs/css/umn/en-us_image_0000001714802149.png deleted file mode 100644 index b8f00cb292baf127a02ed414b74681d9be97df3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8493 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 diff --git a/docs/css/umn/en-us_image_0000001714802297.png b/docs/css/umn/en-us_image_0000001714802297.png deleted file mode 100644 index 016386450d663dbe92010dc8d7e5873c33c20584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11988 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 a@zyBg8!6RxNbx)t;C9->1#{|3=Dz`~YH@A= diff --git a/docs/css/umn/en-us_image_0000001714921929.png b/docs/css/umn/en-us_image_0000001714921929.png deleted file mode 100644 index 3af09777f9b2f904036da0955ca7922c26fb2a0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21360 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 diff --git a/docs/css/umn/en-us_image_0000001714921945.png b/docs/css/umn/en-us_image_0000001714921945.png deleted file mode 100644 index 5400e67b89aed1753484743d76fbbf25c32bf159..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15871 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001758618249.png b/docs/css/umn/en-us_image_0000001758618249.png new file mode 100644 index 0000000000000000000000000000000000000000..0d21733f02a75729e2ad2fadeaded4d1a203e89f GIT binary patch literal 19134 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 TKN)lb`Fi`VZDm^zo%_E4?`=mk literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001768547780.png b/docs/css/umn/en-us_image_0000001768547780.png new file mode 100644 index 0000000000000000000000000000000000000000..68651e9f7b44cf679cf8092b7eed8f82bd1896be GIT binary patch literal 88013 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

HTfJjOF(!GBKgh5 z@9_UX(kRHXWScINW_~qUZe*AFTQXukdCl)&n2oNeIcxUk zJ--W#s#ggp`?=OOU=m}=L>!)+JQBM(&q>rT=!Qv{04hKxQX=Kx2D-I%>DRBc)YUiO zKCs!ENYJG|vW{N{FEXUK_Vo0eJ$snGstdUiOG_q9OmPw6;Y&kSRBM>H&00E9{nyhU zp3!*W@Z3C`xf0qkDHzFDRaQ2$+D$|xaBR}AEDtgcA(!d#@$Kc3Zm2DOUm6Za%m=V7 zZ_Kh4T`-)U8_+;7lxjduetPw99TgdriAnyP%yEB~u2ozIy(a;VdFEzhM3ja``>p+@ zWe??oRuDMo_je+K9X**1!Eqi;s1w1ey@X9Q5Yib>d=bYqIKK!U;JKUn*6MT6|KyW4DsO9&kc3rhtbe@5nWIR;TdHV82m9rP>ipp4=My;>#mL>B#% z)H)x4-gA4N3UuA=?a5_jk9hA&uLXC4LXg=#H_u^uT;|W2?yeZB=^^_2`?>gn|0QJw z3B~DrQad14_L(<6CUnZLSq+>_478yk^3&^NY4}Og~};a}pw$Sy_1?1O!y}DM?^XQB*`6t>-I&OCUAQP9mCJ zT}4e83Ff`ZU~rke>_klF5B}O-!j4u%Mumoov#o9#ZjVJ|@7p^;|Cb(VDiy~AOIC8# z9np2nycMjAfKTEGm6VsGj7Xdh>kYfnj^DDgd2IGI6clh`{~h+$Y0MZe4DKnYZXiHQ z3lQ(!2O+ONgO8_VJFj4tna}Q6SJmM;6qsySyKJce5y=~MyH8IF3$ZT(=|{^?-qDFF zlg%CGH0_rhqKhc?QsAlW*(>5|U_))EG-as7ADsI0!Cknoe z{eZFCkDN`qzQZV=a7_PY%ENw?v8eG6mx$2N9UutS!;IzR&0*bA9=lNfCye)JK(B(< z*P_D0-Bk|@KhhjP6}B;K0*1|*^%?}TXok=)H={e%a}{737|!_eOxb-`0z@p8$H2gx z>ye|`z@|q~kaBHnLwhtfh#XNn+M(ZThb3jxl>EI#cZNLQc=A-8;tRJsmAi)r=n{wC z7b-b-!Q=6|eIfaRF;{@oirzw~6y@XuS(}-ec`5_tfA$Nt`6{E^w{sfS#>|ckn?S(& z43)Xd%-Cz_LH4_*xllQcoAx=6U8F?8F^}ICmO>>7P zE-;Y5sw%P@CH}&Z1O(y$KYvrJJci8+M`(9%|C&BLKNX! zo?nd}0UE41Sy>3~S?Hc_#NH4MK_F<{sX!x=hQn<-y1!^%t`PBMqkZ%A(SZyS^c;~A zpm9?a^KQ`XPP{45-g-QNR_*ll4eR-juDBtOa!XO0Ejudw<8rm_&r@ZxxLVqN(=Ey%!N&ML_O@!XP8Ayu9>Y z$EyTI5b@O1y`W1!wB?9EUnU@^Mc4j0cy;W5n)>Ia72lZhfCc~0uTNEU|6iU{_`f@+ z;=XGdJ1_4}#8S1vD?aGSgr#r(J*lV^VTX)0(Z=4LCh6mi;f6+$|MokoN$(r{{3B#- z2fyhzphOu-{Q_bI{vOOJ6tJ#98{NLWws!5J_~Ihr-}T_sZgtm(-dYR>6GAs=KmT_w z#N%E!^0Yrs1&k-T!Gw8Z)Jpw22|rZk?;jl^-#{Z@T`g^+xCIe3;_s6!ac=%S=y(wh znwwn=%{3AQR_!uHHJRU?fI`y0XZ40gf`Vb>+pjN?(7-Ma$2%2wXt1UR|LxdLosxW} z=Xqmg4Ed^q<2Gc5Wd+#KX8qaCPo0ViY;<&kG>%-!0eWU7+T<&LUs+NNj{AEeKTpJH zy>6U4b1S;ttYY);kH5~p`6QF5!P?o*^gB71W0FgF|L-ewVXg~eKF7qA17Qq~Ym_+| zdYa~6xMCGqv&$hPo-79%n)iz0@E|{MocQ-(PI5ua+~Oh>uBMx>{{4pxb@-USfAoI? z(fI#UDgXI6{~wO$%=aO>EA{1}Y);&N|Lk+RxSK`T5sv>paX;IiH;^|4QWBBM z1Azz@do6ZyM>K!kA;wRhL$jwFff?vJ{QHP~k8b%KFZ}n&Q~K94|9uz#XER&>7i;11 Zd2@8dm(Z&pn}7dD(dSanvY)(k{~vy4Wz_%x literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001771562782.png b/docs/css/umn/en-us_image_0000001771562782.png new file mode 100644 index 0000000000000000000000000000000000000000..6fcea43c38f8b3313d1a7efdcd258574d8bcd671 GIT binary patch literal 91162 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001815267821.png b/docs/css/umn/en-us_image_0000001815267821.png new file mode 100644 index 0000000000000000000000000000000000000000..42dcd9b947fec57be8f6cd4e7ec1202133180d31 GIT binary patch literal 19043 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ņ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�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]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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001823619658.png b/docs/css/umn/en-us_image_0000001823619658.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0e523b1bad17579155694af617da92cd98e99a GIT binary patch literal 29666 zcmd?Qc~q0v`af#h6>qey3;M|L$7%_g(AW`>w@H-kmpl zKYKs>nLf|6@4C61|5ELc+KwGNzI3?oqsNXNJI8nI_;k_8?s{P@GAL^xN@ zXwvfy*4`We|8{EdJjnPT4>JD&f&OZ0R!5S>_F6 z=6S-jI3IwOCIp=jP-{|SY?3SJOnS3_y?&E{vR(VAG24}>277Prao z8d^tuT%YIZ8^LO#ezd2w)REKa9HjQ%U7oeU;Clr1guL0^5yNW_~NZ z_@T8w`#r3Z&OK^Nj`oY1yKFS7Is9QS?D+L~LNhk^rr|4!oz4E&zE^bj?Tove!ngE! z?8;$>Bvil&lLnMq#GAGxO)qy?cq2Z1I5HIW;g>rCO0^XSS3H-A`DY?>#X7kF!trS8rZs=x%EzH-v+9Q99O`jgRz{v9uPOuP_ZW;$L!Zdw zj9HDfYiJ8>WKX>xC#6|^c>6hpzf)_4n-Es>a{Eu8=2tEu8x?kP=bbmjogC}bZNF@Z ziX=CN;R5n+#w4Yo;fJWqdj9v(+wP-i|1>qxn`=5k-QXh(gP|I;?dMw)VjTZmx0@?v zpDdqxzCz=}NNXMzo)sX+#U5w98}ck(=L|ewJw&jbW{1a}^HtvX#nIi4jWE_j`Tkgw zkO3L6y{>0cZZny9e(O?Elc747Df`oS{1KYb5_x?5lMnsD)oT7d;WfRg|B-$FAL-KH zw{kXWCRB62BMl<~ zkFnd!CyA2819RIyA5icm|3wy@TT<($eCL~V^6URx_q|W+Yp)F6{7=KzQZrViolWwP zQ}|bZH{SQQQ7yo{`I!H$fBk(CS1fDYB)cyBJ;oxXC`U~+x#Q^HSI`}U@xNdA(dwa_ z_TT+3ziu-eC(Fnhy)?4*7gz!N&OBMpuesgSiYCee zF6f#q<<0Pp80JsrLGn<^Th8mgMM<<~P)`hUbA+EpPq-6p92DesZ=G6{)SHmP>R-!L z){3U=^>uG)w>6w5%cxNrXGy3U=@g|vF89Up$(z??NhyQF^GcyIYPQ_0r+OjY52qaB z&L^Cun-IvD)#SU#>FKB$nmLTj_LWfb(-UVgY?@e^q_sy`{7lBE_wOaYCg@-lc@$kV zH}EYI^Nzh%LE|=;gwBTNeWpB|93oyf+Di&*K_sGV$4r==Nz*}^Y06@@Ea<~L;Y$I& z6(pG{1RH$-u57rniOp1=0fYBWMrKYs$2IGD=Lue}+dXvSI}%S~QXR+S@@Y#Fkn+z} zD2Y(&Gj$5+CbA`Noj1xpT^0=1ctf-mU36Jt;(JknqiB*!>in4@vv0POTU92H1Px=7 zU(}L<;Fl^=Ogl47gRaJ>h=GUJO9R=+~amat3i95QvNGlqXxqy^JSYMG-8rc9pe0gY=30oABm`3C|)< zD{nOc*Qb-~J2Dlt_?a43b5Yidfj-sfUK9U7yC5-bR#=8_!Y$on>u@_q3zL<RA#hsu-- z7GAbN0`}86yby|8BIP4zF~&oYGm3=K_;hv(`Xalj4^0{)_M={5zF@jE+=&C|rMBI{b^K*ffi9Ty9%&BZFEwu!tnyr8 zY1!L}x{Bzs4}$qR?scBlN{}+D`xs7|)Vsz}q7Ep!KjXV;?nXT8pF39a91JxqcUhpN z69wX%N1Cw}d%)2FCv&yckRB+vz>Lbsi`rK??f2;CCmTG2UTYDUx~&*Llg(c4*2A;i zfyQS;RP?f*SzhiFTp=aV3nnA^PV8ijkw~k{OFOT2*<{jEA~4WMY%6Y;hi&;-*HS!< z-AW3)=9e%_j$PeqbDPVe@G_F-nC(&KL68&WEwh9$g%pXmh4Wntp#HG7KsYblUG z*vqD)zl^|9yHZfrpeM8CIunW-W^1eF66d_e0q%trt2n(A3=lM=%m-lzfQz5robpfd~un)bMK9 zHEZhpDW14ZmtBfIj4ua@fGo~PP&o&cLAlm+e>I+zIou-L7SN)~I(P!~1)$=sOCmHY zC(Bh@qM}LnR)<{N>?}iVCRKo}heQ3^VUtO+{rz=>9B|Fa_{8mZ!UteVcA{$?O?O7LW&$o83y*v^mcD ziuHw``A4e?mtTHE-t_kf_}pofMNY1*laoRcY%n3<|@E5K(0_>r2n2u;N? zXPcTnqasR^yLWvMl|7Qs5*qxBFmmKHWrWFPUe5nAWJIwI@+U}jsneh*li|@9N!u07 z8KrKiJTCSZvRx4_6kxyGE*@Zal}ak4uYmp~Nz1gdlr~W$ve1(7>$N4PyRqiwx9C>l zWD)7wAr2@pkdVc$U>gT1{zSe}LP2kv#Os`TP#A(ClhG3)F8yFuE_ zT>1=;86V_P1Tg=U*tO4gL}7-~rQQQUx2|+>Il+{%K}E=^VTHw!zUIfI zpb@05MuYV*VwNALkw#89V+j;+wzG6|j*j_ATaIv=Ekf$Elcn6QVrD6q%F}J3#jH>9 zbU)g_Mwp5};B7>ul5r)`B8r0rDI;Mp{fsw?NO3UHPJ^Pl@Y4f8p0ot#+6PX`ibUC{M$C9Wx1 zhj3M^pk973?ITLcZRgcHK@}aM(z5NI?8viNOzt%5VhFPuqlS2eN(H*g@PgBA_2muTH8vyS z0xh6n3udhntYoGKxp71^Rv^M> zAb%N=zo)u>aFgyo85SKM$0AI|0c6+xbzRXw-jllM z@vMN)ggRryrw*2<(pETJfhg76*Q6$$XEiIdG$ZKw`ksz#b$?9bT(uN$7EQ*aNYzAo z6EW7C#8Z2KFE}-EBZ8UXX-0V|P28+5ECn<{glm&ra8e4BxtjXFiMd8#?@Gr_Q> ztfvF3+uWic-P55)dySUSYw!`|YDUL~! zjg|x)$p8Lj7lo8>`GFra<>YO|Wa98C+UzvWv;ol$VlH>2aw}=kDcfg*fDl&!A3=@VYLd zA7FlzsWf&%MEz!5fs%)89U+7GQ;Nz{Y`9I+U+V4zjsIXU1eiEA9;i>XMAgW_7LYxIn$DkXd{XJWZ4jM3Z{(x3%est7gehJwrLh< zHP!5K$x}fRZJe=Y3gjw1vN7q{ zmC|L+ng88DRTBXM5$ut8BTKF@@f!p<9^7w%GWew?H{-AWEANy$`^*41O zSbmF2{Y@It&nTvEOl_4!ND?shheDlGj5QAnFV>~M>fo8-!n!#=BCZ*Li-fTS@g+)L z2{mEnUW|@*pXW+UH67A-p0o-gTo!P_=oBHdz~*v8H_9bmd<7lY06<2PQa}P4Z)?h` zNn}yZx2z+ylJ>7Kvu!7RqI1GPoMxkFFuGLNc0>dNmwnV)TnkeGo)FU`DCpM>jCO|J zp+|zOK*j9iGWc*b4fq*d@0Wmr9vpVIdLi#ZC0L@p&uK3y69G&IaPSK&+Du z>gt4&dRF~U<4#f|Y*m&ftEpQ!!zJ}sa~otZYERNfU%-ZUpWO<2V!=x5w-V0`$yy@_ z$&DI3SJU{m(!^~+%*Rl#F-R2vD0#}aCIbkSh@AW>eD&f>hwV2xf}8iv^~h6i1Ad-x z&{rTwt)CZjw6sG#SJs(3Uz^R%*`tzX%{Zyl+}PPz>m?Wscw~{X{_vL`Wzg*ymZdJ~ zKq(kZdjc65j3l&}mv0s57Wl9GT;LSc$m-aq7|K{Mj%sT=GS)2@sMA&~2XTRU2tfR2 zc;ak1(PA*RpV^Lri~BVV`*#b=CNqUItCV?KJhXZks5TV_fAd|0b&|%}X;d=SI;oa` zeJ5>zBk1Ki(&o~+^)7-+=T*@rpCzXl6OaY)oH3-AE*l9uzaHP5;&+CD&lbh)VaLAj zylY6K2GP^t`lh>ZNO|(%GHNQBw}4(U&9v;AE4j{CL3q}{E{}1(X(-0>K`Fz=h+!NS zk<6WF%FJCZNKLpAN(lvO6NhhOvYK9m)h~2fu!TN6&Tp2BxYKYUeVjp{N79&;+*J1U z*44T2S~PT6^iE=DqudgCL=f`A`~gC9)-+Ukm%99$^2}{rotngC-6xwM2jJ>kno8Ob z91xlpAB2cej>)go3pzlDklnmwED%m|u_234HfEDA*x%J#j~w3ye;!t-T49Tyq~YNh z(78G#OGLc$(UpMT_z>So??w~S1-1goo%yq*vtKBCH=~8?rdMVs3j{5C0R>CicOh5$ z(}$zAv{O|YbI;zvKZ%w5KZgFOov|UQTgpwWu9R76y_<78&L1)8l)pAo^BMm!`k(-k zPtDn$`TopioUQpmG9{&dKw`)-}Aa{WP@yZ{E=$Q!8d8M1qtDkgx8hB!+hV4H5)+H4@!ick`jjt%S6BSH;YR%SQHETnDv#^ly}6 zu?`uj7WX$yai61``d@uqIIp$x(Fpu?JFG%Mu);!3_TNOleo~U7F8aRKl(y0g2H50L;BRkZMJHc@`@asBIv2)4!yDgvl*_tQg7LqVm7!#VLck-;@58 z%p|KeMishBt}=Y? z&rhxt693c`y4QX7VXzZwag9SEJ?1t#(hnwwa9_A#l^s+jVk~&aK)(sgiS++;F$aX9=pRKoPua`Stle_HTqYv4{ zRDZ;6-I7r1qKl}M(2h7}{|#Yg)^yLWcBL52GWZ<$8?LkfZ*yh#luJQS0lO?oc|CyV z&C)4Z6{O7HjP8)X&77Z{<4hYSgP0)I-C59W8rFefdFr4<$|ZbX!quQuQZcA~$gJPsof(xqB` zSkwN7dGT@hRe27>FP)R_tddjVpzW645E5r6Pc~_)$J|wmBWwLbHFDx|z|R#h?I|aR zOLJKvXc8|V*tO5w>sZzA(nT|)eeFQdcK%XI?r-PKTX#^tWnl1#L zu#HY$r2$K0Xl0ahA{5LQDKT);1J=ID0eq&UMg#z{(hdsrrz;sWfNpDUE9Nj~em^Jk zGDvYB--MyLlQ)jb^gMlk_a=Y!gp5z;<2Eqfjbp~uxcw_K`j^`tH@X8ZWvs6#J-$*+ za8uCLp~@Cmh2PyfQRRB%_#+)olvAr$a)e>DU^Oy4m%8+hSp8|8!MJeYxWDARuF$N` zr}3@idPc`^X-v>g+wI}{?4IY_FXX7t*kAQuV5XvYmMZ9S)DqHj?zghR6`$%*PIZg* z{>chAFu5_EyR`1^r(j$>tG?X)j9YcVRfTv_DeKApQtq?aWa~8Xlat!@;W5_uUa92O zW}@#`HB0OeJil8Ye!;InO~-ZTowM!DibxP*4q~IKA}=BzOG2alW59y)@o}LbWZ%7f;(Oop!rZP7UtRiSb;jHMZZ9r>ee0rOKXxJ#d0mmTY1pP;jI+4BqYmD{yLt}!aXx- zvw_hCJK2Wc``_!^zkJoUSVR7WwG|+3z6B6toSA15`ah&}5(|5t+F?#)xAQY18j~XY z8;)8ZZws#2+m7#_I{s*ZHr7&mn{(pP8C-|}^OhIX#-BJa%v@JPO{j}DMtGM63!QMD znYt*syVi}7p>vf&!%2AFVdw@(YK+3BS=gnNvpD1}-xi@E$Z-a{LnwX(a?QATGOxN-K7UmFZMeV z{Q124^zuY&V{07tamL%I(9&}-UVFeGt(e4{RY}_u#d(LbRq=Ys8YuTW?42luXthO6 z#Dd~5inh4#lV~j-sF-(2?b|6uq+K-rz+grBm0bk-p|kWT#Ox&OyY=Q_ z>eDx7yJG?I1nJKdKD!iXoSHmY3K9|}Y{>R_Pq3iXC{1m9kJ z|P z8$NBbb3qw>meC|YXj)hPHH8YG$gSn)L{$7u=;&q|_Ra*|mz|CCkA4&oz15Y#_#j&F zYpSFc@hff%cVhkB@)9O%D_R*O{AuKy`eK!zsxF+_o4y#)?d0)^jrKG}j#`G2)uDP? zOegnQ0}74kOI8 zj+uUz5@?|9(HslaZrIZ0sfx!L8f*DoJ!sL!Q1~a+2gOQ_j4znKuxr^4niKZ zS(<#xt>k}62%_K*3ejzsPLDKLtMp&OD9w~^IfJsXIa4!5D2=R&O&l1W7tczYgG;X~ zS1>v!kflgrW*n!O*`u5Ov?tD5gm#aa8C>edejW2tydr;%W3rk}DO<%f2TSsj^dK(K zazxx&PiVFLZW_7Q6H5C?Sz4e=1(1u{-|V6KArsFF!$3^)M@3exYUx?d1mLF0`jgo!Qt zkHrAbCshS5zJ4FP1<5#PU!CVb5o`KDQsG#;n=5iA ztJv{fgc2Xq5(FBT*P6ru4RZ0r@w8xZK6(%T=t_Evpq&kme!0R zS?MB;$R{aj@^&{WZF;EI{Uq%SXH~ZsO@3>?elW|QEzTFQPN}baE9=g%)E{n^mP`n( z(8e@Obajf&$JIL(0IwkVewSB7UqI#f+~Dn7;mFUY&(|58;5VtS8&hTodN%_>O_mLA ze9QdekS;Zzx={HLQMQI3-?jZ9gKg#d`FycwoTYU4|tB{xI%xC?!r(^1$ zm7jpg!m! zkj-`Wd~X^ZdPw+Ub7~j(3tWG4c4#t`_2QP{di>^D$}U4DLWQv{b573nro~lrVTTC* z*NT{FN0>0@Fh0As7B|qFjRGwnSd<;k>bn(#_4m!{D_K^=NMjiJ7#!1uj@tMI4To*t zKx?SLQXx~{HBH~O28t0!B#Kw1YpbZi^S#1sT=kCU>3_JfM;EJj59&8A8s2+v8F!bc z#qjzeMd=2MsBD`lL9gbbO^(F5m+71AoeZx$t*E_=sNxRMjR!@h()BL^=(Q9L!S5JD zn$9OXe$_VAT5NcxCN!j*SuFYZg7%~@ocDDP(1T>ALq8u-UoevJUGEZl$qkn{8FvvT zsY!#+hG!qzR2ofFi?<411%0t7v#lq#39)cK0ss)Ch;%+J%_ob*grCCs}dPhapLW9pc3{^(F{XJLa=2DC|yjS zn4!+AIC?onROREU1YQKxLHIt9bkSEk62I132`IW$#C8aYUXS9L*4~B>a_WE7@V&>c z*TqWQK)jC=_zrBXSAOob$1jp&^^6PQ);+%c2Z11#Ik-Ew%15&hmjG4N`jmU-aty%@ zAJ#ui{{DfnZy3DV_>M$P=<@|ozjUM2ZE-R+=7}o#16k}Txahvk>js4I(x<#FQFUUI zy0{=L1#l9#{qpw|q$y+_GoJr(Nu9GKZE0+)HlRFR)FEHC^k+1eDR8%>h@bNl>YKnj z_YVGNDpgSGgTXnUhg1hWGxaYD0z*#X+>5m~BPYI_ zZEP{N&BC`BN`P^CR7fivrYNWiD90g;CtH~%Ss0@UVM0BP?}y!fb4V3>+@Hjm3_QqV zc~&RDwNr0A(#lF*yVdqpR@IFmS$N9>i`*`L4>|vplP@v%xi2quCcP8SE=|y2!%O2b zEatks?k!+k0y}WRsC_&RFp@if1K{_V531%l+?AKfqXA z1S-2qv{`^2A`ZC>sB?X?amaKB!V_Z(j#)JmUO5+kyjUby2O{o?vR5r?5DYYc4s2xq z#k_(C#!fM${qL8$>-f?4gg$COecuh^G{l_0Ilj;7$~OG+0qTGgQ;&a}xYtwbbu<}c z!5{Ype%a59dogD`&G{W;GVNK{Vq*(RGR$(a(hxNluuBEv4lIgyO*z+Nt+ZxH#B>!q z?}-vv!5B0RotRb4j^3)eU^D^l_rRbDTg*D2AV#ys4#>-})U8tg-b|gdcl;Ar^z@`& zE=^Sx%;-4FxN`-y3w^)yM=E7wBWmN)LpJ}%pg9M{i}ugSI)ZmM=8DG95e}!L+<&18 zFASuwB5KpuEap0TvLC+ZUofpP?JHr~*<6EWHD97;#aQqtkkhK?{1p`d{BCE5$~!F$ z|J-0H6&3hLv~tHU@G|ez8wM0l4^v&w{H5-Y^%COAER>8}P-Q{ViA~7qMv9{#sHEbq zn~dDmD^d0XaP3v(Kv_%fs^{qXlv7MVd{$qJ5;01uB8n#cckKaz_u?<^lm#>b+}rG< zP}ebtZF?13>LNNXWY;xSb=e*MRh#LYx|OLzxFbmRsTjEoUok0EXXLtl3bEe``0B%4 z@9}ogk3#d8B%179NI%?(+Wt(v_;&8Y*RUhCP>AD3Owy4AS7)P1&wG}s9vG8J&rXsq zQ`!L}JR#f@bzW-P>lnY|S7EpLOjiuDL$sxG$HNK0lYdU(?+FaUV?gG3c6i;VHjvbF zF=Y=1=L_1tF&SLQu0I*I4=_#O_Z#mN_#cUme4w`2LwDjuA?ts}A)ly;7Y?u1UUl_# z6dNulu2xx?SOW`gzbS5kx8HsLl8IPo@oEMU_Likzs>4y20_t4BpR{6XwtAOJSHeGX zdpUJ0oN&j#Y4$)AvCMlVt^zh&HYhQqAQGZA&z?I%&J_xM))mi^;ZxoS%dfFv5rZ41 z_Jtrb{PPAon|*Jk)^EnFNANR{9JP&ewKNCBzAALPJp18u-i3g8-5P_jbN$>lHQ}R! zv`nF+1O0P)G0q?UxF(@aRrCAn@qJC;exW3>5sU1=B#>+ens)auMUi2O;=s_#1cK|p zWO{?E(|K%*1l5_AJmyr@53KVju03Fdc<4M!?@J~mCf0=6dt3v_PRJa zYq#?9UCJ{@(VA|h9j0U~;IS)MsYDcK%|22?F+hF#u?9@>uDh`e8h@0HvW zK==2WW(u}T>!7#+l}0%f&G@Yp&qm$dzIB!XEd#5xhow&=u9hM?sf=$X?O%1OL$u%* z4lLQDW1J@u_xZ|8e>6!Ik|(!i`M{H4o2#7Rx=XgiV zTu|OL#ZnpEWm3QkFBd{~%2`Fh=!n1szB!!&v?Jdc8IIEo##L_z1cjQ6Q})iqSAblv z_gbG1X6>CTwX?CEzo_5t8CH&S&+Kcfb_3I#4g%h)h&|{#dP|paD?S$5n!B*BTCRT< z#6EM2hUQZUI;1FVen4uv$vEE3=GeYI(`eO!1P8zXq_2wbSFO%hz=~XNM$a0mixSOr zToT7xqz+uxKO`3_NGePKqMo|d0Uxv=sjB!l1qFk`t}m!fUkie*@6x_LT$RXK=f&Z} zi%y;gOJYk6{zE$Z`1tv;?$^;8XYqD6B?XuDpN1NbbCf4?@lHmuo@Y|G3W#ou6BFz` zohB3K{B}y47wzMQpx55I7}vLQ(-x~x#-nU0s}DWcvTEV-#E0r6;$?75km>{NIV?fc z>wxMsgbpq)ep{j@x?BkQbjOWrN$mA?#j@YeG7a%^*Uw!|$!BH#s`~$_u4VL6W{gRn zxbr$Bt^y=r6?6C4$ms@Sc-8p>uj(`u7r)$Khq3wRdg9IfD-ydx8*oix{b;jc)&Sag z5W~n{;oe@dtAOE`qcahAnwjk{<5h#YRjcH<12hu&7@|*NI&l0Rv-O{jaa&d4EXu>i zvxR(0U}m#OROM>}9}`B6-kkHJ+*xF%Rlc+eF?pLRsSMS54|IoL>{mRHe2(G5WTAYNNTv{uN=DG|nmR%dhb# z8htx7;O%xcl?Hi;xuL-gX}niujY>t}E8K8Ehz&@p*vMO%=pJKuJpOD=(D|z!=2ZC? z5GCcB)xoUY`dwoKeDuPM|KnY?*{<%@WaHr9iuZM)?ge8^Cj9%*1{uOwYY0iwlFRe@ z_XHkVT`O~S_e-eseVUd*KdvU;n?r3V@C>ZPIRIABUBJB!P0zBXPj*=3bQv^h*`rcs zPr^fIQf#`b4^%B!ha41Mr~u`1@+p%$t!cftc1Z|^gQD7>ZQ=E4c4tD2($iyYjzO{z zgTMEfJirt82__#91Ih%q+HSZK((5VxrYizs&G+S!BalCPA$tdN0cPT0tj&J<^5!B? zX=Nf++zvXUwKK`w>wZeYA#>=iE5(v{7;ouDq2lW99mLO7h|G=OFFj_f+?)E%+2a$Q z9=`=>GfXo_EvX(wHK+Ow99Och%TVqL_ywb;bE6pF{3W2-<6bPLc<0e%2i5a0RUp2EB)y%y9NVD9xbL-N>v->s zP*shCQ#tnmM^dfu-{p0nMuDuwCG?g-flocop${GS6vFqT=Hv}GL^ulj4}@)3RW`Pl zYrp5GWgr6{@F*V~)i%RvU~y^d&F!UDW9A}#fR&RKW<1);B;~&MyewSIKC5fZ>lXo6P4iLdq~?p$*UbW+Uedx z-V1xM$R*&%mjt=p;mc(V!qvbtS*?at;Mt(C$^xRk(P9iX=V3SXdW)9v8cVckOjr-J zV!RB%=_RBD)FB@5T`vSa#qY*>+oQMtg@1~@l2q%gX}`5OlSLKzRi_=rn2epfTefc* zR}KyQbO+>jyHcmUPBU(-YpTuGxp`4jIEXpf@uW6>@}=N*#) ziQ#UM$sYVg4)rb~i|)%h1Ma=)EMx}Ymnq$EfM@qMw08VTX;Yl2W&te$ zccjc;h}Lp6dUNeoWPWgu@f3XtZ4k^TH`87{GCw;K_ol4HTeWE{j~&k`MzKp3&s3JG zVKmursC5Cl>SXi^!NMGtBuR&)1%jzlIg<@7mOo9$+y$zOk^-Oc^^L9Z@7E76Um=F+ ztOqVj0pcmjhUOD9jL~@c&?moY|4=bfb(eqJ#hzDkiFe0Xr8Wc9(q1JrqzzTAdpu3M z+7}y`0j9J>omMGWN7W>a>bm##Ki&g?2t9_=xML71UYeTm*A%;c)U0KwOexD1_Ev=t z5ih8K^%>TD@BEefwZBl+#VU5%ugVR5!*u7k0r*v?7~<6v*_!(Xif6iM<(IFNh1NiW z(uJK+P1&f?Nbh;3mLcwlapcw)j$buCO%Llv>PAk<7{V!nNV<}^d!sO90%ft`tffF zxX$zx;^Khi16=D>D3(#_#~MhCQZ5eU)-X}>u^LZRHfFzYds;Xz6|#HJBVZcR_mAdt zEXzlv5hHA0(&l?Uo3-{(c#I-pxZpH5f&vh-i;Uzi)5R%M6{kRw_Hy;9gldtKAJ=KDI-6Q(ImE)KU- z$-FiEF?q~*oDYw!AmuKz4aUzc%dfq*C?}~30mdLiH!RtB9BiaIWSF?yMzQuL>Rt;} zYXMpP`}P%cO)#&=!N6JcvAwQ%Z3ZeFYl5j^NIpp}pGZH-;3x7C5EIrME6 zxU!P1Sgn@jkV3}|NPiqDQG9ct`czonsZf^#5ZCZR&j*7qJHLlI<&TN&dh;> ztq)@1`+Px9fP-T*EZ;r-MPqMALat6<3x^>WB-aPGp)^%?LsEJAnz^vV#igAZI^4{> z*?3CaX7Q6v-&Rd#aA3s6?Z~J@d>>QSRO~ZQJ%$Z!ZUe&Iq5btMcCWgLN`3jqT@L&TuXv_S2n^2hBj>S5+hoq+>vgVwz+FV-#Q4xROdGYC8xx#7yPclNvAL0 zkI>k~ra2-q&fP_@fa@;M5%A6LPS`f-)|&#h z!0PkbGFjP6`OmC4PE7g`J!&}80j894CR6rXa!eg-**CJrWhGfucx|Iw8U|1onP%F_ zxlShIjEt&HRkgfNH87eqxNe7W_DLB@Rk^|xJNbRpGX9EpGolC=tE9QROzqtj?_R9^ zQ7BWngSlaOt4BCu;FV?DJwEg9PK-r#696qh^_=|4Xo;Qh6iDdtR=JQ9h-Mh;k!shb zh$A+yj?^Gv=_spYkeP`@I#&B54kfUtHvScKTCJ#SdvMH8@z5jkID{Rag?TGAia>_6>a-nF@s0sT;fFb zLm!+fX9ctxQymbt>6Ia@C4a=e0oIKhDGjIkEpjccrPQ-tF}MFP50j#13r>lNrNK&c z&SYs0u8`X1f`m1UBS5dsaQ#p`?S~7Z8Hjz-1uwOP5I6xucunL^&g3r&%gIsP(EF{R zN4aPX_Jtnm@@8c)W}ENqUeD%VvfWyTARBk9oG(>Y?xznYWz(u!h%N?0wuv{e10LCo z@>r!pR!js76e&DFB;E@&4vKv`YLfpncx%0fMgeL^=U7Defp7P5gx!<9=X;&Odggg6 z>!mBmT9CTP5^S4Pv~R@~@xjk?W!YhjMiKeJ$M$`v*&6)aapFpFy>Ipsr>tl)5h39A zRgOM2*+VTtZR<@C&-7i&3zlB54<14G)1q0P<=D;*YQ0eK&*Y_H8iK~v($kz8x zLYG1n=z93UFrrYl^BDMS^;}e52;*EGicJOPOz(yn`{UXw=U4@kL=QhodC@}RGq}zX zK6QW$5`Hs_*9Su~f+8W+ZG6LqCE!)Fpt*INinJ-e?8l6F&~9B*Fa~8z3X98R+ezP4 zD?pa{5wi=Y_l-{Rnh^yad~YPfbr^a%Jc&XaDF^|#%3XoS29szi7Xl=0^xmH3$s4k^N!ZMRD3a-kX8kO46Iv@I z0S*Rciutqj-eH}ys-v)MdQ-*7nb)hs0A<^L=b)Twh6*g=Sx(@oRvSVZ=|( zpn;QAa)nx$@_hl<;vR9D#`rCur50Xq=|h8}OZ8N~pJw0IMvR%K3YcCCGoApTV4?f# zG5ubE+4fu?0Xt0A_+aQpeJoTA@I(ozC%mDIX=vp!D5MJulJ-2Z(vMWJ(7M-x)DE%rn_q|{!87^+UoZwFGUJmzLY%X*zx~`P@3{)Pz+S1K&K>&SpRHisfE|pK0hO zXbyMQJYx~@XlX^wJ7v^z=Be-4y0(CLY2Ze?hz?@S2FS-##We62xI_;d5fle z7nIUR5XTw^TIW*UN|rW5YVm;&aK1~GG=P{KUUIEJ@+=O6;F&Uo-O16Fml&ET_c_Pr zxl#WRZUq%-|m$jF(I9Db0hBa3TQXybAA2PE^B=(c6a+FUX- z9%`wcMsFpj>mby1DpXgDk3@v{n&XE(WTOLpSrZ$FQHEG zO4ktd1s_R6!8H|_CLX&R=lj?dTWOHHJP%RUn8|&=*ztU+v%{_@+8C}k|LwP&1?ZAo z(jWdW<7Nv@npTA_Hi6jqI5wI%X;IJ-aQP|Q0a5e2O)e)c_zk8#qJMC7?wZjwT_u+; zqP6n@Dwknk+ePG4heIhAV~i(kLBfF&S3m|U7D}0#HLs3hh90?9V^1dE*FM(_Eu`Rc z(#xK?MEfBwIi&g@qc?;;P$^~Vo#r& zv(8U0wG^$_6UxOH%M{<05d0$IvgNYK6v8-EQy4=ZMlcGJhBmiN7&?X%l5>F%XomSs z{dGa-P-3`k+$ij{L{dM{&p1|2F9>eTq@x6KCmBf>sQ1yVLaX5aT6pq?lfk%Wtzx?d3TJC3|J}JqguQzki_AiK9ug1{Q?g9T0OzhXG=mXfdbMf?AXNbu^ zTRMSGFM5zT4t^HgRKho~juIg_Tr@lr1;5{_t&|n-5`!4 zJ+HeUvqtaSW#n?8_A&=b8?QpU*Vo)$&p&EYnVhiY&ou3{27y%)f1^i~`))eUj)>a! zy9G&W`yNXe3U~+!L3iXQO5o1Me=_6jFXuxJQcH!mIa%urZmegu8OfOD8D`rf>@n)< zJw0;Q*GXXL^czUQA1ip;vnt+BG@2Oeo)F@G-3?a8#-wg-jBK>IQ3or0{^>N%--RvWd6-Jb9`DoLxuQJ{&a%!$Jqs^ji%RLhhS7Ogn zXa@n@LGoP0*-BGjQdsnWtiV_D(^qASK6gP61{cvfBICwKo4es<$LzH?$=TM z%eg078(CH14&a?*d7VR1+FZ|OI1$lv0bW8aOy`Ma`JN7n%LYWmvQ0=SyJ%yoWwoH{ zs;fhYESAyX91x8TMH`O+OwZ&QCyOIE{jrcj()JId_0HI>jp;oq2*0XDDOKW`~j9L)P-zM2awz12VM)h>9+8Q%$b^{CF6yVC8rB{bM9*2f(vAqfv zeI9#4Qva;>xj1mIq(Dkao^HKr&V%=tYcV;M#w%8PCvnP=Aa>ZWVWq+UYVS*D9uzLs#~|Do=9$FCUMAru_mi>eqllR6^#+rkn*|{0mechmJu8j#E*docSgWOA5uA ziHl}?LoZuLIuzxG3mBGj)*~T8@q@SQj7713OGB%9|L+Zl2_}RUFyk;yJyX5S0gY;U zdz|i>r9wzEtt&nT027x)xq0pvNNcc1H~dtoJJ=oh7F@@_9HRNRUocq=h`j z&+dcco(@cYPWsZGfwZ&-f)O{?HiQ!}vG{_L=dSUXx1B4j{^Dtn>k+=8pP@(Y2!q8P zgPGkKI#B1qEVkyCCB&8_u zdqt6005Pq8uxXx4t$n5Wfga=I8qhd{u#UrKXs%kWS=oy0JILQ?H%03wK&b}YNaZ!pHlj?QmL)H*9P6T$Hc)csXPN~^Or?Uvs4!aVS7j| z(Dpo z>Yc3UIFHdWB3-M#Go?>|Ws7YaFm3f}-kD!4^#5}TTl2xkbKj~ePcDVAw%=w1dUA7R zy{!Wh(F{kS2#NO#!WB!RUpgnzZ(=fTN5fr72Bsr(QO>LF#n}eg+1y^3y1iHu<%F1E zEZJB`mue5Ir`PFS_kz84*W835pkXYEFQ)t2sepTx`Q%@$e;Sa<0F)mKk3lw5teIA z>9|&ekJnJLhbMjJuKDXr)lS*1dlw*klEa6aOE8R-%Yq57t-7vG1hxjWtW0hcynRof zyveJV7dzprMNIbMX`9!-8M1NygR(a#%SQ;h(?csB+{}HD_yq;5$|sWAcvCDI(8NmD|-=+Uk*lHwm@%|>!C$TN>Ie0I{!AtF3B^PCod9>$w<)&PN1&u28l z$6sEnl#y7g;65+e>EEW#YybF?QJG$0g7zEuBCG=7ah0L_4;wY;QRs`xmFH3ZD#HjAIR4;Y zin7M}uFa)|2Pz&N7;)O3rRp%wQr)k<@z^T&+HjET!RVN06n-e(Y=rnfU_476$=$6M zhj&Mwig(eM+mUX#Bgv+POfFKHB8N+^ov%Ij7~|EQ7HdsBxvr0!vM{VKcVr=4a^fn~ zk>~H^{03hfU1oq!1w$`;uj0fEXOz>}#c?qLRG=Zz&SPG0>~!^N1{Di4nnBoq)B@0) zuk5jgMqjV~_A2dpHW_ORlu>scQp|b{qO7`dzCezj=y4>TM+ADVV1NqC|1FgnT%GM5 z4fLM5Cc7IMOAB1+kjb8deM_-}w_*oz*1&+nRX=sWO7piN3eZ++@(s_|f7o&O{pnaq zTVd(wav99{kuN7kje9>pdtZ#(kvSlBI_OE?wa+-mu69fPeg2Mt{HNgDSIE=!2#^({ z8QWSY(3h9Mar$!eMqnyDIC}~xHXVyAgK&5FP6Up54v!bmGCww>aNx>osVy6ohx)MgN>H33MIKATwu400&Mlu0qqQ8;<62jR{7T3@CG`2KoH4!dRjMz=PPqHR-fah`|&( ziM;=!sr48>#jP`-r^%>D_Nhct;S6!4|G@gToX0=QQ=W~Az0EQY`gP|ZQ{eFJXsHQ= zSe(j#bpzq~47+>So_np!F{o7gb139sv?`sssc%Wr@pIuEu-ec| zpW0h~6oT@7ti%#;HWh{B=Wg2gdhmJblwqW}8s`rK`04Q!AK~gFA1x&xFYj1iC)hMxg0{QB zsgHbH&<>3!+eqZBGXJ7U0m+9#n@g|e9x0y7sM-mbgZ69JFuvDcr z?I-*1-ZT$1szSs8G%(8UbpbQ|WrfcURzdGv^)=81pREu?(MO0eo%EWc>`!Q=(t?`A`x}dwU3TQmeWlW*H>^FMAbK)k=15P<>6RGtZf+_gxMU?J2t8nX?Ep)*+Cm1?T-*xhfNdAy5%gje z&gewdvA80O;(GzRu9`Kb)cG8!i#Rj7WlywSWt+Il(K&z2<_X<^-6XK5Ud#ES&Fa^q zcao(E)xf%(JMjEp>tbsCjZE_`JD87SnhrQsm#qZlV>by-$8;-M^OZFQ|W{7iE#L*M1nIqeN%41f{lsxN`JvnAzo+l`Y$dpge+mgF`W<{S|vOP{bIdAYfiQ01Bpbla$*eEFEMG-qF zo{I3JbToaV;8~Q3%qO79q(A*7rEnrnBZ=x%h1(Pti07##ZR(PlW7N_%=zH-M%i7%< zlxqMTJkJX{FkA^X!GU!b*8~1`a#{z~{DZu?XQS7$rN50^u~7ERUFduPW;NBS|FUY+oeH0igyB7o%Xl~(C6x}QKi3qelS1pL9S8h!&h@2^}jsvFD%Qo z@w1nCuI|)-v?tE^5nTOL1W)9~r_s#H{qGhe?MVQ(jDA%QOx^GdSa~ee)cU*s`E|@{ zafNgcf}0$1k#|I+z{dN%U|%lp=p7ru2;0pm*QUIVKU9%cv=q#V(n5P^4$D-Cbb$h0 zhMF>wj`#S@buE^a=t+-wQ0hwmpBs`!_DRVP{#upK-qGuu$-z95gGt$jl&HaVFAIS`rM` zvnvY*&0}!!D9bf`+FlM2-BRRRyriPLsjZo)qJ^ z9-;diJDGkcx~SSVv(FYodY8vruHaD{6u87#Veaj$OuGx6hG-J~~Iq zXMcA*;M9S(7Qc9)F|2lKsuaLYq#14eP(xzu>F2q-FRa3(PTl=5CgwPf*M4($wE`d9 zv@_C^inYlcgr&VkGW-{0fS%hXk=Kw$-okb42Bg@+MUeYnt{M-$Uy0BPJhxbQQLwv5 z$q}!eSc7r*l^GDuI*OAD9>!OpSAHz$eb?bpjPYmAbZ!GYS(^?I)_qy$?EZ7M)Z2_!N{b7 z=f)tS>n1kCrMs2QG!zo)97YG_%J+x%kuBVc=472imDRSIx#5x;U-V{ud7XEqzC1R* z3in_>{O~Ecp%dsxu>A`p&Vtci;2tqd%<%X{1nQD=R3ITw^$5pn_ce<iETk-xa5pJ7*hP3!andi6I#vwpHr^0?Q-tp+%)ZN~kKbGYAlrQS2lO7ao z$z_mo!l5_M^At7FZLwt%0gZgk`nbQ_cD#eBWDY_U$337IYb*zaC1YHrweKBG2{CZ6 zvm_q6hy~0`K@Jq~&zfYb&d=Va@2hz)=5Z_=Z6b#3`6Fy={X z&`l*jNpfh}N-Kl7u?qY}na&{PVA=WVL9w@qE^{Me=~K1`#2konh*Gl=!79HYI%CgY znj`Jc0WL^vKyJK08o&?CuK;~pRM3;k&?cIZzmZThgs_IqxfyZFfhXZb zeH4a}rEI>-cr6#xmp0E&hndfDp?AP1o_yv@UAOap44X5Yhqcg&-Ad?R;Fc?4W`7AB z|MC0UI3D;o|3CbXinEWw2*nl8lyfU?@TH3+agH_h9mRU`2hZRYd0yH%cKY8}kc#PS z2C@>Z%^-`9U*@{9MaG1*f0ByT3P}nlwi3B{jZ_R5cRop|h$Yu|hsqcn1$l6s}7aB+jcH*+OyDIK5?8zqN3;vp+pFwKYma(f$CZ|1015{v;> zF=Yi{UJuwoh155u^3S~Huz)LXx!Bn46yQ&%5hYhP1vIGsov>YqI<;1;(|*E=5wQx0 zZVt>``Fwjz833@NlbBt;rZ1m3u_KX#6>p!+1Y~h!xtX%Yz*pE1F6tH%n5;c4B7DtiGDKYuXk9AypU^XHq zgEkEi0;&K7olPrt(Gwhelsy<{}cTAKX$>_inR3?U5RY}39oS&i%pq)H#G;ix23-6s?6Q3UZbA^aBt zAcoB|rV}_pG+dGqCU%AAC&Bs|ePD3q3Wvn+85g@D0bX}@vc zNKN{Kl+sW)X#E1Hg&Cpcb-pR)oA76qt8#Rl}W^>+q4UAJiY9CdjYi@N-5TC>72 zK`os`Usa5TYeqB7*KYGVcOc-gLyGL#wK`|QxEWOt)twpEZWLG41;}Km_V|xA$Sxgh z4Sc_tTWrl~W}dLYnih?i8qR0q3YKkh>W_D3!HXQllTHvW*6*=+Filg_`zNvwO-gyi zQM#Z_Q4NfBCWs%C(5g9n7eu!N0jMv!F0{gci(EUq9%bPCV|;|Yb=&q8=5f(A%9((n z+B9cE)?&v*%;X8Dim{L!DWaj_df1)$w#0zzu{B8yXG|(tOr#K% zxPlBLD7|g~(pbEdI8F%r{1mcsx%C__iGLrH`cXc#1xyoPr)h|~)~_>sX{$I%oOK*Jr`WU&q{k5^3keB`q=9C?Yt|&;(ttU zABByFB*u5<1`F(67@}12WzuBi8ESkctp`MA@+AaIM*q0s)H>+)M%JmeLf$Z{tyqX| z`r*MGP0gUWaz4ulTq(0d--4&8sn2|ya^AovW2!nsb`yXTB!xUK{yN3iiXAevsPp^B zD2X|c(&+@HB%V8FJ)g1)VCRcaM6Q&+UAK| zq#H1rydypH%tXY?0|)BlG%ag-&2hsD=LT_Z+fhn#88{e{*t+Pf8?)Y6FQcrkk5GE`-*c1BoBB)oYOF$3){Xk=j4U0eHjt zSdub0%p^&QeXM60=kl$#(;6py0sx9}FdDfJXa9uwVbHf~#L$5gUZ-R4ndE zGD2P-Zmi|e)Ws657%9$_806ntl~vRKic3Jcg-u2sPpf}7Wyt+(go+35ntg#}3-T#W z=i=uteXR0Df8BN}HTrX0deIGV9M-=1Z=qcAzf6VWO2Q-w7Mre-v$BB{67E**Om z*2<|D&kXM@C81Z@vPLddHA?tFx6IM9m7Dcmbh|YE6QK3_if{mtnf#YT8-M!>pAG!3 zcx(-N#ZT>8c*mVw{Ek?ZTpOQnhuJE)`k4mDeD*0#x5zQpz6GmJ0>?(F@MyRKaEb6i zqMn}BRH?pvyF+3wzR78=WH?mLm@6kd)1R;VDv5SR;5rZl=;dhCgF3{S$2z)BVUi7A zjnyrDV$(EinOoPVOxj9jSGbmec0y^M5s(QA2OXdD3P^%hUH_y4a&OP)vSfCn9ln)` z5Z-DbuQ@#h8QP#zNBswK4WtM*@zd<9!!ZeuNy_>i9qoob<_b&ZjOTeOIhVakKM6HqW$p?4{Vq(y;X7rA>-DoNiCxc!Ro$r` zBud;4aU$(IpvMa8<7J~2*<6u{^1jJdtpu#4cM&x23EithbTY7czRtLI%N^-@zk(rF zeUu)d8lDAkWPt;8rbQ-eJ87$( z5^dU4My$dD%_DpVRy_hcBgC1UoRzQFNUSZ`MnJKx!sl|xzVt5s>|yZuM3W0;L-Yyo@uDKQ@M<$9$pduMSg$=1cnb)Acz_y(^koftq{dRSNdUCetE6c*i#vH*IPA&>c{@cFwMkE}ed-BJTjycGT0b`dvUnLHP>-u(4~~={M?P-^ z@_ceRFLJnj6d76~My+&qK{O+f@4?CfaK@pvFq)0liFFz>;CnpBG=Q)f+SQrM0@!T# zPZI~F_pKT4l((Dmf!eEysHy>>Kijf{m^Iq>3?lCdzlf9;pRbN}2)Fqk9$gNi*h=M?mIGW_u% zW3#ZB^;0|v1WL(sr{Khm4lkum{#L`9)s<|(lXV|c`h^IdMR;lPS9Q(S;Fz zBLIO%Vf#7EU9IPYangw{dU^!QHQ#<=eh1Tj7C7Bn>H0a+|65d$|F_*sSKPlC@7n-G zUa65&&=%Pmcvi{hwcAZ>6J%Ia&aOr5_Q|>CG1MkT<=(p)pCh#=evKTz!$I$QU@yfX z5ht5aJ-G=Rma0DRw;QF7rci}h>E70wZS$iNAsW3!+r#OTTFAaMUewg5C=ZPZb*l*O zU7;Re|3)gDn{MZLd_m3a>)#XIMJ{q6kO4 z1>Hm_x>x^$GWZY6H~9EF+X>;XlD-*8qx|73Hq!r8sSK3m23fwNFYTcH4m?PoYOe0e zf}`9WH;oeU1$b>BQ**8gI48MTAl%AX)a<{nh4>LXLZF{O>8)D;!Uj@1u5|zMQ)}_3Ko-PQJ7# zzeoB76AkYWiw(N0vv;GY#$GB!#Zu}sAMFmFxDbsDwW{o*Z6}f%9Qd5mX#hF&4WOmN z^AsU=w^!%|5bJI5a$$=s?3T-i;&48vw792~*RSsQ187m*A> zD;tRPD2Vp+^?xl?UahZg8h9&XOF}^|w1LE=zS%D^jYOe{$hTu#=p5ipe;-SJ&N?EG zRNB|a*Um5Vw>-7j%sUC1*=Jcm6S|@UGgnSh`vL6Et>j_H=0k(}%V(RiQ@Qpn^m(@4 z3wa7)eAl1~F{ff;)U@kYRDST?pvtrBguRQ}+mWj`9S1CMR|B}W60A(|yxxV~1DPE( z(&S~@m}sv{WXdm&F{8q-0QNy(n0FxSYdnq(c`q2RYX`GS9$dm@`cO}p<((v%ls5;% zdd4^$h`rxi>^^iXJgnrT%y~L&2ETb;`L6j`CF^@0T>I`&Uh^7Bn#Io2of%TiHX&Pz zvA^818Roi(zwtEfVb3_P=Z+p%lSL=0cD@cO#_o(41ya>9oykourVOR_ttt73vcZFZ zfZ!u}sOvbcfHCG(EXKqZD_F#?utcHhT<(#b2*BkswK{!r@*`1hlz zibwpPTw<)A3NgXGunR!6Juk7b8kH(f4j6X3=v@(ozBx&4@NwIUkYvFX&fs4M_$}Po z0$!dCt$#*x%E(TZtiMttum&YDxGqNiK$?miR;HnRh*6*wuzUjao&*1f4h;cYxYyTJ4vnZ zYuI@nm6V5NgO%H+Z@N>Qh?g~*$dik2PS)L=aYj&;&6p6RZ6uwz6g1z1HdUo`XiNW{Me9c3Bxgs@S0-yFUo99r2Is(@F0MGba z7W`19-mQ&q?#;YP1=%!0%!XUKd!-jaq=dXpkdooZj4HPT?iltEMy>tBwREzW@5Fo8 zn@%PK=RN;~aPa~1*MBGx$b)@e!z3*t5B*_+O5Sfq_Y%Bk)1L_Q)ULFtvA6CWt~!Hp zTr2KMt}o!n@|SfiUlDJ-0DbqAHx#-Kwsi{OnrUe`(X9S~c=Qae_#>c*s^UgTGsvL4 zjYW`}3^zJr2XM6jv|>%bY9Q9?17(A;9u)Msx!ZnB9{Z3bhOX0t?)>W?-ZH^M>oc`q zzVPz;Kl|3UznZ{$|DV43xsd*E@5;L}a!3s(HJy%~N%<78R<3#;_c_+&{*N2~3918^ Aj{pDw literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001823780106.png b/docs/css/umn/en-us_image_0000001823780106.png new file mode 100644 index 0000000000000000000000000000000000000000..ad260324ef513ebeadd7811b1c9e852856b6b105 GIT binary patch literal 16287 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 Opc9U#kK*iuZvHPyrJZ#E literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001824400680.png b/docs/css/umn/en-us_image_0000001824400680.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5418b29451895bddcfb721bfed409241a12798 GIT binary patch literal 9165 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001824562672.png b/docs/css/umn/en-us_image_0000001824562672.png new file mode 100644 index 0000000000000000000000000000000000000000..4589d008820e543e18ff440e0f5b68642f3b6c2f GIT binary patch literal 13213 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®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 Ke)-+UfBhGl-hfB| literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001870298901.png b/docs/css/umn/en-us_image_0000001870298901.png new file mode 100644 index 0000000000000000000000000000000000000000..8b68ca9033eb48af63b517d6f515fb3db365ad56 GIT binary patch literal 8903 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]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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001870333105.png b/docs/css/umn/en-us_image_0000001870333105.png new file mode 100644 index 0000000000000000000000000000000000000000..a4cf1d413ac278f24fa660444b9c46dfc714fdf8 GIT binary patch literal 12599 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 literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001870378393.png b/docs/css/umn/en-us_image_0000001870378393.png new file mode 100644 index 0000000000000000000000000000000000000000..fe0eb6b843c5e514b9307998ef5cfbb5d9b46400 GIT binary patch literal 12273 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 RWid=fOYQ!>64eJU{u?=d7hwPZ literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_image_0000001871319057.png b/docs/css/umn/en-us_image_0000001871319057.png new file mode 100644 index 0000000000000000000000000000000000000000..18765b94a8ad816e19e6d3901e7cab2c09ce8a7d GIT binary patch literal 13358 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 VXIp4T(w{Gz=~YYP@+)^9{x1o$ytDuS literal 0 HcmV?d00001 diff --git a/docs/css/umn/en-us_topic_0000001476817894.html b/docs/css/umn/en-us_topic_0000001476817894.html new file mode 100644 index 00000000..e4ad9a18 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476817894.html @@ -0,0 +1,12 @@ + + +

How Do I Obtain the Security Certificate of CSS?

+

The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. The cluster list is displayed.
  3. Click the name of a cluster to go to the cluster details page.
  4. On the Configuration page, click Download Certificate next to Security Mode.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476817902.html b/docs/css/umn/en-us_topic_0000001476817902.html new file mode 100644 index 00000000..fb758719 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476817902.html @@ -0,0 +1,22 @@ + + +

Clusters

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001476817906.html b/docs/css/umn/en-us_topic_0000001476817906.html new file mode 100644 index 00000000..1a5006cb --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476817906.html @@ -0,0 +1,16 @@ + + +

How Do I Convert the Format of a CER Security Certificate?

+

The security certificate (CloudSearchService.cer) can be downloaded only for security clusters that have enabled HTTPS access. Most software supports certificates in the .pem or .jks format. You need to convert the format of the CSS security certificate.

+
  • Run the following command to convert the security certificate from .cer to .pem:
    openssl x509 -inform der -in CloudSearchService.cer –out newname.pem
    +
  • Run the following command to convert the security certificate from .cer to .jks:
    keytool -import -alias newname -keystore ./truststore.jks -file ./CloudSearchService.cer 
    +
+

In the preceding commands, newname indicates the user-defined certificate name.

+

After the command is executed, set the certificate password and confirm the password as prompted. Securely store the password. It will be used for accessing the cluster.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476817910.html b/docs/css/umn/en-us_topic_0000001476817910.html new file mode 100644 index 00000000..7a7a0f54 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476817910.html @@ -0,0 +1,20 @@ + + +

How Do I Set the search.max_buckets Parameter for an ES Cluster?

+

Function

If the query results on shards exceed the upper limit of records that can be returned (default value: 10000), you need to increase the limit by changing the value of search.max_buckets.

+
+

Solution

Run the following command on the Dev Tools page of Kibana:
PUT _cluster/settings
+{
+    "persistent": {
+        "search.max_buckets": 20000
+    }
+}
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476817914.html b/docs/css/umn/en-us_topic_0000001476817914.html new file mode 100644 index 00000000..f9599ab4 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476817914.html @@ -0,0 +1,22 @@ + + +

Can I Restore a Deleted Cluster?

+

Yes. You can use a snapshot stored in OBS to restore a cluster. A deleted cluster that has no snapshots in OBS cannot be restored. Exercise caution when deleting a cluster.

+

To restore a deleted cluster, perform the following steps:

+
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the displayed Clusters page, click Create Cluster in the upper right corner to create a cluster and enable the snapshot function. Set the OBS bucket and backup path to those of the cluster to be restored.

    To restore a deleted cluster to an existing cluster, set the OBS bucket and backup path to those of the deleted cluster.

    +

    To restore a deleted cluster to a new cluster, ensure they are in the same region. The new cluster version must be the same as or later than that of the deleted cluster. The number of nodes in the new cluster must be greater than half of that in the deleted cluster. Otherwise, the cluster may fail to be restored.

    +
    +
  3. If the status of the new cluster changes to Available, click the cluster name to go to the Cluster Information page.
  4. In the navigation pane on the left, choose Cluster Snapshots.

    In the snapshot management list, you can view the snapshot information of the deleted cluster. If no information is displayed, wait for several minutes and refresh the page.

    +
  5. Locate the target snapshot and click Restore in the Operation column. The Restore page is displayed.
  6. On the Restore page, set restoration parameters.

    Index: Enter the name of the index you want to restore. If you do not specify any index name, data of all indexes will be restored. The value can contain 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?) are not allowed.

    +

    Rename Pattern: Enter a regular expression. Indexes that match the regular expression are restored. The default value index_(.+) indicates restoring data of all indices. The value contains 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed.

    +

    Rename Replacement: Enter the index renaming rule. The default value restored_index_$1 indicates that restored_ is added in front of the names of all restored indexes. The value can contain 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed. You can set Rename Replacement only if you have specified Rename Pattern.

    +

    Cluster: Select the cluster that you want to restore. You can select the current cluster or others. However, you can only restore the snapshot to clusters whose status is Available. If the status of the current cluster is Unavailable, you cannot restore the snapshot to the current cluster. If you select another cluster and two or more indexes in the cluster have the same name, data of all indices with the same name as the name you specify will be overwritten. Therefore, exercise caution when you set the parameters.

    +
    Figure 1 Restoring a snapshot
    +
  7. Click OK. If restoration succeeds, Task Status of the snapshot in the snapshot list will change to Restoration succeeded, and the index data is generated again according to the snapshot information.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476817918.html b/docs/css/umn/en-us_topic_0000001476817918.html new file mode 100644 index 00000000..4c197cc7 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476817918.html @@ -0,0 +1,21 @@ + + + +

Ports

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001476977542.html b/docs/css/umn/en-us_topic_0000001476977542.html new file mode 100644 index 00000000..cab7be28 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476977542.html @@ -0,0 +1,20 @@ + + +

Why Does My ECS Fail to Connect to a Cluster?

+

Perform the following steps to troubleshoot this problem:

+
  1. Check whether the ECS instance and cluster are in the same VPC.
    • If they are, go to 2.
    • If they are not, create an ECS instance and ensure that the ECS instance is in the same VPC as the cluster.
    +
  2. View the security group rule setting of the cluster to check whether port 9200 (TCP protocol) is allowed or port 9200 is included in the port range allowed in both the outbound and inbound directions.
    • If it is allowed, go to 3.
    • If it is not allowed, switch to the VPC management console and configure the security group rule of the cluster to allow port 9200 in both the outbound and inbound directions.
    +
  3. Check whether the ECS instance has been added to a security group.
    • If the instance has been added to a security group, check whether the security group configuration rules are appropriate. You can view the Security Group information on the Basic Information tab page of the cluster. Then, go to step 4.
      Figure 1 Viewing security group information
      +
    • If the instance has not been added to the security group, go to the VPC page from the ECS instance details page, select a security group, and add the ECS to the group.
    +
  4. Check whether the ECS instance can connect to the cluster.
    ssh <Private network address and port number of a node>

    If the cluster contains multiple nodes, check whether the ECS can be connected to each node in the cluster.

    +
    +
    +
    • If the connection is normal, the network is running properly.
    • If the connection still fails, contact technical support.
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476977546.html b/docs/css/umn/en-us_topic_0000001476977546.html new file mode 100644 index 00000000..c087c97d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476977546.html @@ -0,0 +1,17 @@ + + +

How Does CSS Ensure Data and Service Security?

+

CSS uses network isolation, in addition to various host and data security measures.

+
  • Network isolation

    The entire network is divided into two planes: service plane and management plane. The two planes are deployed and isolated physically to ensure the security of the service and management networks.

    +
    • Service plane: This is the network plane of the cluster. It provides service channels for users and delivers data definitions, indexing, and search capabilities.
    • Management plane: This is the management console, where you manage CSS.
    +
  • Host security

    CSS provides the following security measures:

    +
    • The VPC security group ensures the security of the hosts in a VPC.
    • Network access control lists (ACLs) allow you to control what data can enter or exit your network.
    • The internal security infrastructure (including the network firewall, intrusion detection system, and protection system) monitors all network traffic that enters or exits the VPC through an IPsec VPN.
    +
  • Data security

    Multiple replicas, cross-AZ deployment of clusters, and third-party (OBS) backup of index data ensure the security of user data.

    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476977550.html b/docs/css/umn/en-us_topic_0000001476977550.html new file mode 100644 index 00000000..d6778ef8 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476977550.html @@ -0,0 +1,12 @@ + + +

Can I Install Search Guard on CSS?

+

CSS does not currently support installation of Search Guard.

+

CSS provides clusters in security mode, which have the same functions as Search Guard.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476977554.html b/docs/css/umn/en-us_topic_0000001476977554.html new file mode 100644 index 00000000..f7d0e4b9 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476977554.html @@ -0,0 +1,11 @@ + + +

What Are the Impacts If an Elasticsearch Cluster Has Too Many Shards?

+
  1. A large number of shards in a cluster slows down shard creation.
  2. If automatic index creation is enabled, slow index creation may cause a large number of write requests to be stacked in the memory or result in a cluster break down.
  3. If there are too many shards and you cannot properly monitor workloads, the number of records in a single shard may exceed the threshold, and write requests may be denied.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476977558.html b/docs/css/umn/en-us_topic_0000001476977558.html new file mode 100644 index 00000000..8b727fb2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476977558.html @@ -0,0 +1,19 @@ + + +

How Do I Configure the Threshold for CSS Slow Query Logs?

+

The slow query log settings of CSS are the same as those of Elasticsearch. You can configure slow query logs via the _settings API. For example, you can run the following command in Kibana to set the index level:

+
PUT /my_index/_settings
+{
+    "index.search.slowlog.threshold.query.warn": "10s",
+    "index.search.slowlog.threshold.fetch.debug": "500ms",
+    "index.indexing.slowlog.threshold.index.info": "5s"
+}
+
  • If a query takes longer than 10 seconds, a WARN log will be generated.
  • If retrieval takes longer than 500 milliseconds, a DEBUG log will be generated.
  • If an index takes longer than 5 seconds, an INFO log will be generated.
+

For details, visit the official website: https://www.elastic.co/guide/cn/elasticsearch/guide/current/logging.html

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001476977562.html b/docs/css/umn/en-us_topic_0000001476977562.html new file mode 100644 index 00000000..3e2c19e4 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001476977562.html @@ -0,0 +1,18 @@ + + +

Can I Change the Number of Shards to Four with Two Replicas When There Is One Shard Set in the JSON File?

+

Once an index is created, the number of primary shards cannot be changed.

+

You can run the following command in Kibana to change the number of replicas:

+
PUT /indexname/_settings
+{
+"number_of_replicas":1       //Number of replicas
+}
+

index specifies the index name. Set this parameter based on site requirements.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477137526.html b/docs/css/umn/en-us_topic_0000001477137526.html new file mode 100644 index 00000000..d9f38e6e --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477137526.html @@ -0,0 +1,16 @@ + + +

Does the Value i of node.roles Indicate an Injest Node?

+

Function

If the value of node.roles of a client node is i, then is this client node an injest node?
  • Are there coordinating only nodes in clusters? Are the client requests distributed to coordinating nodes?
  • Are ingest nodes in the idle state when there are no ingest requests?
+
+
+

Solution

If the value of node.roles of a client node is i, the ingest node mode is enabled.

+
  • The coordinating only nodes of Elasticsearch are called client nodes in CSS. If a cluster has no client nodes, client requests will be distributed to all nodes.
  • An ingest node functions as a set of ELK for data conversion. If there is no ingest requests, ingest nodes are not in the idle state.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477137530.html b/docs/css/umn/en-us_topic_0000001477137530.html new file mode 100644 index 00000000..f7b84649 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477137530.html @@ -0,0 +1,43 @@ + + + +

Functions

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001477137534.html b/docs/css/umn/en-us_topic_0000001477137534.html new file mode 100644 index 00000000..af0751c3 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477137534.html @@ -0,0 +1,32 @@ + + +

General Consulting

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477137538.html b/docs/css/umn/en-us_topic_0000001477137538.html new file mode 100644 index 00000000..1de81837 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477137538.html @@ -0,0 +1,11 @@ + + +

What Is the Relationship Between the Filebeat Version and Cluster Version?

+
  • Non-security mode: no restrictions.
  • Cluster in security mode: The Filebeat OSS version must match the cluster version. For details on how to download the Filebeat OSS version, see Past Releases of Elastic Stack Software.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477137542.html b/docs/css/umn/en-us_topic_0000001477137542.html new file mode 100644 index 00000000..62cfa3ab --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477137542.html @@ -0,0 +1,12 @@ + + +

Can I Upgrade a Cluster from an Earlier Version to a Later Version?

+

A cluster cannot be directly upgraded. You can purchase a cluster of a later version and migrate your data to it.

+
  1. Creating a Cluster: Create a cluster of a later version in the region where your current cluster is deployed.
  2. Migrating a Cluster: Migrate your cluster by backing data up and restoring indexes.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477137546.html b/docs/css/umn/en-us_topic_0000001477137546.html new file mode 100644 index 00000000..c45bf09a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477137546.html @@ -0,0 +1,17 @@ + + +

How Can I Manage CSS?

+
You can use any of the following three methods to manage CSS or to use search engine APIs. You can initiate requests based on constructed request messages.
  • curl

    curl is a command-line tool used to transfer data to or from a given URL. It serves as an HTTP client that can send HTTP requests to the HTTP server and receive response messages. You can also use curl to debug APIs. For more information about curl, visit https://curl.haxx.se/.

    +
  • Code

    You can call APIs through code to assemble, send, and process request messages.

    +
  • REST client

    Both Mozilla Firefox and Google Chrome provide a graphical browser plugin, the REST client, which you can use to send and process requests.

    +

    – For Mozilla Firefox, see Firefox REST Client.

    +

    – For Google Chrome, see Postman.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477297334.html b/docs/css/umn/en-us_topic_0000001477297334.html new file mode 100644 index 00000000..89caabd3 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477297334.html @@ -0,0 +1,29 @@ + + +

How Do I Update the CSS Lifecycle Policy?

+

The CSS lifecycle is implemented using the Index State Management (ISM) of Open Distro. For details about how to configure policies related to the ISM template, see the Open Distro documentation.

+
  1. When a policy is created, the system writes a record to the .opendistro-ism-config index. In the record, _id is the policy name, and the content is the policy definition.
    Figure 1 Writing a data record
    +
  2. After a policy is bound to an index, the system writes another record to the .opendistro-ism-config index. The following figure shows the initial status of a record.
    Figure 2 Initial data status
    +
  3. Run the explain command. Only a policy ID will be returned.
    GET _opendistro/_ism/explain/data2 
    +{
    +  "data2" : {
    +    "index.opendistro.index_state_management.policy_id" : "policy1"
    +  }
    +}
    +

    Open Distro will execute an initialization process to fill the policy content in the record. The following figure shows the initialized data.

    +
    Figure 3 Initialized data
    +

    After the initialization, min_index_age in the policy will be copied.

    +

    The initialized index uses a copy of this policy. The policy update will not take effect on the index.

    +
    +
  1. After the policy is modified, call the change_policy API to update the policy.
    POST _opendistro/_ism/change_policy/data1
    +{
    +  "policy_id": "policy1"
    +}
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477297338.html b/docs/css/umn/en-us_topic_0000001477297338.html new file mode 100644 index 00000000..517bb7d7 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477297338.html @@ -0,0 +1,11 @@ + + +

Can I Associate My EIP If I Want to Access the Cluster from the Internet?

+

No. To access a cluster from the Internet, see Public IP Address Access.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477297346.html b/docs/css/umn/en-us_topic_0000001477297346.html new file mode 100644 index 00000000..fd47c8ce --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477297346.html @@ -0,0 +1,11 @@ + + +

Can I Use x-pack-sql-jdbc to Access CSS Clusters and Query Data?

+

No. Currently, CSS does not integrate the x-pack component.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477297350.html b/docs/css/umn/en-us_topic_0000001477297350.html new file mode 100644 index 00000000..52611362 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477297350.html @@ -0,0 +1,12 @@ + + +

What Can the Disk Space of a CSS Cluster Be Used For?

+

You can store the following logs and files:

+
  • Log files: Elasticsearch logs
  • Data files: Elasticsearch index files
  • Other files: cluster configuration files
  • OS: 5% storage space reserved for the OS by default
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477297354.html b/docs/css/umn/en-us_topic_0000001477297354.html new file mode 100644 index 00000000..cec3c467 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477297354.html @@ -0,0 +1,25 @@ + + +

What Data Compression Algorithms Does CSS Use?

+

CSS supports two data compression algorithms: LZ4 (by default) and best_compression.

+
  • LZ4 algorithm

    LZ4 is the default compression algorithm of Elasticsearch. This algorithm can compress and decompress data quickly, but its compression ratio is low.

    +

    LZ4 scans data with a 4-byte window, which slides 1 byte forward at a time. Duplicate data is compressed. This algorithm applies to scenarios where a large amount of data to be read while a small amount of data to be written.

    +
  • best_compression algorithm

    This algorithm can be used when a large amount of data is written and the index storage cost is high, such as logs and time sequence analysis. This algorithm can greatly reduce the index storage cost.

    +
+
Run the following command to switch the default compression algorithm (LZ4) to best_compression:
PUT index-1
+{
+    "settings": {
+        "index": {
+            "codec": "best_compression"
+        }
+    }
+}
+
+

The LZ4 algorithm can quickly compress and decompress data while the best_compression algorithm has a higher compression and decompression ratio.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477297358.html b/docs/css/umn/en-us_topic_0000001477297358.html new file mode 100644 index 00000000..3b6fab80 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477297358.html @@ -0,0 +1,13 @@ + + +

How Do I Set the Numbers of Index Copies to 0 in Batches?

+
  1. Log in to the Kibana page of the cluster. In the navigation pane, choose Dev Tools.
  2. Modify and run the PUT /*/_settings{"number_of_replicas":0} command.

    Do not directly run the preceding command, because the asterisk (*) may match security indexes. You are advised to specify the index required for the batch operation. Example: PUT /test*/_settings{"number_of_replicas":0}

    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477297362.html b/docs/css/umn/en-us_topic_0000001477297362.html new file mode 100644 index 00000000..4348d536 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477297362.html @@ -0,0 +1,11 @@ + + +

Can a New Cluster Use the IP Address of the Old Cluster?

+

No.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419712.html b/docs/css/umn/en-us_topic_0000001477419712.html new file mode 100644 index 00000000..91551284 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419712.html @@ -0,0 +1,17 @@ + + +

Enhanced Cluster Monitoring

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477419716.html b/docs/css/umn/en-us_topic_0000001477419716.html new file mode 100644 index 00000000..9dfeb586 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419716.html @@ -0,0 +1,74 @@ + + +

Cluster Planning for Vector Retrieval

+

Off-heap memory is used for index construction and query in vector retrieval. Therefore, the required cluster capacity is related to the index type and off-heap memory size. You can estimate the off-heap memory required by full indexing to select proper cluster specifications. The memory usage of vector search is high, CSS disables the vector search plug-in by default for clusters whose memory is 8 GB or less.

+
There are different methods for estimating the size of off-heap memory required by different types of indexes. The calculation formulas are as follows:
  • GRAPH Index

    +

    If you need to update indexes in real time, consider the off-heap memory overhead required for vector index construction and automatic merge. The actual size of required mem_needs is at least 1.5 to 2 times of the original estimation.

    +
    +
  • PQ Index

    +
  • FALT and IVF Indexes

    +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Description

+

dim

+

Vector dimensions

+

neighbors

+

Number of neighbors of a graph node. The default value is 64.

+

dim_size

+

Number of bytes required by each dimension. The default value is four bytes in the float type.

+

num

+

Total number of vectors

+

delta

+

Metadata size. This parameter can be left blank.

+

frag_num

+

Number of vector segments during quantization and coding. If this parameter is not specified when an index is created, the value is determined by the vector dimension dim.

+
if dim <= 256: 
+  frag_num = dim / 4
+elif dim <= 512: 
+  frag_num = dim / 8
+else :
+  frag_num = 64
+

frag_size

+

Size of the center point during quantization and coding. The default value is 1. If the value of frag_num is greater than 256, the value of frag_size is 2.

+
+
+
+

These calculation methods can estimate the size of off-heap memory required by a complete vector index. To determine cluster specifications, you also need to consider the heap memory overhead of each node.

+

Heap memory allocation policy: The size of the heap memory of each node is half of the node physical memory, and the maximum size is 31 GB.

+

For example, if you create a Graph index for the SIFT10M dataset, set dim to 128, dim_size to 4, neighbors to default value 64, and num to 10 million, the off-heap memory required by the Graph index is as follows:

+

+

Considering the overhead of heap memory, a single server with 8 vCPUs and 16 GB memory is recommended. If real-time write or update is required, you need to apply for larger memory.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419720.html b/docs/css/umn/en-us_topic_0000001477419720.html new file mode 100644 index 00000000..28f24327 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419720.html @@ -0,0 +1,107 @@ + + +

Access Statistics and Traffic Control Information Query

+

Flow control can be implemented via an independent API.

+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run the commands to query traffic control information.
    • Check the traffic control status of all nodes.
      GET /_nodes/stats/filter/v2
      +
    • View traffic control details of all nodes.
      GET /_nodes/stats/filter/v2?detail
      +
    • View the traffic control status of a specific node.
      GET /_nodes/{nodeId}/stats/filter/v2
      +

      {nodeId} indicates the ID of the node you want to check.

      +

      Example response:

      +
      {
      +  "_nodes" : {
      +    "total" : 1,
      +    "successful" : 1,
      +    "failed" : 0
      +  },
      +  "cluster_name" : "css-xxxx",
      +  "nodes" : {
      +    "d3qnVIpPTtSoadkV0LQEkA" : {
      +      "name" : "css-xxxx-ess-esn-1-1",
      +      "host" : "192.168.x.x",
      +      "timestamp" : 1672236425112,
      +      "flow_control" : {
      +        "http" : {
      +          "current_connect" : 52,
      +          "rejected_concurrent" : 0,
      +          "rejected_rate" : 0,
      +          "rejected_black" : 0,
      +          "rejected_breaker" : 0
      +        },
      +        "access_items" : [
      +          {
      +            "remote_address" : "10.0.0.x",
      +            "search_count" : 0,
      +            "bulk_count" : 0,
      +            "other_count" : 4
      +          }
      +        ],
      +        "holding_requests" : 0
      +      }
      +    }
      +  }
      +}
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Response parameters

      Parameter

      +

      Description

      +

      current_connect

      +

      Number of HTTP connections of a node, which is recorded even if flow control is disabled. This value is equal to the current_open value of GET /_nodes/stats/http API. It includes the current client connections of nodes.

      +

      rejected_concurrent

      +

      Number of concurrent connections rejected during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

      +

      rejected_rate

      +

      Number of new connections rejected during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

      +

      rejected_black

      +

      Number of requests rejected based on the blacklist during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

      +

      rejected_breaker

      +

      Number of rejected new connections after one-click traffic blocking is enabled.

      +

      remote_address

      +

      IP addresses and the number of requests.

      +

      search_count

      +

      Number of times that a client accessed a database using _search and _msearch.

      +

      bulk_count

      +

      Number of times that a client accessed a database using _bulk.

      +

      other_count

      +

      Number of times that a client accessed a database using other requests.

      +
      +
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419724.html b/docs/css/umn/en-us_topic_0000001477419724.html new file mode 100644 index 00000000..3f96d552 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419724.html @@ -0,0 +1,161 @@ + + +

Deploying a Cross-AZ Cluster

+

To prevent data loss and minimize the cluster downtime in case of service interruption, CSS supports cross-AZ cluster deployment. When creating a cluster, you can select two or three AZs in the same region. The system will automatically allocate nodes to these AZs.

+

Allocating Nodes

If you select two or three AZs when creating a cluster, CSS automatically enables the cross-AZ HA function and properly allocates nodes to different AZs. Table 1 describes how the nodes are allocated.

+
  • When creating a cluster, ensure that the number of selected nodes is no less than the number of AZs. Otherwise, cross-AZ deployment is not supported.
  • If you enable master nodes when deploying a cross-AZ cluster, the master nodes will also be distributed to different AZs.
  • The node quantity difference between any two AZs is no more than one.
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Number of nodes and AZ distribution

Nodes

+

Single AZ

+

Two AZs

+

Three AZs

+

AZ1

+

AZ1

+

AZ2

+

AZ1

+

AZ2

+

AZ3

+

1

+

1

+

Not supported

+

Not supported

+

2

+

2

+

1

+

1

+

Not supported

+

3

+

3

+

2

+

1

+

1

+

1

+

1

+

4

+

4

+

2

+

2

+

2

+

1

+

1

+

...

+

...

+

...

+

...

+

...

+

...

+

...

+
+
+
+

Setting Replicas

Setting replicas enables clusters to effectively use the HA capability of AZs.

+
  • In two-AZ deployment, if one AZ becomes unavailable, the other AZ continues to provide services. In this case, at least one replica is required. Elasticsearch has one replica by default. You can retain the default value if you do not require higher read performance.
  • In three-AZ deployment, if one AZ becomes unavailable, the other AZs continue to provide services. In this case, at least one replica is required. Elasticsearch has one replica by default. If you need more replicas to improve the cluster's ability to handle queries, modify settings to change the number of replicas.

    You can run the following command to modify the number of index replicas:

    +

    curl -XPUT http://ip:9200/{index_name}/_settings -d '{"number_of_replicas":2}'

    +

    Alternatively, run the following command to specify the number of replicas in the template:

    +

    curl -XPUT http://ip:9200/ _template/templatename -d '{ "template": "*", "settings": {"number_of_replicas": 2}}'

    +
+
  • ip: private network address
  • index_name: index name
  • number_of_replicas: number of replicas after modification. The value in the preceding command indicates that two replicas are required.
+
+
+

Possible Service Interruptions

The following table describes the possible service interruptions when an AZ of a two- or three-AZ cluster is faulty.

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 2 Possible service interruptions

AZs

+

Master Nodes

+

Service Interruption Analysis

+

2

+

0

+
  • When the number of nodes is an even number:
    • If half of data nodes are faulty, replace one node in the faulty AZ before you select the master node.
    +
  • When the number of nodes is an odd number:
    • If the faulty AZ contains one more node than the normal AZ, you need to replace one node in the faulty AZ before you select the master node. For details about how to replace nodes, contact technical support.
    • If the faulty AZ contains one less node than the normal AZ, services will not be interrupted and you can select the master node.
    +
+

2

+

3

+

There is a 50% possibility for service interruption. When two dedicated master nodes are allocated to one AZ and another master node is allocated to the other AZ:

+
  • If service interruption happens in the AZ with one master node, you can select a master node from the AZ that has two dedicated master nodes.
  • If service interruption happens in the AZ with two dedicated master nodes, you have no choice in the remaining AZ, because it has only one dedicated master node. In this case, services will be interrupted and you need to contact technical support.
+

3

+

0

+

If you configure four nodes in three AZs, each AZ will have at least one node. If the AZ with two nodes is faulty, the services will be interrupted. You are not advised configuring four nodes when selecting three AZs.

+

Generally, service interruption will not occur.

+

3

+

3

+

Service interruption does not occur.

+
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419728.html b/docs/css/umn/en-us_topic_0000001477419728.html new file mode 100644 index 00000000..8994565d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419728.html @@ -0,0 +1,17 @@ + + +

Logging In to Kibana

+

After creating a CSS cluster, you can log in to Kibana through the console or public network.

+

Kibana Usage Restrictions

You can customize the username, role name, and tenant name in Kibana.

+
+

Procedure

  • Logging in to the console
    1. Log in to the CSS management console.
    2. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column to go to the Kibana login page.
      • Non-security cluster: The Kibana console is displayed.
      • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the one specified during cluster creation.
      +
    3. After the login is successful, you can access the Elasticsearch cluster through Kibana.
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419736.html b/docs/css/umn/en-us_topic_0000001477419736.html new file mode 100644 index 00000000..788c5437 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419736.html @@ -0,0 +1,104 @@ + + +

Memory Flow Control

+

Context

Elasticsearch provides a circuit breaker, which will terminate requests or return the error code 429 if the memory usage exceeds its threshold. However, the circuit breaker rejects a request only after the node reads the entire request, which occupies heap memory. To prevent a request from being fully received by a node before the request is rejected, you can control the client traffic based on the real-time status of the node heap memory.

+
+

Parameter Description

The following table describes memory flow control parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Memory flow control parameters

Parameter

+

Type

+

Description

+

flowcontrol.memory.enabled

+

Boolean

+

Whether to enable memory flow control. After this function is enabled, the memory usage is continuously monitored. The value can be:

+
  • true
  • false (default value)
+

flowcontrol.memory.heap_limit

+

String

+

Maximum global heap memory usage of a node. If the value of this parameter is exceeded, traffic backpressure is performed.

+

Value range: 10%–100%

+

Default value: 90%

+

flowcontrol.holding.in_flight_factor

+

Float

+

Backpressure release factor. The principle is similar to that of the circuit breaker parameter network.breaker.inflight_requests.overhead. When the memory usage reaches the limit, a larger value indicates stronger backpressure. The write traffic will be limited.

+

Value range: ≥ 0.5

+

Default value: 1.0

+

flowcontrol.holding.max

+

TimeValue

+

Maximum delay of each request. If the delay exceeds the value of this parameter, you can disconnect the request backpressure or disconnect the request link. For details, see the configuration of flowcontrol.holding.max_strategy.

+

Value range: ≥ 15s

+

Default value: 60s

+

flowcontrol.holding.max_strategy

+

String

+

Policy after the maximum delay time is exceeded. The value can be:

+
  • keep (default value): If the heap memory is still high, continue the backpressure. The server determines when to execute the request based on the real-time memory.
  • soft: The requests will be executed even if the heap memory is still high. The inFlight circuit breaker will determine whether to execute or reject the requests.
  • hard: If the heap memory is still high, requests will be discarded and the client connection of the requests will be disconnected.
+

flowcontrol.memory.once_free_max

+

String

+

Maximum memory that can be opened at a time for a suspended request queue. This parameter is used to prevent a cluster from being entirely suspended due to temporary low memory under high pressure.

+

Value range: 1 to 50

+

Default value: 10%

+

flowcontrol.memory.nudges_gc

+

Boolean

+

Whether to trigger garbage collection to ensure write stability when the write pressure is too high. (The backpressure connection pool is checked every second. The write pressure is regarded high if all the existing connections are blocked and new write requests cannot be released.) The value can be:

+
  • true (default value)
  • false
+
+
+
  • flowcontrol.memory.enabled and flowcontrol.memory.heap_limit are the most important parameters. enabled indicates the memory flow control switch, and heap_limit indicates the heap memory threshold of a node.
  • The default value 90% of flowcontrol.memory.heap_limit is a conservative threshold. When the heap memory usage is greater than 90%, the system stops reading large requests that exceed 64 KB from the client until the heap memory decreases. If the heap memory decreases to 85%, the maximum client data that can be read is 5% of the maximum heap memory. If the heap memory usage has been higher than 90% for a long time, client connection requests cannot be read. In this case, the GC algorithm is triggered to perform garbage collection until the heap memory usage is lower than the threshold.
  • Generally, you can set the flowcontrol.memory.heap_limit threshold to 80% or less to ensure that the node has certain heap memory for operations besides data writing, such as Elasticsearch query and segment merge.
+
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable memory flow control.
    • Enable memory flow control
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.memory.enabled": true,
      +    "flowcontrol.memory.heap_limit": "80%"
      +  }
      +}
      +
    • Disable cluster memory flow control
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.memory.enabled": false
      +  }
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419740.html b/docs/css/umn/en-us_topic_0000001477419740.html new file mode 100644 index 00000000..09732675 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419740.html @@ -0,0 +1,15 @@ + + +

Monitoring

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477419744.html b/docs/css/umn/en-us_topic_0000001477419744.html new file mode 100644 index 00000000..49be2a8c --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419744.html @@ -0,0 +1,92 @@ + + +

CPU Flow Control

+

Context

CPU flow control can be implemented based on the CPU usage of a node.

+

You can configure the CPU usage threshold of a node to prevent the node from breaking down due to heavy traffic. You can determine the CPU usage threshold based on the traffic threshold. If the CPU usage of a node exceeds the configured threshold, CPU flow control discards excess node requests to protect the cluster. Traffic within the node or passing through Elasticsearch monitoring APIs are not affected.

+

The following table describes CPU flow control parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 CPU flow control parameters

Parameter

+

Type

+

Description

+

flowcontrol.cpu.enabled

+

Boolean

+

Whether to enable CPU flow control. If this function is enabled, the node access performance may be affected.

+

Value: true or false

+

Default value: false

+

flowcontrol.cpu.percent_limit

+

Integer

+

Maximum CPU usage of a node.

+

Value range: 0–100

+

Default value: 90

+

flowcontrol.cpu.allow_path

+

List

+

Path whitelist for CPU flow control. The paths specified in the allow_path whitelist are not under CPU flow control.

+

The default value is null.

+

A path can contain up to 32 characters. A maximum of 10 request paths can be configured. Wildcard characters are supported. For example, if this parameter is set to auto_*/_search, all the search requests of the indexes prefixed with auto_ are not under the flow control.

+

flowcontrol.cpu.*.filter_path

+

String

+

Paths under CPU flow control.

+

Maximum length: 32 characters

+

Example:

+

"flowcontrol.cpu.search.filter_path": "/index/_search",

+

"flowcontrol.cpu.search.limit": 60,

+

The default value is **, indicating all paths. If limit is configured and filter_path is not, it indicates that all the paths, except those in the whitelist, are under control. The whitelist takes precedence over the single-path rule. If a path is specified in both allow_path and filter_path, the requests from the path will be allowed.

+

For example, if both filter_path and allow_path both set to abc/_search, then abc/_search will not be under flow control.

+

flowcontrol.cpu.*.limit

+

Integer

+

CPU threshold of request paths. If the CPU usage exceeds the threshold, flow control will be triggered.

+

Value range: 0–100

+

Default value: 90

+
+
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable memory flow control.
    • Enabling CPU flow control
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.cpu.enabled": true,
      +    "flowcontrol.cpu.percent_limit": 80,
      +    "flowcontrol.cpu.allow_path": ["index/_search"]
      +  }
      +}
      +
    • Disabling CPU flow control
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.cpu.enabled": false
      +  }
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419748.html b/docs/css/umn/en-us_topic_0000001477419748.html new file mode 100644 index 00000000..ff72bfa1 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419748.html @@ -0,0 +1,70 @@ + + +

P99 Latency Monitoring

+

Context

The Elasticsearch community only discusses how to monitor the average latency of search requests, which cannot reflect the actual search performance of a cluster. To enhance monitoring, CSS allows you to monitor the P99 latency of search requests in clusters.

+
+

Prerequisites

Currently, only clusters of version 7.6.2 and 7.10.2 support P99 latency monitoring.

+
+

Obtaining Monitoring Information

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation tree on the left, choose Dev Tools and run the following command to check the P99 latency of the current cluster:
    GET /search/stats/percentile 
    +

    Example response:

    +
    {
    +  "overall" : {
    +    "1.0" : 2.0,
    +    "5.0" : 2.0,
    +    "25.0" : 6.5,
    +    "50.0" : 19.5,
    +    "75.0" : 111.0,
    +    "95.0" : 169.0,
    +    "99.0" : 169.0,
    +    "max" : 169.0,
    +    "min" : 2.0
    +  },
    +  "last_one_day" : {
    +    "1.0" : 2.0,
    +    "5.0" : 2.0,
    +    "25.0" : 6.5,
    +    "50.0" : 19.5,
    +    "75.0" : 111.0,
    +    "95.0" : 169.0,
    +    "99.0" : 169.0,
    +    "max" : 169.0,
    +    "min" : 2.0
    +  },
    +  "latest" : {
    +    "1.0" : 26.0,
    +    "5.0" : 26.0,
    +    "25.0" : 26.0,
    +    "50.0" : 26.0,
    +    "75.0" : 26.0,
    +    "95.0" : 26.0,
    +    "99.0" : 26.0,
    +    "max" : 26.0,
    +    "min" : 26.0
    +  }
    +}
    +
    • In the response, overall indicates all the statistics that have been collected since the cluster startup, last_one_day indicates the statistics collected in the last day, and latest indicates the statistics that have been collected since the last reset.
    • The calculated P99 latency is an estimation. It is more precise than the P50 latency.
    • The P99 latency of a cluster is cleared and recalculated if the cluster is restarted.
    +
    +
+
+

Other Operations

  • Define percentage.
    You can run the following command to specify the percentage:
    GET /search/stats/percentile
    +{
    +  "percents": [1, 50, 90]
    +}
    +
    +
  • Reset the latest statistics.
    You can run the following command to reset the latest statistics:
    POST /search/stats/reset
    +
    +

    Example response:

    +
    {
    +  "nodes" : {
    +    "css-c9c8-ess-esn-1-1" : "ok"
    +  }
    +}
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419752.html b/docs/css/umn/en-us_topic_0000001477419752.html new file mode 100644 index 00000000..9097ca1e --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419752.html @@ -0,0 +1,21 @@ + + +

Creating a User and Granting Permissions

+

This section describes how to use a group to grant permissions to a user. Figure 1 shows the process for granting permissions.

+

CSS has two types of user permissions: CSS administrator permission and read-only permission.

+

Prerequisites

Before assigning permissions to user groups, you have learned about the system policies listed in Permissions Management.

+
+

Process Flow

Figure 1 Process of granting CSS permissions
+
  1. Create a user group and assign permissions.

    Create a user group on the IAM console, and assign the CSS permission to the group.

    +
  2. Create an IAM user and add it to a user group.

    Create a user on the IAM console and add the user to the group created in 1. Create a user group and assign permissions.

    +
  3. Log in and verify permissions.

    Log in to the console as the created user, switch to the authorized region, and verify the permissions.

    +
    • Choose Service List > Cloud Search Service. Then click Create Cluster on the CSS console. If the cluster cannot be bought (assuming that the current permissions include only CSS ReadOnlyAccess), the CSS ReadOnlyAccess policy has already taken effect.
    • Choose any other service from Service List. (Assume that the current policy contains only CSS ReadOnlyAccess.) If a message appears indicating insufficient permissions to access the service, the CSS ReadOnlyAccess policy has already taken effect.
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419760.html b/docs/css/umn/en-us_topic_0000001477419760.html new file mode 100644 index 00000000..e749265e --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419760.html @@ -0,0 +1,44 @@ + + +

Features

+

The enhanced aggregation is an optimization feature for service awareness. With this feature, you can optimize the aggregation analysis capability of observable services.

+

Currently, the enhanced aggregation is supported by only clusters of version 7.10.2.

+

Working Principles

In large-scale dataset aggregation and analysis scenarios, data grouping and aggregation takes a lot of time. Improving the grouping aggregation capability depends on the following key features:

+
  • Sorting key: Data is stored in sequence based on the sorting key.
  • Clustering key: It is contained in the sorting key. Data is clustered based on the clustering key.
+

In the case of data clustering, enhanced aggregation uses the vectorization technology to process data in batches, improving aggregation performance.

+ +
+ + + + + + + + + + + + + +
Table 1 Feature parameters

Parameter

+

Description

+

index.search.turbo.enabled

+

Indicates whether to enable the feature. The default value is true.

+

index.sort.field

+

Sorting key

+

index.cluter.field

+

Clustering key

+
+
+
+

Features

Based on different service requirements, enhanced aggregation can be used in the following three scenarios:

+ +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419764.html b/docs/css/umn/en-us_topic_0000001477419764.html new file mode 100644 index 00000000..5247ace1 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419764.html @@ -0,0 +1,86 @@ + + +

Accessing a Cluster from a Kibana Public Network

+

For CSS clusters that have security mode enabled, you can enable Kibana public access. After the configuration is complete, an IP address will be provided to access Kibana of this cluster over the Internet.

+

You can configure Kibana public access during cluster creation, or after a cluster in security mode is created.

+
  • You can enable Security Mode for clusters of version 6.5.4 and later versions.
  • Kibana public access cannot be configured for Elasticsearch clusters created in security mode before this function was rolled out (before June 2020).
  • The whitelist for Kibana public network access depends on the ELB whitelist. After you updated the whitelist, the new settings take effect immediately for new connections. For existing persistent connections using the IP addresses that have been removed from the whitelist, the new settings take effect about 1 minute after these connections are stopped.
+
+

Configuring Kibana Public Access When Creating a Cluster

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner. The Create Cluster page is displayed.
  3. On the Create Cluster page, enable Security Mode.
  4. Set Advanced Settings to Custom, enable Kibana Public Access, and set parameters. +
    + + + + + + + + + + + + + +
    Table 1 Kibana public access parameters

    Parameter

    +

    Description

    +

    Bandwidth

    +

    Bandwidth for accessing Kibana with the public IP address

    +

    Value range: 1 to 100

    +

    Unit: Mbit/s

    +

    Access Control

    +

    If you disable this function, all IP addresses can access Kibana through the public IP address. If you enable this function, only IP addresses or IP address in the whitelist can access Kibana through the public IP address.

    +

    Whitelist

    +

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    +

    You are advised to enable this function.

    +
    +
    +

    After the cluster is created, click the cluster name to go to the Basic Information page. On the Kibana Public Access page, you can view the Kibana public IP address.

    +
+
+

Configuring Kibana Public Access for an Existing Cluster

You can enable, disable, modify, and view Kibana public access for an existing cluster that has security mode enabled.

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  3. Click the Kibana Public Access tab. Turn on the Kibana Public Access switch to enable the Kibana public access function.
  4. On the displayed page, set parameters. +
    + + + + + + + + + + + + + +
    Table 2 Kibana public access parameters

    Parameter

    +

    Description

    +

    Bandwidth

    +

    Bandwidth for accessing Kibana with the public IP address

    +

    Value range: 1 to 100

    +

    Unit: Mbit/s

    +

    Access Control

    +

    If you disable this function, all IP addresses can access Kibana through the public IP address. If you enable this function, only IP addresses or IP address in the whitelist can access Kibana through the public IP address.

    +

    Whitelist

    +

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    +

    You are advised to enable this function.

    +
    +
    +
  5. After you set the parameters, click OK.
+
+

Modifying Kibana Public Access

For clusters configured Kibana public access, you can modify its bandwidth and access control or disable this function.

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  3. Click the Kibana Public Access tab to modify the Kibana public access configuration.
    • Modifying bandwidth

      Click Modify on the right of Bandwidth. On the Modify Bandwidth page, modify the bandwidth and click OK.

      +
    • Modifying access control

      Click Modify on the right of Access Control. On the Modify Access Control page, set Access Control and Whitelist, and click OK.

      +
    • Disabling Kibana public access

      Toggle off the Kibana Public Access switch.

      +
    +
+
+

Accessing Kibana with the Public IP Address

After configuring Kibana public access, you will obtain a public IP address that you can use to access Kibana of this cluster.

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  3. Click the Kibana Public Access tab to obtain the Kibana public IP address.
  4. Use this IP address to access Kibana of this cluster through the Internet.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419768.html b/docs/css/umn/en-us_topic_0000001477419768.html new file mode 100644 index 00000000..bc6f26b2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419768.html @@ -0,0 +1,13 @@ + + +

Permissions Management

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477419772.html b/docs/css/umn/en-us_topic_0000001477419772.html new file mode 100644 index 00000000..31db0bdc --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419772.html @@ -0,0 +1,63 @@ + + +

HTTP Status Code Monitoring

+

Context

When an external system accesses Elasticsearch through the HTTP protocol, a response and the corresponding status code are returned. The open-source Elasticsearch server does not collect the status code, so users cannot monitor Elasticsearch APIs status or cluster request status. CSS allows you to monitor the HTTP status codes of clusters.

+
+

Prerequisites

Currently, only clusters of versions 7.6.2 and 7.10.2 support HTTP status code monitoring.

+
+

Obtaining Status Codes

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation tree on the left, choose Dev Tools.
  4. On the console page of Dev Tools, run commands based on the cluster version.
    • For clusters of version 7.6.2, run the following command to obtain the status code statistics:
      GET /_nodes/http_stats
      +

      Example response:

      +
      {   
      +    "_nodes" : {     
      +      "total" : 1,    
      +      "successful" : 1,     
      +      "failed" : 0   },  
      +     "cluster_name" : "css-8362",   
      +     "nodes" : {     
      +      "F9IFdQPARaOJI7oL7HOXtQ" : {       
      +         "http_code" : {        
      +            "200" : 114,        
      +            "201" : 5,        
      +            "429" : 0,       
      +            "400" : 7,         
      +            "404" : 0,        
      +            "405" : 0      
      +           }     
      +         }   
      +      }
      + }
      +
    • For clusters of version 7.10.2, run the following command to obtain the status code statistics:
      GET _nodes/stats/http 
      +

      Example response:

      +
      {
      +// ...
      +  "cluster_name" : "css-2985",
      +  "nodes" : {
      +// ...
      +    "omvR9_W-TsGApraMApREjA" : {
      +
      +// ...
      +      "http" : {
      +        "current_open" : 4,
      +        "total_opened" : 37,
      +        "http_code" : {
      +          "200" : 25,
      +          "201" : 7,
      +          "429" : 0,
      +          "400" : 3,
      +          "404" : 0,
      +          "405" : 0
      +        }
      +      }
      +    }
      +  }
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477419776.html b/docs/css/umn/en-us_topic_0000001477419776.html new file mode 100644 index 00000000..2ef23796 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477419776.html @@ -0,0 +1,37 @@ + + +

Connecting User-Built Kibana to an Elasticsearch Cluster

+

To interconnect user-built Kibana with CSS Elasticsearch clusters, the following conditions must be met:

+
  • The local environment must support access from external networks.
  • Kibana is built using ECS in the same VPC as Elasticsearch. Kibana can be accessed from the local public network.
  • Only Kibana images of the OSS version can be connected to Elasticsearch on CSS.
+

Example of a Kibana configuration file:

+
  • Security mode:
    elasticsearch.username: "***"
    +elasticsearch.password: "***"
    +elasticsearch.ssl.verificationMode: none
    +server.ssl.enabled: false
    +server.rewriteBasePath: false
    +server.port: 5601
    +logging.dest: /home/Ruby/log/kibana.log
    +pid.file: /home/Ruby/run/kibana.pid
    +server.host: 192.168.xxx.xxx
    +elasticsearch.hosts: https://10.0.0.xxx:9200
    +elasticsearch.requestHeadersWhitelist: ["securitytenant","Authorization"]
    +opendistro_security.multitenancy.enabled: true
    +opendistro_security.multitenancy.tenants.enable_global: true
    +opendistro_security.multitenancy.tenants.enable_private: true
    +opendistro_security.multitenancy.tenants.preferred: ["Private", "Global"]
    +opendistro_security.multitenancy.enable_filter: false
    +
    +
    +
  • Non-security mode
    server.port: 5601
    +logging.dest: /home/Ruby/log/kibana.log
    +pid.file: /home/Ruby/run/kibana.pid
    +server.host: 192.168.xxx.xxx
    +elasticsearch.hosts: http://10.0.0.xxx:9200
    +
+
+
+ +
+ diff --git a/docs/css/umn/css_01_0183.html b/docs/css/umn/en-us_topic_0000001477419788.html similarity index 96% rename from docs/css/umn/css_01_0183.html rename to docs/css/umn/en-us_topic_0000001477419788.html index 14302a97..4bf3f7ba 100644 --- a/docs/css/umn/css_01_0183.html +++ b/docs/css/umn/en-us_topic_0000001477419788.html @@ -1,8 +1,8 @@ - +

Sample Code for Two-Way Authentication During the Access to a Cluster

-

This section provides the sample code for two-way authentication during the access to a cluster from a Java client.

-

ESSecuredClientWithCerDemo Code

  1
+

This section provides the sample code for two-way authentication during the access to a cluster from a Java client.

+

ESSecuredClientWithCerDemo Code

  1
   2
   3
   4
@@ -211,7 +211,7 @@
 
 
-

SecuredHttpClientConfigCallback Code

 1
+

SecuredHttpClientConfigCallback Code

 1
  2
  3
  4
@@ -332,7 +332,7 @@
 
 
-

pom.xml Code

<?xml version="1.0" encoding="UTF-8"?>
+

pom.xml Code

<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -372,11 +372,11 @@
     </dependencies>
 </project>
-

+

diff --git a/docs/css/umn/en-us_topic_0000001477579336.html b/docs/css/umn/en-us_topic_0000001477579336.html new file mode 100644 index 00000000..6797b1da --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579336.html @@ -0,0 +1,79 @@ + + +

Configuring Cluster Monitoring

+

You can use Cloud Eye to monitor the created clusters. After configuring the cluster monitoring, you can log in to the Cloud Eye management console to view cluster metrics.

+

The procedure for configuring cluster monitoring:

+
  1. Creating Alarm Rules: Customize alarm rules for the monitoring metrics. Once a metric exceeds the threshold, the system will notify you by sending emails or HTTP/HTTPS requests.
  2. Configuring Monitoring Metrics: Configure monitoring metrics for a cluster or a node in the cluster.
  3. Viewing Monitoring Metrics: View the statistics of the monitoring metrics in specific periods.
+

Prerequisites

  • The cluster is in the Available or Processing status.
  • The cluster has been running properly for more than 10 minutes.
+
+

Recommended Monitoring Metrics

  • Cluster CPU and JVM usage. You are advised to configure the following monitoring metrics: average JVM heap usage, maximum JVM heap usage, average CPU usage, and maximum CPU usage.
  • Cluster write and query latency and throughput. You are advised to configure the following monitoring metrics: average index latency, average index rate, average search latency, and average QPS.
  • Cluster write and query queue and rejected tasks. You are advised to configure the following monitoring metrics: tasks in write queue, tasks in search queue, rejected tasks in write queue, and rejected tasks in search queue.
+
+

Creating Alarm Rules

  1. Log in to the Cloud Eye console.
  2. In the navigation pane on the left, choose Alarm Management > Alarm Rules.
  3. In the Resource Type column, select Cloud Search Service as criteria to search for alarm rules that meet the requirements.

    If no alarm rules are available, create one by referring to the "Creating an Alarm Rule" section. For details about how to set Resource Type and Dimension, see Table 1.

    + +
    + + + + + + + + + + + + + +
    Table 1 Alarm rule configuration parameter

    Parameter

    +

    Description

    +

    Remark

    +

    Resource Type

    +

    Type of the resource that the alarm rule is created for

    +

    Select Cloud Search Service.

    +

    Dimension

    +

    Metric dimension of the selected resource type

    +

    CSS supports two dimensions. Select a dimension as required.

    +
    • CSS Clusters: Alarm rules are specified by cluster.
    • CSS Clusters - CSS Instances: Alarm rules are specified by node in a cluster.
    +
    +
    +
+
+

Configuring Monitoring Metrics

  1. Create a monitoring panel by referring to the "Creating a Dashboard" section. If an available monitoring panel has been created, skip this step.
  2. Add CSS monitoring graphs by referring to the "Adding a Graph" section.

    For details about how to set Resource Type and Dimension, see Table 2.

    + +
    + + + + + + + + + + + + + +
    Table 2 Graph configuration parameter

    Parameter

    +

    Description

    +

    Remark

    +

    Resource Type

    +

    Type of the resource to be monitored

    +

    Select Cloud Search Service.

    +

    Dimension

    +

    Metric dimension

    +

    CSS supports two dimensions. Select a dimension as required.

    +
    • CSS Clusters: Monitoring is executed by cluster.
    • CSS Clusters - CSS Instances: Monitoring is executed by node in a cluster.
    +
    +
    +
+
+

Viewing Monitoring Metrics

  1. Log in to the CSS management console.
  2. Choose Clusters. Locate the target cluster and choose More > View Metric in the Operation column.
  3. Select a time range.
  4. View the monitoring metrics.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477579340.html b/docs/css/umn/en-us_topic_0000001477579340.html new file mode 100644 index 00000000..d3026fdd --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579340.html @@ -0,0 +1,33 @@ + + +

Cluster Management

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477579352.html b/docs/css/umn/en-us_topic_0000001477579352.html new file mode 100644 index 00000000..83006936 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579352.html @@ -0,0 +1,99 @@ + + +

HTTP/HTTPS Flow Control

+

Context

You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster. The command parameters are as follows.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 HTTP/HTTPS flow control parameters

Parameter

+

Type

+

Description

+

flowcontrol.http.enabled

+

Boolean

+

Whether to enable HTTP/HTTPS flow control. This function is disabled by default. Enabling it may affect node access performance.

+

Value: true or false

+

Default value: false

+

flowcontrol.http.allow

+

List<String>

+

IP address whitelist.

+

It can contain multiple IP addresses and masks, or an IP address list. Use commas (,) to separate multiple values. Example: xx.xx.xx.xx/24,xx.xx.xx.xx/24, or xx.xx.xx.xx.xx,xx.xx.xx.

+

The default value is null.

+

flowcontrol.http.deny

+

List<String>

+

IP address blacklist.

+

Multiple IP addresses and masks or an IP address list can be configured. Use commas (,) to separate multiple IP addresses and masks.

+

The default value is null.

+

flowcontrol.http.concurrent

+

Integer

+

Maximum concurrent HTTP/HTTPS connections.

+

Default value: Number of available cores on a node x 400

+

flowcontrol.http.newconnect

+

Integer

+

Maximum new connections that can be created for HTTP/HTTPS requests per second.

+

Default value: Number of available cores on a node x 200

+

flowcontrol.http.warmup_period

+

Integer

+

Time required for the HTTP/HTTPS connection setup speed to reach the maximum. If flowcontrol.http.newconnect is set to 100 and flowcontrol.http.warmup_period is set to 5000ms, it indicates the system can set up 100 connections per second in 5 seconds.

+

Value range: 0–10000

+

Unit: ms

+

Default value: 0

+
+
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable HTTP/HTTPS flow control.
    • Enabling HTTP/HTTPS flow control for a node
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.http.enabled": true,
      +    "flowcontrol.http.allow": ["192.168.0.1/24", "192.168.2.1/24"],
      +    "flowcontrol.http.deny": "192.168.1.1/24",
      +    "flowcontrol.http.concurrent": 1000,
      +    "flowcontrol.http.newconnect": 1000,
      +    "flowcontrol.http.warmup_period": 0
      +  }
      +}
      +

      If all parameters are set to null, they will be restored to default values.

      +
      +
    • Disabling HTTP/HTTPS flow control for a node
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.http.enabled": false
      +  }
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477579356.html b/docs/css/umn/en-us_topic_0000001477579356.html new file mode 100644 index 00000000..7a7e3409 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579356.html @@ -0,0 +1,73 @@ + + +

Request Sampling

+

Context

Request sampling can record the access IP addresses, the number of accessed nodes, request paths, request URLs, and request bodies, which can be used to obtain the IP addresses and paths of clients that have sent a large number of access requests.

+

The following table describes request sampling parameters.

+ +
+ + + + + + + + + + + + + + + + + +
Table 1 Request sampling parameters

Parameter

+

Type

+

Description

+

flowcontrol.statics.enabled

+

Boolean

+

Whether to enable request sampling. Request sampling may affect node performance.

+

Value: true or false

+

Default value: false

+

flowcontrol.statics.threshold

+

Integer

+

Number of recent access requests whose statistics are collected. The value 100 indicates that statistics will be collected on the 100 IP addresses and 100 URLs that are most frequently accessed.

+

Minimum value: 10

+

Maximum value: 1000

+

Default value: 100

+

flowcontrol.statics.sample_frequency

+

Integer

+

Path sampling frequency. If this parameter is set to 100, samples are collected from every 100 requests.

+

Minimum value: 50

+

Default value: 100

+
+
+
  • The IP address statistics and URL sampling statistics are cached based on their access time. If the cache space reaches the threshold (flowcontrol.statics.threshold), the records of the earliest access will be deleted.
  • In URL sampling, an access path is uniquely identified by its URL hash.
+
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable sampling.
    • Enabling sampling
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.statics.enabled": true,
      +    "flowcontrol.statics.threshold": 100,
      +    "flowcontrol.statics.sample_frequency": 50
      +  }
      +}
      +
    • Disabling sampling
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.statics.enabled": false
      +  }
      +}
      +

      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477579364.html b/docs/css/umn/en-us_topic_0000001477579364.html new file mode 100644 index 00000000..b1edaee4 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579364.html @@ -0,0 +1,26 @@ + + +

One-click Traffic Blocking

+

You can block all connections in one click, except the connections that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.

+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable one-click traffic blocking.
    • Enable one-click traffic blocking
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.break.enabled": true
      +  }
      +}
      +
    • Disable one-click traffic blocking
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.break.enabled": false
      +  }
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477579368.html b/docs/css/umn/en-us_topic_0000001477579368.html new file mode 100644 index 00000000..f1a461d4 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579368.html @@ -0,0 +1,67 @@ + + +

Viewing the Cluster Runtime Status and Storage Capacity Status

+

On the Dashboard page of the CSS management console, you can view information about the status and storage capacity of existing clusters.

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Cluster status description

Status

+

Description

+

Available

+

The cluster is running properly and is providing services.

+

Abnormal

+

The cluster creation failed or the cluster is unavailable.

+

If a cluster is in the unavailable status, you can delete the cluster or use snapshots created when the cluster is available to restore data to other clusters. However, operations such as expanding cluster capacity, accessing Kibana, creating snapshots, and restoring snapshots to the cluster are not allowed. When a cluster is in the unavailable status, data importing is not recommended to avoid data loss. You can view the cluster metrics or restart the cluster. However, the operations may fail. If the operations fail, contact technical support in a timely manner.

+

Processing

+

The cluster is being restarted, scaled, backed up, or recovered.

+

Creating

+

The cluster is being created.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 2 Cluster storage capacity status description

Status

+

Description

+

Normal

+

The storage capacity usage of all nodes in a cluster is less than 50%.

+

Warning

+

The storage capacity usage of any node in a cluster is greater than or equal to 50% and less than 80%.

+

Danger

+

The storage capacity usage of any node in a cluster is greater than or equal to 80%. You are advised to increase the storage space of the cluster to achieve normal data search or analysis.

+

Abnormal

+

The cluster storage capacity usage is unknown. For example, if the status of a cluster is Abnormal due to faults, the storage space status of the cluster will be Abnormal.

+
+
+
+ diff --git a/docs/css/umn/en-us_topic_0000001477579372.html b/docs/css/umn/en-us_topic_0000001477579372.html new file mode 100644 index 00000000..74828d4f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579372.html @@ -0,0 +1,100 @@ + + +

HTTP/HTTPS Flow Control

+

You can run commands in Kibana to enable or disable HTTP/HTTPS flow control for your cluster.

+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable HTTP/HTTPS flow control.
    • Enabling HTTP/HTTPS flow control for a node
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.http.enabled": true,
      +    "flowcontrol.http.allow": ["192.168.0.1/24", "192.168.2.1/24"],
      +    "flowcontrol.http.deny": "192.168.1.1/24",
      +    "flowcontrol.http.concurrent": 1000,
      +    "flowcontrol.http.newconnect": 1000,
      +    "flowcontrol.http.warmup_period": 0
      +  }
      +}
      +

      If all parameters are set to null, they will be restored to default values.

      +
      +
    • Disabling HTTP/HTTPS flow control for a node
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.http.enabled": false
      +  }
      +}
      +
    +

    +

    For details about the parameters in this command, see Table 1.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 HTTP/HTTPS flow control parameters

    Parameter

    +

    Type

    +

    Description

    +

    flowcontrol.http.enabled

    +

    Boolean

    +

    Whether to enable HTTP/HTTPS flow control. This function is disabled by default. Enabling it may affect node access performance.

    +

    Value: true or false

    +

    Default value: false

    +

    flowcontrol.http.allow

    +

    List<String>

    +

    IP address whitelist.

    +

    It can contain multiple IP addresses and masks, or an IP address list. Use commas (,) to separate multiple values. Example: xx.xx.xx.xx/24,xx.xx.xx.xx/24, or xx.xx.xx.xx.xx,xx.xx.xx.

    +

    The default value is null.

    +

    flowcontrol.http.deny

    +

    List<String>

    +

    IP address blacklist.

    +

    Multiple IP addresses and masks or an IP address list can be configured. Use commas (,) to separate multiple IP addresses and masks.

    +

    The default value is null.

    +

    flowcontrol.http.concurrent

    +

    Integer

    +

    Maximum concurrent HTTP/HTTPS connections.

    +

    Default value: Number of available cores on a node x 400

    +

    flowcontrol.http.newconnect

    +

    Integer

    +

    Maximum new connections that can be created for HTTP/HTTPS requests per second.

    +

    Default value: Number of available cores on a node x 200

    +

    flowcontrol.http.warmup_period

    +

    Integer

    +

    Time required for the HTTP/HTTPS connection setup speed to reach the maximum. If flowcontrol.http.newconnect is set to 100 and flowcontrol.http.warmup_period is set to 5000ms, it indicates the system can set up 100 connections per second in 5 seconds.

    +

    Value range: 0–10000

    +

    Unit: ms

    +

    Default value: 0

    +
    +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477579376.html b/docs/css/umn/en-us_topic_0000001477579376.html new file mode 100644 index 00000000..37914109 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579376.html @@ -0,0 +1,23 @@ + + +

Instructions

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477579380.html b/docs/css/umn/en-us_topic_0000001477579380.html new file mode 100644 index 00000000..34a78b64 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579380.html @@ -0,0 +1,17 @@ + + +

Managing Indexes

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477579388.html b/docs/css/umn/en-us_topic_0000001477579388.html new file mode 100644 index 00000000..8b269c1d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579388.html @@ -0,0 +1,219 @@ + + +

Procedure

+

The large query isolation and global timeout features are disabled by default. If you enable them, the configuration will take effect immediately. Perform the following steps to configure the features:

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  3. In the navigation pane of Kibana on the left, choose Dev Tools. Run the following command to enable large query isolation and global timeout features:
    PUT _cluster/settings
    +{
    +  "persistent": {
    +    "search.isolator.enabled": true,
    +    "search.isolator.time.enabled": true
    +  }
    +}
    +

    The two features each has an independent switch and the following parameters.

    + +
    + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for large query isolation and global timeout duration

    Switch

    +

    Parameter

    +

    Description

    +

    search.isolator.enabled

    +

    search.isolator.memory.task.limit

    +

    search.isolator.time.management

    +

    Thresholds of a shard query task. A query task exceeding one of these thresholds is regarded as a large query task.

    +

    search.isolator.memory.pool.limit

    +

    search.isolator.memory.heap.limit

    +

    search.isolator.count.limit

    +

    Resource usage thresholds in the isolation pool. If the resource usage of a query task exceeds one of these thresholds, the task will be intercepted.

    +
    NOTE:

    search.isolator.memory.heap.limit defines the limit on the heap memory consumed by write, query, and other operations of a node. If the limit is exceeded, large query tasks in the isolation pool will be interrupted.

    +
    +

    search.isolator.strategy

    +

    search.isolator.strategy.ratio

    +

    Policy for selecting a query task in the isolation pool.

    +

    search.isolator.time.enabled

    +

    search.isolator.time.limit

    +

    Global timeout interval of query tasks.

    +
    +
    +
  4. Configure the large query isolation and global timeout duration separately.
    • Configure the thresholds of a shard query task. A query task exceeding one of these thresholds is regarded as a large query task.
      PUT _cluster/settings
      +{
      +  "persistent": {
      +    "search.isolator.memory.task.limit": "50MB",
      +    "search.isolator.time.management": "10s"
      +  }
      +}
      + +
      + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Data Type

      +

      Description

      +

      search.isolator.memory.task.limit

      +

      String

      +

      Threshold of the memory requested by a query task to perform aggregation or other operations. If the requested memory exceeds the threshold, the task will be isolated and observed.

      +

      Value range: 0b to the maximum heap memory of a node

      +

      Default value: 50MB

      +
      NOTE:

      You can run the following command to query the current heap memory and the maximum heap memory of a cluster:

      +

      GET _cat/nodes?&h=id,ip,port,r,ramPercent,ramCurrent,heapMax,heapCurrent

      +
      +

      search.isolator.time.management

      +

      String

      +

      Threshold of the duration of a query. (started when cluster resources are used for query). If the duration of a query exceeds the threshold, it will be isolated and observed.

      +

      Value range: ≥ 0ms

      +

      Default value: 10s

      +
      +
      +
    • Configure the resource usage thresholds in the isolation pool. If the resource usage of a query task exceeds one of these thresholds, the task will be intercepted.
      PUT _cluster/settings
      +{
      +  "persistent": {
      +    "search.isolator.memory.pool.limit": "50%",
      +    "search.isolator.memory.heap.limit": "90%",
      +    "search.isolator.count.limit": 1000
      +  }
      +}
      + +
      + + + + + + + + + + + + + + + + + +
      Table 3 Parameter description

      Parameter

      +

      Data Type

      +

      Description

      +

      search.isolator.memory.pool.limit

      +

      String

      +

      Threshold of the heap memory percentage of the current node. If the total memory requested by large query tasks in the isolation pool exceeds the threshold, the interrupt control program will be triggered to cancel one of the tasks.

      +

      Value range: 0.0 to 100.0%

      +

      Default value: 50%

      +

      search.isolator.memory.heap.limit

      +

      String

      +

      Heap memory threshold of the current node. If the heap memory of the node exceeds the threshold, the interrupt control program will be triggered to cancel a large query task in the isolation pool.

      +

      Value range: 0.0 to 100.0%

      +

      Default value: 90%

      +

      search.isolator.count.limit

      +

      Integer

      +

      Threshold of the number of large query tasks in the current node isolation pool. If the number of observed query tasks exceeds the threshold, the interrupt control program will be triggered to stop accepting new large queries. New large query requests will be directly canceled.

      +

      Value range: 10–50000

      +

      Default value: 1000

      +
      +
      +

      In addition to search.isolator.memory.pool.limit and search.isolator.count.limit parameters, you can configure search.isolator.memory.task.limit and search.isolator.time.management to control the number of query tasks that enter the isolation pool.

      +
      +
    • Policy for selecting a query task in the isolation pool.
      PUT _cluster/settings
      +{
      +  "persistent": {
      +    "search.isolator.strategy": "fair",
      +    "search.isolator.strategy.ratio": "0.5%"
      +  }
      +}
      + +
      + + + + + + + + + + + + + +

      Parameter

      +

      Data Type

      +

      Description

      +

      search.isolator.strategy

      +

      String

      +

      Policy for selecting large queries when the interrupt control program is triggered. The selected query will be interrupted.

      +
      NOTE:

      The large query isolation pool is checked every second until the heap memory is within the safe range.

      +
      +
      Values: fair, mem-first, or time-first
      • mem-first: The query task that uses the most heap memory in the isolation pool is interrupted.
      • time-first: The query task that has been running for the longest time in the isolation pool is interrupted.
      • fair: If the difference between the heap memory of shard queries is smaller than Maximum_heap_memory x search.isolator.strategy.ratio, the query that takes the longest time should be interrupted. Otherwise, the query that uses the most heap memory is interrupted.
      +
      +

      Default value: fair

      +

      search.isolator.strategy.ratio

      +

      String

      +

      Threshold of the fair policy. This parameter takes effect only if search.isolator.strategy is set to fair. If the difference between the memory usage of large query tasks does not exceed the threshold, the query that takes the longest time should be interrupted. If the difference between the memory usage of large query tasks exceeds the threshold, the query that uses the most memory is interrupted.

      +

      Value range: 0.0 to 100.0%

      +

      Default value: 1%

      +
      +
      +
    • Configure the global timeout duration of query tasks.
      PUT _cluster/settings
      +{
      +  "persistent": {
      +    "search.isolator.time.limit": "120s"
      +  }
      +}
      + +
      + + + + + + + + + +

      Parameter

      +

      Data Type

      +

      Description

      +

      search.isolator.time.limit

      +

      String

      +

      Global query timeout duration. If this function is enabled, all the query tasks that exceed the specified duration will be canceled.

      +

      Value range: ≥ 0ms

      +

      Default value: 120s

      +
      +
      +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477579396.html b/docs/css/umn/en-us_topic_0000001477579396.html new file mode 100644 index 00000000..79f88eed --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579396.html @@ -0,0 +1,15 @@ + + +

Deleting a Cluster

+

You can delete clusters that you no longer need.

+
  • If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.
  • The snapshots of a cluster stored in OBS are not deleted with the cluster. You can restore a deleted cluster using its snapshots stored in the OBS bucket.
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation tree on the left, select a cluster type. The cluster list page is displayed.
  3. Locate the target cluster and click More > Delete in the Operation column.
  4. In the displayed dialog box, enter the name of the cluster to be deleted and click OK.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477579404.html b/docs/css/umn/en-us_topic_0000001477579404.html new file mode 100644 index 00000000..4b794fd2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579404.html @@ -0,0 +1,23 @@ + + +

Replacing a Specified Node

+

If a node in the cluster is faulty, you can create a new node with the same specifications to replace it. During the replacement of a specified node, data of that node will be migrated in advance and will not be lost.

+

Prerequisites

The target cluster is available and has no tasks in progress.

+
+

Constraints

  • Only one node can be replaced at a time.
  • The ID, IP address, specifications, and AZ of the new node will be the same as those of the original one.
  • The configurations you modified manually will not be retained after node replacement. For example, if you have manually added a return route to the original node, you need to add it to the new node again after the node replacement is complete.
  • If the node you want to replace is a data node (ess) or cold data node (ess-cold), pay attention to the following precautions:
    1. Before a data node or cold data node is replaced, its data needs to be migrated to other nodes. To properly store the data, ensure the maximum sum of replicas and primary shards of an index is smaller than the total number of data nodes (ess and ess-cold nodes) in the cluster. The node replacement duration depends heavily on the migration speed.
    2. Clusters whose version is earlier than 7.6.2 cannot have closed indexes. Otherwise, data nodes or cold data nodes cannot be replaced.
    3. The AZ of the node to be replaced must have two or more data nodes (including ess and ess-cold).
    4. If the cluster of the node to be replaced does not have a master node (ess-master), the number of available data nodes (including ess and ess-cold) in the cluster must be greater than or equal to 3.
    5. The preceding precautions do not apply if you are replacing a master node (ess-master) or client node (ess-client).
    6. The precautions 1 to 4 do not apply if you are replacing a faulty node, regardless of its type. Faulty nodes are not included in _cat/nodes.
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, click the Replace Node tab.
  5. On the Replace Node tab page, set the following parameters:
    • Agency: Select an IAM agency to grant the current account the permission to switch AZs.

      If no agency is available, click Create IAM Agency to go to the IAM console and create an agency.

      +

      The selected agency must be assigned the Tenant Administrator or VPC Administrator policy.

      +
      +
    +
    • Whether to perform data migration: If this option is selected, data migration is performed. If the target node has disabled indexes or indexes that have no replicas, this option must be selected.
    • Select the node to be replaced in the data node table.
    +
  6. Click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Upgrading. When Cluster Status changes to Available, the node has been successfully replaced.
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477579408.html b/docs/css/umn/en-us_topic_0000001477579408.html new file mode 100644 index 00000000..5aa14aa0 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579408.html @@ -0,0 +1,76 @@ + + +

Enabling Index Monitoring

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Choose Dev Tools in the navigation pane on the left and run the following command to enable index monitoring:
    PUT _cluster/settings
    +{
    +  "persistent": {
    +    "css.monitoring.index.enabled": "true"
    +  }
    +}
    +
  4. (Optional) To monitor a specific index, run the following command on the Dev Tools page of Kibana:
    PUT _cluster/settings
    +{
    +  "persistent": {
    +    "css.monitoring.index.enabled": "true",
    +    "css.monitoring.index.interval": "30s",
    +    "css.monitoring.index.indices": ["index_name"],
    +    "css.monitoring.history.duration": "3d"
    +  }
    +}
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameter description

    Parameter

    +

    Data Type

    +

    Description

    +

    css.monitoring.index.enabled

    +

    Boolean

    +

    Whether to enable index monitoring. If this parameter is set to true, the monitoring will be enabled.

    +

    Default value: false

    +

    css.monitoring.index.interval

    +

    Time

    +

    Interval for collecting index monitoring data.

    +

    Minimum value: 1s

    +

    Default value: 10s

    +

    css.monitoring.index.indices

    +

    String

    +

    Name of an index to be monitored. By default, all indexes are monitored. You can configure specific indexes or a type of indexes to monitor.

    +

    Example:

    +
    • ""css.monitoring.index.indices": ["index_name"]" indicates only index_name is monitored.
    • "css.monitoring.index.indices": ["log_*"] indicates that only indexes starting with log_ are monitored.
    • "css.monitoring.index.indices": ["index1", "index2"] indicates that index1 and index2 are monitored.
    +

    Default value: * (indicating that all indexes are monitored)

    +

    css.monitoring.history.duration

    +

    Time

    +

    Retention period of monitoring data storage. The default period is a week.

    +

    Minimum value: 1d

    +

    Default value: 7d

    +
    +
    +

    Indexes starting with monitoring-eye-css-* are regarded as monitoring indexes and will not be monitored.

    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477579412.html b/docs/css/umn/en-us_topic_0000001477579412.html new file mode 100644 index 00000000..b776e215 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477579412.html @@ -0,0 +1,38 @@ + + +

Accessing a Cluster Using a VPC Endpoint

+

If the VPC endpoint service is enabled, you can use a private domain name or node IP address generated by the endpoint to access the cluster. When the VPC endpoint service is enabled, a VPC endpoint will be created by default. You can select Private Domain Name Creation as required. VPC endpoint creation requires specific permissions. For details, see "VPCEP Permissions".

+

VPC Endpoint uses a shared load balancer for intranet access. If your workloads require quick access, you are advised to connect a dedicated load balancer to the cluster. For details, see Connecting to a Dedicated Load Balancer.

+

The public IP address access and VPC endpoint service share a load balancer. If you have configured a public access whitelist, public and private IP addresses that access the cluster through VPCEP are restricted because the public IP address access shares the load balancer with the VPC endpoint service. In this case, you need to add IP address 198.19.128.0/17 to the public access whitelist to allow traffic through VPCEP.

+
+

Enabling the VPC Endpoint Service

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner.
  3. On the Create Cluster page, set Advanced Settings to Custom. Enable the VPC endpoint service.
    • Private Domain Name Creation: If you enable this function, the system automatically creates a private domain name for you, which you can use to access the cluster.
    • VPC Endpoint Service Whitelist: You can add an authorized account ID to the VPC endpoint service whitelist. Then you can access the cluster using the private domain name or the node IP address.
    • You can click Add to add multiple accounts.
    • Click Delete in the Operation column to delete the accounts that are not allowed to access the cluster.
    +
    • If the authorized account ID is set to *, all users are allowed to access the cluster.
    • You can view authorized account IDs on the My Credentials page.
    +
    +
+
+

Managing VPC Endpoint Service

You can enable the VPC endpoint service while creating a cluster, and also enable it by performing the following steps after cluster creation.

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  3. Click the VPC Endpoint Service tab, and turn on the button next to VPC Endpoint Service.

    In the displayed dialog box, you can determine whether to enable the private domain name. Click Yes to enable the VPC endpoint service.

    +
    +
    +
  4. (Optional) Click Modify next to VPC Endpoint Service Whitelist to update the existing whitelist.
  5. Manage VPC endpoints.

    The VPC Endpoint Service page displays all VPC endpoints connected to the current VPC endpoint service.

    +
    Figure 1 Managing VPC endpoints
    +

    Click Accept or Reject in the Operation column to change the node status. If you reject the connection with a VPC endpoint, you cannot access the cluster through the private domain name generated by that VPC endpoint.

    +
+
+

Accessing the Cluster Using the Private Domain Name or Node IP Address

  1. Obtain the private domain name or node IP address.

    Log in to the CSS console, click the target cluster name and go to the Cluster Information page. Click the VPC Endpoint Service tab and view the private domain name.

    + +
  2. Run the cURL command to execute the API or call the API by using a program before accessing the cluster. For details about Elasticsearch operations and APIs, see the Elasticsearch Reference.

    The ECS must meet the following requirements:

    +
    • Sufficient disk space is allocated for the ECS.
    • The ECS and the cluster must be in the same VPC. After enabling the VPC endpoint service, you can access the cluster from the ECS even when the cluster is not in the same VPC as the ECS.
    • The security group of the ECS must be the same as that of the cluster.

      If this requirement is not met, modify the ECS security group or configure the inbound and outbound rules of the ECS security group to allow the ECS security group to be accessed by all security groups of the cluster. For details, see Configuring Security Group Rules.

      +
    • Configure security group rule settings of the target CSS cluster. Set Protocol to TCP and Port Range to 9200 or a port range including port 9200 for both the outbound and inbound directions.
    +
    • If the cluster you access does not have the security mode enabled, run the following command:
      curl 'http://vpcep-7439f7f6-2c66-47d4-b5f3-790db4204b8d.region01.xxxx.com:9200/_cat/indices'
      +
    • If the cluster you access has the security mode enabled, access the cluster using HTTPS and add the username, password and -u to the cURL command.
      curl -u username:password -k 'https://vpcep-7439f7f6-2c66-47d4-b5f3-790db4204b8d.region01.xxxx.com:9200/_cat/indices'
      +
    +
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477739336.html b/docs/css/umn/en-us_topic_0000001477739336.html new file mode 100644 index 00000000..1681b856 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739336.html @@ -0,0 +1,104 @@ + + +

Managing Logs

+

CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate faults.

+

Log Query

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. In the navigation pane on the left, choose Log Management.
  4. Query logs on the log management page.

    Select the node, log type, and log level you want to query, and then click . The query result is displayed.

    +

    When you search for logs, the latest 10,000 logs are matched. A maximum of 100 logs are displayed.

    +
+
+

Enabling Log Backup

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. Click the Logs tab and toggle on the Log Management switch.
  4. In the Edit Log Backup Configuration dialog box, set the parameters.

    In the displayed dialog box, OBS Bucket and IAM Agency are automatically created for log backup. You can change the default value by referring to Table 1.

    +

    If the Log Management function has been enabled for the cluster, you can click on the right of Log Backup Configuration and modify the configuration in the displayed Edit Log Backup Configuration dialog box. For details, see Table 1.

    + +
    + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for configuring log backup

    Parameter

    +

    Description

    +

    Remarks

    +

    OBS Bucket

    +

    Select an OBS bucket from the drop-down list for storing logs. You can also click Create Bucket on the right to create an OBS bucket.

    +

    The OBS bucket and the cluster must be in the same region.

    +
    NOTE:

    To let an IAM user access an OBS bucket, you need to grant the GetBucketStoragePolicy, GetBucketLocation, ListBucket, and ListAllMyBuckets permissions to the user.

    +
    +

    Backup Path

    +

    Storage path of logs in the OBS bucket

    +
    The backup path configuration rules are as follows:
    • The backup path cannot contain the following characters: \:*?"<>|
    • The backup path cannot start with a slash (/).
    • The backup path cannot start or end with a period (.).
    • The total length of the backup path cannot exceed 1,023 characters.
    +
    +

    IAM Agency

    +

    IAM agency authorized by the current account for CSS to access or maintain data stored in the OBS bucket. You can also click Create IAM Agency on the right to create an IAM agency.

    +

    The IAM agency must meet the following requirements:

    +
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • Mandatory policies: Tenant Administrator
    +
    +
    +
  5. Back up logs.
    • Automatically backing up logs

      Click the icon on the right of Auto Backup to enable the auto backup function.

      +

      After the automatic backup function is enabled, set the backup start time in the Configure Auto Backup dialog box. When the scheduled time arrives, the system will back up logs automatically.

      +

      After the Automatic Snapshot Creation function is enabled, you can click on the right of the parameter to change the backup start time.

      +
    • Manually backing up logs

      On the Log Backup tab page, click Back Up. On the displayed page, click Yes to start backup.

      +

      If Task Status in the log backup list is Successful, the backup is successful.

      +

      All logs in the cluster are copied to a specified OBS path. You can view or download log files from the path of the OBS bucket.

      +
      +
    +
  6. Search for logs.

    On the Log Search page, select the target node, log type, and log level, and click . The search results are displayed.

    +

    When you search for logs, the latest 10,000 logs are matched. A maximum of 100 logs are displayed.

    +
+
+

Viewing Logs

After backing up logs, you can click Backup Path to go to the OBS console and view the logs.

+

Backed up logs mainly include deprecation logs, run logs, index slow logs, and search slow logs. Table 2 lists the storage types of the OBS bucket.

+ +
+ + + + + + + + + + + + + + + + + + + +
Table 2 Log types

Log Name

+

Description

+

clustername_deprecation.log

+

Deprecation log

+

clustername_index_indexing_slowlog.log

+

Search slow log

+

clustername_index_search_slowlog.log

+

Index slow log

+

clustername.log

+

Elasticsearch run log

+

clustername_access.log

+

Access log

+
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739344.html b/docs/css/umn/en-us_topic_0000001477739344.html new file mode 100644 index 00000000..1ff625f2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739344.html @@ -0,0 +1,346 @@ + + +

Creating a Cluster in Security Mode

+

This section describes how to create an Elasticsearch cluster in security mode.

+

Public IP address access and Kibana public access can be used only after security mode is enabled.

+
+

Context

  • When creating a cluster, the number of nodes that can be added varies according to the node type. For details, see Table 1. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Number of nodes in different types

    Node Type

    +

    Number

    +

    ess

    +

    ess: 1-32

    +

    ess, ess-master

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess, ess-client

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess, ess-cold

    +

    ess: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess, ess-master, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-cold: 1-32

    +

    ess, ess-client, ess-cold

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    +
    +
    +
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. On the Dashboard page, click Create Cluster in the upper right corner. The Create page is displayed.

    Alternatively, choose Clusters > Elasticsearch in the navigation tree on the left. Click Create Cluster in the upper right corner. The Create page is displayed.

    +
  3. Specify Region and AZ. +
    + + + + + + + + + + +
    Table 2 Parameter description for Region and AZ

    Parameter

    +

    Description

    +

    Region

    +

    Select a region for the cluster from the drop-down list on the right. Currently, only eu-de and eu-nl are supported.

    +

    AZ

    +

    Select AZs associated with the cluster region.

    +

    You can select a maximum of three AZs. For details, see Deploying a Cross-AZ Cluster.

    +
    +
    +
  4. Configure basic cluster information. +
    + + + + + + + + + + +
    Table 3 Description of basic parameters

    Parameter

    +

    Description

    +

    Version

    +

    Select a cluster version from the drop-down list box.

    +

    Name

    +

    Cluster name, which contains 4 to 32 characters. Only letters, numbers, hyphens (-), and underscores (_) are allowed and the value must start with a letter.

    +
    NOTE:

    After a cluster is created, you can modify the cluster name as required. Click the name of a cluster to be modified. On the displayed Basic Information page, click next to the cluster name. After the modification is completed, click to save the modification. If you want to cancel the modification, click .

    +
    +
    +
    +
  5. Configure cluster specifications. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 Parameter description

    Parameter

    +

    Description

    +

    Nodes

    +

    Number of nodes in a cluster. Select a number from 1 to 32. You are advised to configure three or more nodes to ensure high availability of the cluster.

    +
    • If neither a master node nor client node is enabled, the nodes specified by this parameter are used to serve as both the master node and client node. Nodes provide the cluster management, data storage, cluster access, and data analysis functions. To ensure data stability in the cluster, it is recommended that you set this parameter to a value no less than 3.
    • If only the master node function is enabled, nodes specified by this parameter are used to store data and provide functions of client nodes.
    • If both the master and client node functions are enabled, the nodes specified by this parameter are only used for storing data.
    • If only the client node function is enabled, nodes specified by this parameter are used to store data and provide functions of the master node.
    +

    CPU Architecture

    +

    The supported type is determined by the actual regional environment. You can select x86.

    +

    Node Specifications

    +

    Specifications of nodes in a cluster. You can select a specified specification based on your needs. Each cluster supports only one specification.

    +

    After you select a flavor, the CPU and memory corresponding to the current specification are displayed below the parameter. For example, if you select css.medium.8, then 1 vCPUs | 8 GB will be displayed, indicating that the node flavor you select contains one vCPU and 8 GB memory.

    +

    Node Storage Type

    +

    Select a storage type. Common I/O, High I/O, Ultra-high I/O are supported.

    +

    Node Storage Capacity

    +

    Storage space. Its value varies with node specifications.

    +

    The node storage capacity must be a multiple of 20.

    +

    Disk Encryption

    +

    If you select this option, the nodes in the cluster you create will use encrypted EVS disks to protect data. By default, this option is not selected. Note that you cannot modify this setting after the cluster is created. Therefore, exercise caution when performing the setting.

    +

    After you select this option, you need to select an available key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    +

    Enabling disk encryption has no impact on your operations on a cluster (such as accessing the cluster and importing data to the cluster). However, after you enable disk encryption, operation performance deteriorates by about 10%.

    +
    NOTE:
    • If the cluster is in the Available status and the key used for disk encryption is in the Pending deletion or disable status or has been deleted after a cluster is created, cluster scale-out is not allowed. However, other operations on the cluster, such as restarting the cluster, creating snapshots, restoring the cluster, and importing data to the cluster are not affected. In addition, this key cannot be used for cluster creation in the future.
    • After a cluster is created, do not delete the key used by the cluster. Otherwise, the cluster will become unavailable.
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    +
    +

    Master node

    +

    The master node manages all nodes in the cluster. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the master node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    +

    After enabling the master node, specify Node Specifications, Nodes, and Node Storage Type. The value of Nodes must be an odd number greater than or equal to 3. Up to nine nodes are supported. The value of Node Storage Capacity is fixed. You can select a storage type based on your needs.

    +

    Client node

    +

    The client node allows clients to access clusters and analyze data. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the client node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    +

    After enabling the client node, specify Node Specifications, Nodes and Node Storage Type. The value of Nodes ranges from 1 to 32. The value of Node Storage Capacity is fixed. You can select a storage type based on your needs.

    +

    Cold data node

    +

    The cold data node is used to store historical data, for which query responses can be returned in minutes. If you do not quire a quick query response, store historical data on cold data nodes to reduce costs.

    +

    After enabling cold data node, configure Node Specifications, Nodes, Node Storage Type, and Node Storage Capacity. The value of Nodes ranges from 1 to 32. Select Node Storage Type and Node Storage Capacity as required.

    +

    After the cold data node is enabled, CSS automatically adds cold and hot tags to related nodes.

    +
    +
    +
    Figure 1 Configuring host specifications
    +
  6. Set the enterprise project.

    When creating a CSS cluster, you can bind an enterprise project to the cluster if you have enabled the enterprise project function. You can select an enterprise project created by the current user from the drop-down list on the right or click View Project Management to go to the Enterprise Project Management console and create a new project or view existing projects.

    +
  7. Click Next: Configure Network. Configure the cluster network. +
    + + + + + + + + + + + + + + + + + + + + + + +
    Table 5 Network configuration parameters

    Parameter

    +

    Description

    +

    VPC

    +

    A VPC is a secure, isolated, and logical network environment.

    +

    Select the target VPC. Click View VPC to enter the VPC management console and view the created VPC names and IDs. If no VPCs are available, create one.

    +
    NOTE:

    The VPC must contain CIDRs. Otherwise, cluster creation will fail. By default, a VPC will contain CIDRs.

    +
    +

    Subnet

    +

    A subnet provides dedicated network resources that are isolated from other networks, improving network security.

    +

    Select the target subnet. You can access the VPC management console to view the existed subnet names and IDs.

    +

    Security Group

    +

    A security group is a collection of access control rules for ECSs that have the same security protection requirements and are mutually trusted in a VPC. To view more details about the security group, click View Security Group.

    +
    NOTE:
    • For cluster access purposes, ensure that the security group contains port 9200.
    • If your cluster version is 7.6.2 or later, ensure that all the ports used for communication between nodes in the same security group are allowed. If such settings cannot be configured, ensure at least the access to port 9300 is allowed.
    • After the port 9300 is enabled, if the cluster disk usage is high, delete expired data to release the disk storage space.
    +
    +

    Security Mode

    +

    After the security mode is enabled, communication will be encrypted and authentication required for the cluster.

    +
    • The default administrator account is admin.
    • Set and confirm the Administrator Password. This password will be required when you access this cluster.
    +

    HTTPS Access

    +

    HTTPS access can be enabled only after the security mode of the cluster is enabled. After HTTPS access is enabled, communication is encrypted when you access the cluster.

    +
    NOTE:

    A cluster in security mode uses HTTPS for communication and will provide deteriorated read performance when compared with a normal cluster using HTTP. Its performance may be 20% less than the performance of a normal HTTP cluster under high concurrency. If you want fast read performance and the permission provided by the security mode to isolate resources (such as indexes, documents, and fields), you can disable the HTTPS Access function. After HTTPS Access is disabled, HTTP protocol is used for cluster communication. In this case, data security cannot be ensured and public IP address cannot be used.

    +
    +

    Public IP Address

    +

    If HTTPS Access is enabled, you can configure Public Network Access and obtain an IP address for public network access. This IP address can be used to access this security cluster through the public network. For details, see Accessing a Cluster from a Public Network.

    +
    +
    +
    Figure 2 Configuring network specifications
    +
  8. Click Next: Configure Advanced Settings. Configure the automatic snapshot creation and other functions.
    1. Configure Cluster Snapshot. Set basic configuration and snapshot configuration.

      The cluster snapshot function is enabled by default. You can also disable this function as required. To store automatic snapshots in OBS, an agency will be created to access OBS. Additional cost will be incurred if snapshots are stored in standard storage.

      + +
      + + + + + + + + + + + + + + + + +
      Table 6 Cluster snapshot parameter

      Parameter

      +

      Description

      +

      OBS bucket

      +

      Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

      +

      The created or existing OBS bucket must meet the following requirements:

      +
      • Storage Class is Standard or Warm.
      • Region must be the same as that of the created cluster.
      +

      Backup Path

      +

      Storage path of the snapshot in the OBS bucket.

      +
      The backup path configuration rules are as follows:
      • The backup path cannot contain the following characters: \:*?"<>|
      • The backup path cannot start with a slash (/).
      • The backup path cannot start or end with a period (.).
      • The backup path cannot contain more than 1,023 characters.
      +
      +

      IAM Agency

      +

      IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

      +

      The created or existing IAM agency must meet the following requirements:

      +
      • Agency Type must be Cloud service.
      • Set Cloud Service to CSS.
      • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
      +

      Snapshot Encryption

      +

      Whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

      +

      After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

      +
      • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
      • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
      • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
      • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
      +
      +
      + +
      + + + + + + + + + + + + + + + + +
      Table 7 Automatic snapshot creation parameter

      Parameter

      +

      Description

      +

      Snapshot Name Prefix

      +

      The snapshot name prefix contains 1 to 32 characters and must start with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. A snapshot name consists of a snapshot name prefix and a timestamp, for example, snapshot-1566921603720.

      +

      Time Zone

      +

      Time zone for the backup time, which cannot be changed. Specify Backup Started Time based on the time zone.

      +

      Backup Start Time

      +

      The time when the backup starts automatically every day. You can specify this parameter only in full hours, for example, 00:00 or 01:00. The value ranges from 00:00 to 23:00. Select a time from the drop-down list.

      +

      Retention Period (days)

      +

      The number of days that snapshots are retained in the OBS bucket. The value ranges from 1 to 90. You can specify this parameter as required. The system automatically deletes expired snapshots every hour at half past the hour.

      +
      +
      +
      Figure 3 Setting parameters for automatic snapshot creation
      +
    2. Configure advanced settings for the cluster.
      • Default: The VPC Endpoint Service, Kibana Public Access, and Tag functions are disabled by default. You can manually enable these functions after the cluster is created.
      • Custom: You can enable the VPC Endpoint Service, Kibana Public Access, and Tag functions as required.
      + +
      + + + + + + + + + + + + + +
      Table 8 Parameters for advanced settings

      Parameter

      +

      Description

      +

      VPC Endpoint Service

      +

      After enabling this function, you can obtain a private domain name for accessing the cluster in the same VPC. For details, see Accessing a Cluster Using a VPC Endpoint.

      +
      NOTE:

      The VPC endpoint service cannot be enabled for a shared VPC.

      +
      +

      Kibana Public Access

      +

      You can configure this parameter only when security mode is enabled for a cluster. After enabling this function, you can obtain a public IP address for accessing Kibana. For details, see Accessing a Cluster from a Kibana Public Network.

      +

      Tag

      +

      Adding tags to clusters can help you identify and manage your cluster resources. You can customize tags or use tags predefined by Tag Management Service (TMS). For details, see Managing Tags.

      +

      If your organization has enabled tag policies for CSS, you must comply with the tag policy rules when creating clusters, otherwise, clusters may fail to be created. Contact the organization administrator to learn more about tag policies.

      +
      +
      +
    +
  9. Click Next: Confirm. Check the configuration and click Next to create a cluster.
  10. Click Back to Cluster List to switch to the Clusters page. The cluster you created is listed on the displayed page and its status is Creating. If the cluster is successfully created, its status will change to Available.

    If the cluster creation fails, create the cluster again.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739348.html b/docs/css/umn/en-us_topic_0000001477739348.html new file mode 100644 index 00000000..f8632f87 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739348.html @@ -0,0 +1,396 @@ + + +

Connecting to a Dedicated Load Balancer

+

This section describes how to connect a CSS cluster to a dedicated load balancer.

+

(Optional) Preparing a Self-signed Certificate

If the target ELB listener uses the HTTP protocol, skip this step.

+

Prepare and upload a self-signed certificate.

+

You are advised to use a certificate purchased in Cloud Certificate Manager (CCM) or issued by an authoritative organization.

+
+
  1. Log in to a Linux client where the OpenSSL tool and JDK are installed.
  2. Run the following commands to create a self-signed certificate:
     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
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    mkdir ca
    +mkdir server
    +mkdir client
    +
    +#Use OpenSSL to create a CA certificate.
    +cd ca
    +#Create the OpenSSL configuration file ca_cert.conf for the CA certificate.
    +cat >ca_cert.conf <<EOF
    +[ req ]
    +distinguished_name     = req_distinguished_name
    +prompt                 = no
    +
    +[ req_distinguished_name ]
    + O                      = ELB
    +EOF
    +#Create private key file ca.key for the CA certificate.
    +openssl genrsa -out ca.key 2048
    +#Create the CSR file ca.csr for the CA certificate.
    +openssl req -out ca.csr -key ca.key -new -config ./ca_cert.conf
    +#Create a self-signed CA certificate ca.crt.
    +openssl x509 -req -in ca.csr -out ca.crt -sha1 -days 5000 -signkey ca.key
    +#Convert the CA certificate format to p12.
    +openssl pkcs12 -export -clcerts -in ca.crt -inkey ca.key -out ca.p12
    +#Convert the CA certificate format to JKS.
    +keytool -importkeystore -srckeystore ca.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore ca.jks
    +
    +
    +#Use the CA certificate to issue a server certificate.
    +cd ../server
    +#Create the OpenSSL configuration file server_cert.conf for the server certificate. Change the CN field to the domain name or IP address of the server as required.
    +cat >server_cert.conf <<EOF
    +[ req ]
    +distinguished_name     = req_distinguished_name
    +prompt                 = no
    +
    +[ req_distinguished_name ]
    + O                      = ELB
    + CN                     = 127.0.0.1
    +EOF
    +#Create the private key file server.key for the server certificate.
    +openssl genrsa -out server.key 2048
    +#Create the CSR request file server.csr for the server certificate.
    +openssl req -out server.csr -key server.key -new -config ./server_cert.conf
    +#Use the CA certificate to issue the server certificate server.crt.
    +openssl x509 -req -in server.csr -out server.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key
    +#Convert the server certificate format to p12.
    +openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
    +#Convert the service certificate format to JKS.
    +keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore server.jks
    +
    +
    +#Use the CA certificate to issue a client certificate.
    +cd ../client
    +#Create the OpenSSL configuration file client_cert.conf for the client certificate. Change the CN field to the domain name or IP address of the server as required.
    +cat >client_cert.conf <<EOF
    +[ req ]
    +distinguished_name     = req_distinguished_name
    +prompt                 = no
    +
    +[ req_distinguished_name ]
    +O                      = ELB
    +CN                     = 127.0.0.1
    +EOF
    +#Create private key client.key for the client certificate.
    +openssl genrsa -out client.key 2048
    +#Create the CSR file client.csr for the client certificate.
    +openssl req -out client.csr -key client.key -new -config ./client_cert.conf
    +#Use the CA certificate to issue the client certificate client.crt.
    +openssl x509 -req -in client.csr -out client.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key
    +#Convert the client certificate to a p12 file that can be identified by the browser.
    +openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
    +#Convert the client certificate format to JKS.
    +keytool -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore client.jks
    +
    + +
    +
  3. Upload the self-signed certificate. For details, see Configuring the Server Certificate and Private Key.
+
+

Creating a Dedicated Load Balancer

  1. Log in to the ELB management console.
  2. Create a dedicated load balancer. For details, see Creating a Dedicated Load Balancer. Table 1 describes the parameters required for connecting a CSS cluster with a dedicated load balancer. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for interconnecting a CSS cluster with a dedicated load balancer

    Parameter

    +

    Description

    +

    Example

    +

    Type

    +

    Load balancer type. Select Dedicated.

    +

    Dedicated

    +

    Billed By

    +

    Billing mode of the dedicated load balancer.

    +

    Pay-per-use

    +

    Region

    +

    Region where the CSS cluster is located.

    +

    -

    +

    IP as Backend Servers

    +

    A CSS cluster can be connected only after the cross-VPC backend is enabled.

    +

    Enabled

    +

    Network Type

    +

    Type of the network used by the load balancer to provide services for external systems.

    +

    Private IPv4 network

    +

    VPC

    +

    VPC where the load balancer works. This parameter is mandatory no matter which network type is selected.

    +

    Select the VPC of the CSS cluster

    +

    -

    +

    Subnet

    +

    Subnet where the load balancer is to be created. This parameter is mandatory no matter which network type is selected.

    +

    Select the subnet of the CSS cluster

    +

    -

    +

    Specifications

    +

    You are advised to select Application load balancing (HTTP/HTTPS), which provides better functions and performance.

    +

    Application load balancing (HTTP/HTTPS)

    +

    Small I

    +
    +
    +
+
+

Interconnecting with a Load Balancer

A cluster in security mode with HTTPS access enabled does not support HTTP protocol authentication. If you need to enable HTTP protocol authentication, disable the security mode of the cluster.

+

Before changing the security mode, disable load balancing. After the security mode is changed, enable load balancing.

+
+
  1. Log in to the CSS management console.
  2. On the Clusters page, select the cluster you want to connect to the load balancer and click the cluster name. The cluster basic information page is displayed.
  3. In the navigation pane, choose Load Balancing. Toggle on the load balancing switch and configure basic load balancing information.
    • Load Balancer: Select a created load balancer. You can also click Create Load Balancer to create one.
    • Agency: Select an agency name. If no agency is available, click Create Agency to create one. The selected agency must have the ELB Administrator and ELB FullAccess permissions.
      Figure 1 Enabling load balancing
      +
    +
  4. Click OK. The listener configuration page is displayed.
    Figure 2 Creating a listener
    +
  5. In the Listener Configuration area, click to configure listener information.
    Figure 3 Configuring a listener
    + +
    + + + + + + + + + + + + + + + + + + + +
    Table 2 Listener configuration information

    Parameter

    +

    Description

    +

    Frontend Protocol

    +

    The protocol used by the client and listener to distribute traffic.

    +

    Select a protocol as required.

    +

    Frontend Port

    +

    The port used by the client and listener to distribute traffic.

    +

    For example, 9200. You need to specify this parameter as required.

    +

    SSL Authentication

    +

    Authentication mode for the client to access the server.

    +

    Select a parsing mode as required.

    +

    Server Certificate

    +

    The server certificate is used for SSL handshake negotiation. The certificate content and private key must be provided.

    +

    When SSL Authentication is set to Two-way authentication, this parameter is mandatory.

    +

    CA Certificate

    +

    Also called client CA public key certificate. It is used to verify the issuer of a client certificate.

    +

    When the HTTPS two-way authentication is enabled, an HTTPS connection can be established only when the client can provide the certificate issued by a specified CA.

    +

    This parameter is mandatory only when the Frontend Protocol is set to HTTPS.

    +
    +
    +
  6. (Optional) In the Connection Mode area, you can click Settings next to Access Control to configure the IP addresses or network segments that are allowed to access the system. If you do not set the IP addresses or network segments, all IP addresses are allowed to access the system by default.
+
In the Health Check area, you can view the health check result of each node IP address. The following table describes the health check results. +
+ + + + + + + + + + +

Health Check Result

+

Description

+

Normal

+

The IP address of the node is properly connected.

+

Abnormal

+

The node IP address is connected and unavailable.

+
+
+
+
+

Accessing a Cluster Using the Curl Command

Run the following commands to check whether the dedicated load balancer can be connected to a cluster.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Commands for accessing different clusters

Security Mode

+

Service Form Provided by ELB for External Systems

+

Curl Command for Accessing a Cluster

+

Non-security

+

No authentication

+
curl  http://IP:9200
+

One-way authentication

+
curl -k --cert ./client.crt --key ./client.key https://IP:9200
+

Two-way authentication

+
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200
+

Security mode + HTTP

+

Password authentication

+
curl  http://IP:9200 -u user:pwd
+

One-way authentication + Password authentication

+
curl -k --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
+

Two-way authentication + Password authentication

+
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
+

Security mode + HTTPS

+

One-way authentication + Password authentication

+
curl -k --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
+

Two-way authentication + Password authentication

+
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
+
+
+ +
+ + + + + + + + + + + + + +
Table 4 Variables

Variable

+

Description

+

IP

+

ELB IP address

+

user

+

Username for accessing the CSS cluster

+

pwd

+

Password of the user

+
+
+

If the Elasticsearch cluster information is returned, the connection is successful. For example, if a security cluster using the HTTPS protocol is connected to a load balancer using two-way authentication, the information shown in Figure 4 is returned.

+
Figure 4 Accessing a cluster
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477739356.html b/docs/css/umn/en-us_topic_0000001477739356.html new file mode 100644 index 00000000..f916ec54 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739356.html @@ -0,0 +1,18 @@ + + +

Best Practices

+

This section describes how to switch from the primary cluster to the secondary cluster when the primary cluster is faulty.

+

1. If the synchronization of specified indexes has been configured between the primary and secondary clusters.

+

(1) Call the API for stopping index synchronization in the secondary cluster. In this case, the read and write traffic can be switched to the secondary cluster.

+

(2) After the primary cluster recovers, call the index synchronization API to synchronize data from the secondary cluster to the primary cluster.

+

2. If the matching pattern for index synchronization has been established between the primary and secondary clusters.

+

(1) Call the API for deleting the created matching pattern for index synchronization in the secondary cluster.

+

(2) Call the API for stopping index synchronization on the secondary cluster (using * for matching). In this case, the read and write traffic can be switched to the secondary cluster.

+

(3) After the primary cluster recovers, call the index synchronization API to synchronize data from the secondary cluster to the primary cluster.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739360.html b/docs/css/umn/en-us_topic_0000001477739360.html new file mode 100644 index 00000000..e68f3c37 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739360.html @@ -0,0 +1,153 @@ + + +

Enhanced Cold Data Query Performance

+

Context

When you query data on the Discover page of Kibana for the first time, all data needs to be obtained from OBS because there is no cache. If a large number of documents are returned, it takes a long time to obtain the corresponding time fields and file metadata from OBS. To accelerate queries the first time they run on the Discover page, you can cache data locally.

+
+

Prerequisites

This feature is available in Elasticsearch clusters of versions 7.6.2 and 7.10.2 and OpenSearch clusters created after February 2023.

+
+

API for Querying Cold Data from Local Cache

This API can be used to query the cold data from local cache.

+

Example request:

+
GET /_frozen_stats/local_cache
+GET /_frozen_stats/local_cache/{nodeId}
+

Response example:

+
{
+   "_nodes" : {
+     "total" : 1,
+     "successful" : 1,
+     "failed" : 0
+   },
+   "cluster_name" : "elasticsearch",
+   "nodes" : {
+     "6by3lPy1R3m55Dcq3liK8Q" : {
+       "name" : "node-1",
+       "transport_address" : "127.0.0.1:9300",
+       "host" : "127.0.0.1",
+       "ip" : "127.0.0.1",
+       "local_cache" : {
+         "get_stats" : {
+           "get_total_count" : 562,                            //Total number of times data was retrieved from the local cold data cache.
+           "get_hit_count" : 562,                              //Total number of hits in the local cold data cache.
+           "get_miss_count" : 0,                               //Total number of local cold data cache misses.
+           "get_total_ns" : 43849200,                          //Total duration for retrieving data from the local cold data cache.
+           "get_avg_ns" : 78023                                //Average duration for retrieving data from the local cold data cache.
+         },
+         "load_stats" : {
+           "load_count" : 2,                                    //Number of times cold data was loaded from the local cache
+           "load_total_ms" : 29,                                //Total duration for loading cold data from the local cache
+           "load_avg_ms" : 14,                                  //Average duration for loading cold data from the local cache
+           "load_fail_count" : 0,                               //Number of failure times for loading cold data from the local cache
+           "load_overflow_count" : 0                            //Number of times the local cold data cache exceeds the cache pool size.
+         },
+         "reload_stats" : {
+           "reload_count" : 0,                                  //Number of times the local cold data cache was regenerated.
+           "reload_total_ms" : 0,                               //Total duration for regenerating the local cold data cache.
+           "reload_avg_ms" : 0,                                 //Average duration for regenerating the local cold data cache.
+           "reload_fail_count" : 0                              //Number of failures in regenerating the local cold data cache.
+         },
+         "init_stats" : {
+           "init_count" : 0,                                     //Number of times the local cold data cache was initialized.
+           "init_total_ms" : 0,                                  //Total duration for initializing the local cold data cache.
+           "init_avg_ms" : 0,                                    //Average duration for initializing the local cold data cache.
+           "init_fail_count" : 0                                 //Number of failures in initializing the local cold data cache.
+         }
+       }
+     }
+   }
+ }
+

+
+

Configuring Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Configuration Item

+

Type

+

Unit

+

Value Range

+

Scope

+

Can Be Dynamically Modified

+

Description

+

low_cost.local_cache.max.capacity

+

Integer

+

-

+

The value ranges from 10 to 5000. The default value is 500.

+

node

+

Yes

+

Maximum number of available cold data caches on a node. Each shard corresponds to a cache object.

+
NOTE:
  • If the heap memory usage remains high, decrease the value.
  • If the value of load_overflow_count keeps increasing rapidly, increase the value.
+
+

index.low_cost.local_cache.threshold

+

Integer

+

%

+

The value ranges from 0 to 100. The default value is 50.

+

index

+

Yes

+

Threshold for enabling the local cache of cold data.

+
NOTE:
  • If the percentage of date fields is less than the value of this parameter, the cold data of the date type will be cached locally. Otherwise, this parameter is not used.
  • If the date fields of the current index occupy most of the data volume of the current index, you are not advised using this function.
+
+

index.low_cost.local_cache.evict_time

+

String

+

Days

+

The value ranges from 1d to 365d. The default value is 30d.

+

index

+

Yes

+

Wait time before cold data is deleted from local cache. The value is determined based on index.frozen_date (time when the freezing is successful).

+
NOTE:
  • For indexes that have been frozen in old clusters and do not have index.frozen_date specified, the value of this parameter is determined based on the index creation time.
  • You are advised to adjust the deletion time based on the disk usage to avoid high disk usage.
+
+
+
+
+

Modifying Parameters

  • Run the following command to modify low_cost.local_cache.max.capacity:
    PUT _cluster/settings
    + {
    +   "persistent": {
    +     "low_cost.local_cache.max.capacity":1000
    +   }
    + }
    +
  • Run the following command to modify index.low_cost.local_cache.threshold:
    PUT es_write_pref2-00000000021/_settings
    + {
    + "index.low_cost.local_cache.threshold":20
    + }
    +
  • Run the following command to modify index.low_cost.local_cache.evict_time:
    PUT es_write_pref2-00000000021/_settings
    + {
    + "index.low_cost.local_cache.evict_time":"7d"
    + }
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739364.html b/docs/css/umn/en-us_topic_0000001477739364.html new file mode 100644 index 00000000..7fa6343a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739364.html @@ -0,0 +1,43 @@ + + +

Request Sampling

+

Context

Request sampling can record the access of client IP addresses and the type of requests from the client. Based on the statistics, you can identify the access traffic of client IP addresses and analyze the client write and query requests.

+ +
+ + + + + + + + + + + + + +
Table 1 Request statistics parameters

Parameter

+

Type

+

Description

+

flowcontrol.log.access.enabled

+

Boolean

+

Whether to collect statistics on the IP addresses of clients that accessed the ES cluster recently and the number of requests. The value can be:

+
  • true
  • false (default value)
+

flowcontrol.log.access.count

+

Integer

+

Number of client IP addresses that accessed a cluster recently.

+

Value range: 0–100

+

Default value: 10

+
+
+
  • IP address statistics switches control whether to collect request type statistics and whether to enable logging.
  • flowcontrol.log.access.enabled controls whether to collect statistics on client requests, including the number of bulk write, search, and msearch requests.
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739368.html b/docs/css/umn/en-us_topic_0000001477739368.html new file mode 100644 index 00000000..6a8e4102 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739368.html @@ -0,0 +1,24 @@ + + +

Changing Specifications

+

If the workloads on the data plane of a cluster change, you can change its node specifications as needed.

+

Prerequisites

  • The target cluster is available and has no tasks in progress.
  • The target cluster has sufficient quotas available.
  • When changing the node specifications, ensure that all service data has copies so the services will not be interrupted.

    Run the GET _cat/indices?v command in Kibana. If the returned rep value is greater than 0, the data has copies. If the returned rep value is 0, the data has no copies. In this case, create snapshot for the cluster by referring to Manually Creating a Snapshot.

    +
  • If the data volume is large, it may take long to modify the node specifications. You are advised to modify specifications during off-peak hours.
+
+

Constraints

  • The number of nodes and the capacity of node storage cannot be changed. You can add nodes and increase the node storage capacity by referring to Scaling Out a Cluster. For details about how to reduce the number of nodes, see Scaling in a Cluster.
  • After decreasing cluster specifications, the cluster performance will deteriorate and service capabilities will be affected. Exercise caution when performing this operation.
  • If a cluster has multiple node types, you can change the specifications of only one type at a time. After the change, nodes in other types still maintain their original specifications.
  • Kibana is unavailable during specification change.
  • During the specification modification, the nodes are stopped and restarted in sequence. It is a rolling process.
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Change Specifications to set parameters.
    • Action: select Change specifications.
    • Resources: The changed amount of resources.
    • Nodes: Specifications of the default data nodes. Select the required specifications from the Node Specifications drop-down list and select the node that you want to change the specifications.
    • If a cluster has master nodes, client nodes, or cold data nodes, you can change their specifications.
    +
  5. Click Next.
  6. Confirm the information and click Submit.
  7. In the dialog box that is displayed, confirm whether to select Verify index copies and Cluster status check and click OK to start the specifications change.

    Index copy verification:

    +
    By default, CSS checks for indexes that do not have copies. You can skip this step, but the lack of index copies may affect services during a cluster specifications change.
    • If you selected Verify index copies and the cluster has no master node, indexes must have at least one copy and the cluster must have at least three nodes.
    • If you selected Verify index copies and the cluster has no master node, indexes must have at least one copy.
    +
    +

    Cluster status check:

    +

    The cluster status is checked before the specifications change by default. The specifications of nodes are changed one by one to ensure success and data security. If a cluster is overloaded and services are faulty, the request for a specifications change will not be delivered. In this case, you can disable cluster status check. If you ignore the cluster status check before the specifications change, the cluster may be faulty and services may be interrupted. Exercise caution when performing this operation.

    +
  8. Click Back to Cluster List to switch to the Clusters page. The Cluster Status is Configuration modified. When Cluster Status changes to Available, the cluster specifications have been successfully modified.
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477739376.html b/docs/css/umn/en-us_topic_0000001477739376.html new file mode 100644 index 00000000..55155345 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739376.html @@ -0,0 +1,14 @@ + + +

Context

+

The large query isolation feature allows you to separately manage large queries. You can isolate query requests that consume a large amount of memory or take a long period of time. If the heap memory usage of a node is too high, the interrupt control program will be triggered. The program will interrupt a large query based on the policies you configured and cancel the running query tasks of the query.

+

You can also configure a global query timeout duration. Long queries will be intercepted.

+

Currently, only versions 7.6.2 and 7.10.2 support large query isolation.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739380.html b/docs/css/umn/en-us_topic_0000001477739380.html new file mode 100644 index 00000000..1deb0b7c --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739380.html @@ -0,0 +1,25 @@ + + +

One-click Traffic Blocking

+

You can block all traffic in one click, except the traffic that passes through O&M APIs, to handle unexpected traffic burst and quickly recover your cluster.

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable one-click traffic blocking.
    • Enabling one-click traffic blocking
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.break.enabled": true
      +  }
      +}
      +
    • Disabling one-click traffic blocking
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.break.enabled": false
      +  }
      +}
      +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739384.html b/docs/css/umn/en-us_topic_0000001477739384.html new file mode 100644 index 00000000..4c9e8ec2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739384.html @@ -0,0 +1,15 @@ + + +

Context

+

You can store hot data on SSD to achieve the optimal query performance, and store historical data in OBS to reduce data storage costs.

+

Application Scenarios

A large volume of data is written to and stored in SSDs. If historical data is no longer updated (is turned into cold data) and its QPS decreases, you can call CSS APIs to dump hot data from SSDs to OBS buckets. This operation freezes indexes, decoupling compute from storage.

+
+

Constraints

  • Currently, only Elasticsearch clusters of versions 7.6.2 and 7.10.2 and OpenSearch clusters of version 1.3.6 support decoupled storage and computing.
  • The storage-compute decoupling feature depends on OBS. Therefore, you must comply with the restrictions on OBS bandwidth and QPS. If these restrictions are violated, the performance of queries on OBS will deteriorate. For example, the speed of restoring shards and querying data will become slow.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739388.html b/docs/css/umn/en-us_topic_0000001477739388.html new file mode 100644 index 00000000..ca4dcfe1 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739388.html @@ -0,0 +1,24 @@ + + +

Viewing the Default Plugin List

+

CSS clusters have default plugins. You can view the default plugin information on the console or Kibana.

+

Viewing Plugins on the Console

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. Click the target cluster name and go to the Basic Information page of the cluster.
  3. Click the Plugins tab.
  4. On the Default page, view default plugins supported by the current version.
+
+

Viewing Plugins on the Kibana

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. Locate the target cluster and click Access Kibana in the Operation column to log in to Kibana.
    • Non-security cluster: The Kibana console is displayed.
    • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the administrator password you specified during cluster creation.
    +
  3. Go to Dev Tools and run the following command to view the cluster plugin information:
    GET _cat/plugins?v
    +

    The following is an example of the response body:

    +
    name                 component                       version
    +css-test-ess-esn-1-1 analysis-dynamic-synonym        7.6.2-xxxx-ei-css-v1.0.1
    +css-test-ess-esn-1-1 analysis-icu                    7.6.2-xxxx-ei-css-v1.1.6
    +css-test-ess-esn-1-1 analysis-ik                     7.6.2-xxxx-ei-css-v1.0.1
    +......
    +

    name indicates the cluster node name, component indicates the plugin name, and version indicates the plugin version.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739392.html b/docs/css/umn/en-us_topic_0000001477739392.html new file mode 100644 index 00000000..314ec95a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739392.html @@ -0,0 +1,37 @@ + + +

Creating and Managing Indexes

+

Clusters of version 7.6.2 or later support index status management. ISM is a plugin that allows you to automate periodic and administrative operations based on changes on the index age, index size, or number of documents. When using the ISM plug-in, you can define policies that automatically handle index rollovers or deletions based on your needs.

+

The following procedure uses Elasticsearch 7.6.2 as an example. The Kibana UI varies depending on the Kibana version, but their operations are similar.

+
+

Creating an Index Policy

  1. Log in to Kibana and choose IM or Index Management on the left. The Index Management page is displayed.
  2. Click Create policy to create an index policy.
  3. Enter a policy ID in the Policy ID text box and enter your policy in the Define policy text box.
    Figure 1 Configuring a policy
    +
  4. Click Create.
+
+

Attaching a Policy to an Index

You can attach a policy to one or more indexes and add the policy ID to an index template. When you create indexes using that index template pattern, the policy will be attached to all created indexes.

+
  • Method 1: Kibana commands

    On the Dev Tools page of Kibana, run the following command to associate a policy ID with an index template:

    +
    PUT _template/<template_name> 
    +{
    +    "index_patterns": ["index_name-*"],
    +    "settings": {
    +        "opendistro.index_state_management.policy_id": "policy_id"
    +    }
    +}
    +
    • <template_name>: Replace it with the name of a created index template.
    • policy_id: Replace it with a custom policy ID.
    +

    For details about how to create an index template, see Index Template.

    +
  • Method 2: Kibana console
    1. On the Index Management page of Kibana, choose Indices.
      Figure 2 Choosing Indexes
      +
    2. In the Indices list, select the target index to which you want to attach a policy.
    3. Click Apply policy in the upper right corner.
      Figure 3 Adding a policy
      +
    4. Select the policy you created from the Policy ID drop-down list.
      Figure 4 Selecting a policy
      +
    5. Click Apply.

      After you attach a policy to an index, ISM creates a job that runs every 5 minutes by default, to execute the policy, check conditions, and convert the index to different statuses.

      +
    +
+
+

Managing Index Policies

  1. Click Managed Indices.
  2. If you want to change the policy, click Change policy. For details, see Changing Policies.
  3. To delete a policy, select your policy, and click Remove policy.
  4. To retry a policy, select your policy, and click Retry policy.
+

For details, see Index State Management.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477739396.html b/docs/css/umn/en-us_topic_0000001477739396.html new file mode 100644 index 00000000..0c19f7ad --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739396.html @@ -0,0 +1,11 @@ + + +

Getting Started

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477739400.html b/docs/css/umn/en-us_topic_0000001477739400.html new file mode 100644 index 00000000..eab3086b --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739400.html @@ -0,0 +1,226 @@ + + +

Scenario

+

CSS integrates shared load balancers and allows you to bind public network access and enable the VPC Endpoint service. Dedicated load balancers provide more functions and higher performance than shared load balancers. This section describes how to connect a cluster to a dedicated load balancer.

+
Advantages of connecting a cluster to a dedicated load balancer:
  • A non-security cluster can also use capabilities of the Elastic Load Balance (ELB) service.
  • You can use customized certificates for HTTPS bidirectional authentication.
  • Seven-layer traffic monitoring and alarm configuration are supported, allowing you to view the cluster status at any time.
+
+

There are eight service forms for clusters in different security modes to connect to dedicated load balancers. Table 1 describes the ELB capabilities for the eight service forms. Table 2 describes the configurations for the eight service forms.

+

You are not advised connecting a load balancer that has been bound to a public IP address to a non-security cluster. Access from the public network using such a load balancer may bring security risks because non-security clusters can be accessed over HTTP without security authentication.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 ELB capabilities for different clusters

Security Mode

+

Service Form Provided by ELB for External Systems

+

ELB Load Balancing

+

ELB Traffic Monitoring

+

ELB Two-way Authentication

+

Non-security

+

No authentication

+

Yes

+

Yes

+

No

+

One-way authentication

+

Two-way authentication

+

Yes

+

Yes

+

Yes

+

Security mode + HTTP

+

Password authentication

+

Yes

+

Yes

+

No

+

One-way authentication + Password authentication

+

Two-way authentication + Password authentication

+

Yes

+

Yes

+

Yes

+

Security mode + HTTPS

+

One-way authentication + Password authentication

+

Two-way authentication + Password authentication

+

Yes

+

Yes

+

Yes

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Configuration for interconnecting different clusters with ELB

Security Mode

+

Service Form Provided by ELB for External Systems

+

ELB Listener

+

Backend Server Group

+

Frontend Protocol

+

Port

+

SSL Parsing Mode

+

Backend Protocol

+

Health Check Port

+

Health Check Path

+

Non-security

+

No authentication

+

HTTP

+

9200

+

No authentication

+

HTTP

+

9200

+

/

+

One-way authentication

+

HTTPS

+

9200

+

One-way authentication

+

HTTP

+

9200

+

Two-way authentication

+

HTTPS

+

9200

+

Two-way authentication

+

HTTP

+

9200

+

Security mode + HTTP

+

Password authentication

+

HTTP

+

9200

+

No authentication

+

HTTP

+

9200

+

/_opendistro/_security/health

+

One-way authentication + Password authentication

+

HTTPS

+

9200

+

One-way authentication

+

HTTP

+

9200

+

Two-way authentication + Password authentication

+

HTTPS

+

9200

+

Two-way authentication

+

HTTP

+

9200

+

Security mode + HTTPS

+

One-way authentication + Password authentication

+

HTTPS

+

9200

+

One-way authentication

+

HTTPS

+

9200

+

Two-way authentication + Password authentication

+

HTTPS

+

9200

+

Two-way authentication

+

HTTPS

+

9200

+
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477739404.html b/docs/css/umn/en-us_topic_0000001477739404.html new file mode 100644 index 00000000..2c6078cc --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739404.html @@ -0,0 +1,32 @@ + + +

Cluster Specification Modification

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477739408.html b/docs/css/umn/en-us_topic_0000001477739408.html new file mode 100644 index 00000000..a286ff58 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477739408.html @@ -0,0 +1,25 @@ + + +

Context

+

Feature Description

CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a node. You can also configure the maximum heap memory used by specific request paths, the maximum CPU usage, and block access in one click, and collect statistics on node access IP addresses and URIs. Each function has an independent control switch, which is disabled by default. To restore default values of parameters, set them to null.

+

If flow control is enabled, requests will be blocked at the entry, which relieves the cluster pressure in high-concurrency scenario and avoids unavailability issues.

+
  • HTTP/HTTPS Flow Control
    • You can control client IP address access by setting IP addresses and subnets in HTTP/HTTPS blacklist or whitelist. If an IP address is in the blacklist, the client is disconnected and all its request are rejected. Whitelist rules take precedence over blacklist rules. If a client IP address exists in both the blacklist and whitelist, the client request will not be rejected.
    • HTTP/HTTPS concurrent connection flow control limits the total number of HTTP connections to a node per second.
    • HTTP/HTTPS new connection flow control limits the number of new connections to a node.
    +
  • Memory Flow Control

    Memory flow control limits request paths based on the node heap memory. You can configure memory flow control whitelist, global memory usage threshold, and heap memory threshold for a single path. Global memory flow control threshold takes precedence over the memory threshold of a single path. Paths in the whitelist will not be blocked in memory flow control.

    +
  • Global Path Whitelist for Flow Control

    You can configure the global path whitelist for flow control as required when you need to use custom plug-ins.

    +
  • Request Sampling

    Request sampling can record the number of access requests from client IP addresses and the request paths of sampled users. Based on the statistics, you can identify the access traffic of client IP addresses and analyze the access traffic of request paths.

    +
  • Flow Control

    Flow control provides an independent API for viewing traffic statistics and records the number of times the API is triggered. You can evaluate the flow control threshold and analyze the cluster load based on the statistics.

    +
  • Access Logs

    Access logs record the URLs and bodies of HTTP/HTTPS requests received by nodes within a period of time. You can analyze the current traffic pressure based on the access logs.

    +
  • CPU Flow Control

    You can configure the node CPU usage threshold to limit the accessed traffic on a single node.

    +
  • One-click Traffic Blocking

    One-click access blocking can block all the access traffic of a node, excluding the traffic from Kibana and Elasticsearch monitor APIs.

    +
+
+

Constraints

  • Currently, only versions 7.6.2 and 7.10.2 support the flow control feature.
  • Flow control may affect the performance of some nodes.
+
  • If flow control is enabled, user requests that exceed the flow control threshold will be rejected.
  • Memory flow control and CPU flow control are based on request paths. The length and number of paths cannot be too large, or the cluster performance will be affected.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477899148.html b/docs/css/umn/en-us_topic_0000001477899148.html new file mode 100644 index 00000000..22cc532f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899148.html @@ -0,0 +1,84 @@ + + +

CSS Custom Policies

+

Custom policies can be created to supplement the system-defined policies of CSS. For the actions supported for custom policies, see section "Permissions Policies and Supported Actions" in the Cloud Search Service API Reference.

+

You can create custom policies in either of the following ways:

+
  • Visual editor: Select cloud services, actions, resources, and request conditions. You do not need to have knowledge of the policy syntax.
  • JSON: Create a JSON policy or edit based on an existing policy.
+

For details about how to create custom policies, see Creating a Custom Policy. The following section provides examples of common CSS custom policies.

+

IAM permissions and data plane cluster permissions are managed separately. To enable the security capability of the data plane, you need to use the security mode.

+
+

Example Custom Policies

To let an IAM user access an OBS bucket, you need to grant the GetBucketStoragePolicy, GetBucketLocation, ListBucket, and ListAllMyBuckets permissions to the user.

+
+
Example 1: Allowing users to create a CSS cluster
{
+    "Version": "1.1",
+    "Statement": [
+        {
+            "Action": [
+                "css:cluster:create",
+                "vpc:securityGroups:get",
+                "vpc:securityGroups:create",
+                "vpc:securityGroups:delete",
+                "vpc:securityGroupRules:get",
+                "vpc:securityGroupRules:create",
+                "vpc:securityGroupRules:delete",
+                "vpc:vpcs:list",
+                "vpc:privateIps:list",
+                "vpc:ports:get",
+                "vpc:ports:create",
+                "vpc:ports:update",
+                "vpc:ports:delete",
+                "vpc:quotas:list",
+                "vpc:subnets:get",
+                "ecs:cloudServerFlavors:get",
+                "ecs:serverInterfaces:use",
+                "ecs:cloudServers:addNics",
+                "ecs:quotas:get",
+                "evs:types:get",
+                "evs:quotas:get"
+            ],
+            "Effect": "Allow"
+        }
+    ]
+}
+
+
+

Example 2: Denying cluster deletion

+

A policy with only Deny permissions must be used in conjunction with other policies for it to take effect. If the permissions assigned to a user contain both Allow and Deny, the Deny permissions take precedence over the Allow permissions.

+

The following method can be used if you need to assign permissions of the CSS Admin policy to a user but you want to prevent the user from deleting clusters. Create a custom policy for denying cluster deletion, and attach both policies to the group to which the user belongs. Then, the user can perform all operations on CSS except deleting clusters. The following is an example of a deny policy:

+
{ 
+      "Version": "1.1", 
+      "Statement": [ 
+            { 
+		  "Effect": "Deny", 
+                  "Action": [ 
+                        "css:cluster:delete"
+                  ] 
+            } 
+      ] 
+}
+
+

Example 3: Defining permissions for multiple services in a policy

+

A custom policy can contain the actions of multiple services that are of the global or project-level type. The following is an example policy containing actions of multiple services:

+
{
+    "Version": "1.1",
+    "Statement": [
+        {
+            "Action": [
+                "ecs:cloudServers:resize",
+                "ecs:cloudServers:delete",
+                "ecs:cloudServers:delete",
+                "css:cluster:restart",
+                "css:*:get*",
+                "css:*:list*"
+            ],
+            "Effect": "Allow"
+        }
+    ]
+}
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477899152.html b/docs/css/umn/en-us_topic_0000001477899152.html new file mode 100644 index 00000000..ddf3db1c --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899152.html @@ -0,0 +1,31 @@ + + +

Flow Control 1.0

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477899160.html b/docs/css/umn/en-us_topic_0000001477899160.html new file mode 100644 index 00000000..8d4dc4da --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899160.html @@ -0,0 +1,31 @@ + + +

Vector Retrieval

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477899164.html b/docs/css/umn/en-us_topic_0000001477899164.html new file mode 100644 index 00000000..dd3be38a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899164.html @@ -0,0 +1,85 @@ + + +

Scaling Out a Cluster

+

If the workloads on the data plane of a cluster change, you can scale out the cluster by increasing the number or capacity of its nodes. Services are not interrupted during cluster scale-out.

+

Prerequisites

  • The target cluster is available and has no tasks in progress.
  • The target cluster has sufficient quotas available.
+
+

Constraints

  • The Node Specifications cannot be modified during scale-out. You can modify Node Specifications by referring to Changing Specifications.
  • If you change the number and storage capacity of a specified type of node, nodes in other types will not be changed.
  • The quota of nodes in different types varies. For details, see Table 1. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Number of nodes in different types

    Node Type

    +

    Number

    +

    ess

    +

    ess: 1-32

    +

    ess, ess-master

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess, ess-client

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess, ess-cold

    +

    ess: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess, ess-master, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-cold: 1-32

    +

    ess, ess-client, ess-cold

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    +
    +
    +
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Scale out to set parameters.
    • Action: Select Scale out.
    • Resource: The changed amount of resources.
    • Nodes: The number of nodes and node storage capacity of the default data node.
      • Nodes: For details, see Table 1.
      • The value range of Node Storage Type depends on the Node Specifications. The value must be a multiple of 20.
      +
    +
  5. Click Next.
  6. Confirm the information and click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling out. When Cluster Status changes to Available, the cluster has been successfully scaled out.
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477899172.html b/docs/css/umn/en-us_topic_0000001477899172.html new file mode 100644 index 00000000..e88dc2a7 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899172.html @@ -0,0 +1,263 @@ + + +

Creating a Cluster in Non-Security Mode

+

This section describes how to create an Elasticsearch cluster in non-security mode.

+

Procedure

  1. Log in to the CSS management console.
  2. On the Dashboard page, click Create Cluster in the upper right corner. The Create page is displayed.

    Alternatively, choose Clusters > Elasticsearch in the navigation tree on the left. Click Create Cluster in the upper right corner. The Create page is displayed.

    +
  3. Specify Region and AZ. +
    + + + + + + + + + + +
    Table 1 Parameter description for Region and AZ

    Parameter

    +

    Description

    +

    Region

    +

    Select a region for the cluster from the drop-down list on the right. Currently, only eu-de and eu-nl are supported.

    +

    AZ

    +

    Select AZs associated with the cluster region.

    +

    You can select up to three general AZs. For details, see Deploying a Cross-AZ Cluster.

    +
    +
    +
  4. Configure basic cluster information. +
    + + + + + + + + + + +
    Table 2 Description of basic parameters

    Parameter

    +

    Description

    +

    Version

    +

    Select a cluster version from the drop-down list box.

    +

    Name

    +

    Cluster name, which contains 4 to 32 characters. Only letters, numbers, hyphens (-), and underscores (_) are allowed and the value must start with a letter.

    +
    NOTE:

    After a cluster is created, you can modify the cluster name as required. Click the name of a cluster to be modified. On the displayed Basic Information page, click next to the cluster name. After the modification is completed, click to save the modification. If you want to cancel the modification, click .

    +
    +
    +
    +
  5. Configure cluster specifications. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Parameter description

    Parameter

    +

    Description

    +

    Nodes

    +

    Number of nodes in a cluster. Select a number from 1 to 32. You are advised to configure three or more nodes to ensure high availability of the cluster.

    +
    • If neither a master node nor client node is enabled, the nodes specified by this parameter are used to serve as both the master node and client node. Nodes provide the cluster management, data storage, cluster access, and data analysis functions. To ensure data stability in the cluster, it is recommended that you set this parameter to a value no less than 3.
    • If only the master node function is enabled, nodes specified by this parameter are used to store data and provide functions of client nodes.
    • If both the master and client node functions are enabled, the nodes specified by this parameter are only used for storing data.
    • If only the client node function is enabled, nodes specified by this parameter are used to store data and provide functions of the master node.
    +

    CPU Architecture

    +

    The supported type is determined by the actual regional environment. You can select x86.

    +

    Node Specifications

    +

    Specifications of nodes in a cluster. You can select a specified specification based on your needs. Each cluster supports only one specification.

    +

    After you select a flavor, the CPU and memory corresponding to the current specification are displayed below the parameter. For example, if you select css.medium.8, then 1 vCPUs | 8 GB will be displayed, indicating that the node flavor you select contains one vCPU and 8 GB memory.

    +

    Node Storage Type

    +

    In the current version, the following options are available: Common I/O, High I/O, and Ultra-high I/O.

    +

    Node Storage Capacity

    +

    Storage space. Its value varies with node specifications.

    +

    The node storage capacity must be a multiple of 20.

    +

    Disk Encryption

    +

    If you select this option, the nodes in the cluster you create will use encrypted EVS disks to protect data. By default, this option is not selected. Note that you cannot modify this setting after the cluster is created. Therefore, exercise caution when performing the setting.

    +

    After you select this option, you need to select an available key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    +

    Enabling disk encryption has no impact on your operations on a cluster (such as accessing the cluster and importing data to the cluster). However, after you enable disk encryption, operation performance deteriorates by about 10%.

    +
    NOTE:
    • If the cluster is in the Available status and the key used for disk encryption is in the Pending deletion or disable status or has been deleted after a cluster is created, cluster scale-out is not allowed. However, other operations on the cluster, such as restarting the cluster, creating snapshots, restoring the cluster, and importing data to the cluster are not affected. In addition, this key cannot be used for cluster creation in the future.
    • After a cluster is created, do not delete the key used by the cluster. Otherwise, the cluster will become unavailable.
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    +
    +

    Master node

    +

    The master node manages all nodes in the cluster. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the master node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    +

    After enabling the master node, specify Node Specifications, Nodes, and Node Storage Type. The value of Nodes must be an odd number greater than or equal to 3. Up to nine nodes are supported. The value of Node Storage Capacity is fixed. You can select a storage type based on your needs.

    +

    Client node

    +

    The client node allows clients to access clusters and analyze data. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the client node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    +

    After enabling the client node, specify Node Specifications, Nodes and Node Storage Type. The value of Nodes ranges from 1 to 32. The value of Node Storage Capacity is fixed. You can select a storage type based on your needs.

    +

    Cold data node

    +

    The cold data node is used to store historical data, for which query responses can be returned in minutes. If you do not quire a quick query response, store historical data on cold data nodes to reduce costs.

    +

    After enabling cold data node, configure Node Specifications, Nodes, Node Storage Type, and Node Storage Capacity. The value of Nodes ranges from 1 to 32. Select Node Storage Type and Node Storage Capacity as required.

    +

    After the cold data node is enabled, CSS automatically adds cold and hot tags to related nodes.

    +
    +
    +
    Figure 1 Configuring host specifications
    +
  6. Set the enterprise project.

    When creating a CSS cluster, you can bind an enterprise project to the cluster if you have enabled the enterprise project function. You can select an enterprise project created by the current user from the drop-down list on the right or click View Project Management to go to the Enterprise Project Management console and create a new project or view existing projects.

    +
  7. Set network specifications of the cluster. +
    + + + + + + + + + + + + + + + + +
    Table 4 Parameter description

    Parameter

    +

    Description

    +

    VPC

    +

    A VPC is a secure, isolated, and logical network environment.

    +

    Select the target VPC. Click View VPC to enter the VPC management console and view the created VPC names and IDs. If no VPCs are available, create one.

    +
    NOTE:

    The VPC must contain CIDRs. Otherwise, cluster creation will fail. By default, a VPC will contain CIDRs.

    +
    +

    Subnet

    +

    A subnet provides dedicated network resources that are isolated from other networks, improving network security.

    +

    Select the target subnet. You can access the VPC management console to view the names and IDs of the existing subnets in the VPC.

    +

    Security Group

    +

    A security group is a collection of access control rules for ECSs that have the same security protection requirements and are mutually trusted in a VPC. To view more details about the security group, click View Security Group.

    +
    NOTE:
    • For cluster access purposes, ensure that the security group contains port 9200.
    • If your cluster version is 7.6.2 or later, ensure that all the ports used for communication between nodes in the same security group are allowed. If such settings cannot be configured, ensure at least the access to port 9300 is allowed.
    • After the port 9300 is enabled, if the cluster disk usage is high, delete expired data to release the disk storage space.
    +
    +

    Security Mode

    +

    Security mode is disabled.

    +
    +
    +
    Figure 2 Configuring network specifications
    +
  8. Click Next: Configure Advanced Settings. Configure the automatic snapshot creation and other functions.
    1. Configure Cluster Snapshot. Set basic configuration and snapshot configuration.

      The cluster snapshot function is enabled by default. You can also disable this function as required. To store automatic snapshots in OBS, an agency will be created to access OBS. Additional cost will be incurred if snapshots are stored in standard storage.

      + +
      + + + + + + + + + + + + + + + + +
      Table 5 Cluster snapshot parameter

      Parameter

      +

      Description

      +

      OBS bucket

      +

      Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

      +

      The created or existing OBS bucket must meet the following requirements:

      +
      • Storage Class is Standard or Warm.
      • Region must be the same as that of the created cluster.
      +

      Backup Path

      +

      Storage path of the snapshot in the OBS bucket.

      +
      The backup path configuration rules are as follows:
      • The backup path cannot contain the following characters: \:*?"<>|
      • The backup path cannot start with a slash (/).
      • The backup path cannot start or end with a period (.).
      • The backup path cannot contain more than 1,023 characters.
      +
      +

      IAM Agency

      +

      IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

      +

      The created or existing IAM agency must meet the following requirements:

      +
      • Agency Type must be Cloud service.
      • Set Cloud Service to CSS.
      • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
      +

      Snapshot Encryption

      +

      Whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

      +

      After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to switch to the KMS management console to create or modify a key. For details, see Creating a CMK.

      +
      • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
      • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
      • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
      • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
      +
      +
      + +
      + + + + + + + + + + + + + + + + +
      Table 6 Automatic snapshot creation parameter

      Parameter

      +

      Description

      +

      Snapshot Name Prefix

      +

      The snapshot name prefix contains 1 to 32 characters and must start with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. A snapshot name consists of a snapshot name prefix and a timestamp, for example, snapshot-1566921603720.

      +

      Time Zone

      +

      Time zone for the backup time, which cannot be changed. Specify Backup Started Time based on the time zone.

      +

      Backup Start Time

      +

      The time when the backup starts automatically every day. You can specify this parameter only in full hours, for example, 00:00 or 01:00. The value ranges from 00:00 to 23:00. Select a time from the drop-down list.

      +

      Retention Period (days)

      +

      The number of days that snapshots are retained in the OBS bucket. The value ranges from 1 to 90. You can specify this parameter as required. The system automatically deletes expired snapshots every hour at half past the hour.

      +
      +
      +
      Figure 3 Setting parameters for automatic snapshot creation
      +
    2. Configure advanced settings for the cluster.
      • Default: The VPC Endpoint Service, Kibana Public Access, and Tag functions are disabled by default. You can manually enable these functions after the cluster is created.
      • Custom: You can enable the VPC Endpoint Service and Tag functions as required.
      + +
      + + + + + + + + + + + + + +
      Table 7 Parameters for advanced settings

      Parameter

      +

      Description

      +

      VPC Endpoint Service

      +

      After enabling this function, you can obtain a private domain name for accessing the cluster in the same VPC. For details, see Accessing a Cluster Using a VPC Endpoint.

      +
      NOTE:

      The VPC endpoint service cannot be enabled for a shared VPC.

      +
      +

      Kibana Public Access

      +

      Clusters in non-security mode cannot access Kibana through the Internet.

      +

      Tag

      +

      Adding tags to clusters can help you identify and manage your cluster resources. You can customize tags or use tags predefined by Tag Management Service (TMS). For details, see Managing Tags.

      +

      If your organization has enabled tag policies for CSS, you must comply with the tag policy rules when creating clusters, otherwise, clusters may fail to be created. Contact the organization administrator to learn more about tag policies.

      +
      +
      +
    +
  9. Click Next: Confirm. Check the configuration and click Next to create a cluster.
  10. Click Back to Cluster List to switch to the Clusters page. The cluster you created is listed on the displayed page and its status is Creating. If the cluster is successfully created, its status will change to Available.

    If the cluster creation fails, create the cluster again.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477899176.html b/docs/css/umn/en-us_topic_0000001477899176.html new file mode 100644 index 00000000..cf3dc42f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899176.html @@ -0,0 +1,30 @@ + + +

Flow Control 2.0

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477899180.html b/docs/css/umn/en-us_topic_0000001477899180.html new file mode 100644 index 00000000..c50ecf7f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899180.html @@ -0,0 +1,21 @@ + + +

Creating a Cluster

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477899184.html b/docs/css/umn/en-us_topic_0000001477899184.html new file mode 100644 index 00000000..8cef995f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899184.html @@ -0,0 +1,18 @@ + + +

Removing Specified Nodes

+

If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs. Services will not be interrupted during the removal of specified nodes.

+

Prerequisites

The target cluster is available and has no tasks in progress.

+
+

Constraints

  • Ensure that the disk usage after scale-in is less than 80% and each AZ of each node type has at least one node.
  • In a cross-AZ cluster, the difference between the numbers of the same type nodes in different AZs cannot exceed 1.
  • For a cluster without master nodes, the number of removed data nodes and cold data nodes in a scale-in must be fewer than half of the original number of data nodes and cold data nodes, and the number of remaining data nodes and cold data nodes after a scale-in must be greater than the maximum number of index replicas.
  • For a cluster with master nodes, the number of removed master nodes in a scale-in must be fewer than half of the original master node number. After scale-in, there has to be an odd number of master nodes, and there has to be at least three of them.
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, click the Scale In tab.
  5. On the Scale In tab page, set the following parameters:
    • Whether to perform data migration: If this option is selected, data migration is performed. If the target node contains disabled indexes or indexes that have no replicas, this option must be selected.
    • In the data node table, select the node to be scaled in.
    +
  6. Click Next.
  7. Confirm the information and click Submit.
  8. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling in. When Cluster Status changes to Available, the cluster has been successfully scaled in.
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477899188.html b/docs/css/umn/en-us_topic_0000001477899188.html new file mode 100644 index 00000000..4a77b12b --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899188.html @@ -0,0 +1,42 @@ + + +

Adding Master/Client Nodes

+

If workloads on the data plane of a cluster increase, you can add master or client nodes as needed. Services are not interrupted while they are added.

+

Prerequisites

The target cluster is available and has no tasks in progress.

+
+

Constraints

  • If a cluster already has master and client nodes, the Add Master/Client Node tab is not displayed on the Modify Configuration page. In this case, you need to add the master or client nodes by referring to Scaling Out a Cluster.
  • When you add master or client nodes, the number of nodes that can be configured varies depending on the node type. For details, see Table 1. +
    + + + + + + + + + + +
    Table 1 Number of nodes in different types

    Node Flavor

    +

    Number

    +

    Master node

    +

    An odd number ranging from 3 to 9

    +

    Client node

    +

    1 to 32

    +
    +
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Add Master/Client Node tab.
  5. Select the target node type and set the node specifications, quantity, and storage.
    • Master and client nodes cannot be added at the same time.
    • If a cluster already has a master or client node, you can only add nodes of the other type.
    +
  6. Click Next.
  7. Confirm the information and click Submit.

    Return to the cluster list page. The Task Status of the cluster is Scaling out.

    +
    • If you added a master node and Cluster Status changed to Available, the master node has been successfully added.

      If the cluster version is earlier than 7.x, when the Cluster Status changes to Available, you need to restart all data nodes and cold data nodes in the cluster to make the new node take effect. If the data nodes and cold data nodes are not restarted, the cluster may be reported as unavailable. (The cluster services still run properly.) For details, see Restarting a Cluster.

      +
      +
    • If you added a client node and Cluster Status changed to Available, the client node has been added. You can restart data nodes and cold data nodes to shut down Cerebro and Kibana processes on the nodes.
    +
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001477899192.html b/docs/css/umn/en-us_topic_0000001477899192.html new file mode 100644 index 00000000..029e9c10 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899192.html @@ -0,0 +1,297 @@ + + +

Querying Vectors

+

Standard Query

Standard vector query syntax is provided for vector fields with vector indexes. The following command will return n (specified by size/topk) data records that are most close to the query vector.

+
POST my_index/_search
+{
+  "size":2,
+  "_source": false, 
+  "query": {
+    "vector": {
+      "my_vector": {
+        "vector": [1, 1],
+        "topk":2
+      }
+    }
+  }
+}
+ +
+ + + + + + + + + + + + + + + + + + + +
Table 1 Parameters for standard query

Parameter

+

Description

+

vector (the first one)

+

Indicates that the query type is VectorQuery.

+

my_vector

+

Indicates the name of the vector field you want to query.

+

vector (the second one)

+

Indicates the vector value you want to query, which can be an array or a Base64 string

+

topk

+

Same as the value of size generally.

+

Table 2

+

Indicates optional query parameters. You can adjust the vector index parameters to achieve higher query performance or precision.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 2 Optional query parameters

Type

+

Parameter

+

Description

+

Graph index configuration parameters

+

ef

+

Queue size of the neighboring node during the query. A larger value indicates a higher query precision and slower query speed. The default value is 200.

+

Value range: (0, 100000]

+

max_scan_num

+

Maximum number of scanned nodes. A larger value indicates a higher query precision and slower query speed. The default value is 10000.

+

Value range: (0, 1000000]

+

IVF index configuration parameters

+

nprobe

+

Number of center points. A larger value indicates a higher query precision and slower query speed. The default value is 100.

+

Value range: (0, 100000]

+
+
+
+

Compound Query

Vector search can be used together with other Elasticsearch subqueries, such as Boolean query and post-filtering, for compound query.

+

In the following two examples, top 10 (topk) results closest to the query vector are queried first. filter retains only the results whose my_label field is red.

+
  • Example of a Boolean query
    POST my_index/_search
    +{
    +  "size": 10,
    +  "query": {
    +    "bool": {
    +      "must": {
    +        "vector": {
    +          "my_vector": {
    +            "vector": [1, 2],
    +            "topk": 10
    +          }
    +        }
    +      },
    +      "filter": {
    +        "term": { "my_label": "red" }
    +      }
    +    }
    +  }
    +}
    +
  • Example of post-filtering
    GET my_index/_search
    +{
    +  "size": 10,
    +  "query": {
    +    "vector": {
    +      "my_vector": {
    +        "vector": [1, 2],
    +        "topk": 10
    +      }
    +    }
    +  },
    +  "post_filter": {
    +    "term": { "my_label": "red" }
    +  }
    +}
    +
+
+

ScriptScore Query

You can use script_score to perform Nearest Neighbor Search (NSS) on vectors. The query syntax is provided below.

+

The pre-filtering condition can be any query. script_score traverses only the pre-filtered results, calculates the vector similarity, and sorts and returns the results. The performance of this query depends on the size of the intermediate result set after the pre-filtering. If the pre-filtering condition is set to match_all, brute-force search is performed on all data.

+
POST my_index/_search 
+ { 
+   "size":2, 
+   "query": { 
+   "script_score": { 
+       "query": { 
+         "match_all": {} 
+       }, 
+       "script": { 
+         "source": "vector_score", 
+         "lang": "vector", 
+         "params": { 
+           "field": "my_vector", 
+           "vector": [1.0, 2.0], 
+           "metric": "euclidean" 
+         } 
+       } 
+     } 
+   } 
+ }
+ +
+ + + + + + + + + + + + + + + + + + + +
Table 3 script_score parameters

Parameter

+

Description

+

source

+

Script description. Its value is vector_score if the vector similarity is used for scoring.

+

lang

+

Script syntax description. Its value is vector.

+

field

+

Vector field name

+

vector

+

Vector data to be queried

+

metric

+

Measurement method, which can be euclidean, inner_product, cosine, and hamming.

+

Default value: euclidean

+
+
+
+

Re-Score Query

If the GRAPH_PQ or IVF_GRAPH_PQ index is used, the query results are sorted based on the asymmetric distance calculated by PQ. CSS supports re-scoring and ranking of query results to improve the recall rate.

+

Assuming that my_index is a PQ index, an example of re-scoring the query results is as follows:

+
GET my_index/_search 
+ { 
+   "size": 10, 
+   "query": { 
+     "vector": { 
+       "my_vector": { 
+         "vector": [1.0, 2.0], 
+         "topk": 100 
+       } 
+     } 
+   }, 
+   "rescore": { 
+     "window_size": 100, 
+     "vector_rescore": { 
+       "field": "my_vector", 
+       "vector": [1.0, 2.0], 
+       "metric": "euclidean" 
+     } 
+   } 
+ }
+ +
+ + + + + + + + + + + + + + + + +
Table 4 Rescore parameter description

Parameter

+

Description

+

window_size

+

Vector retrieval returns topk search results and ranks the first window_size results.

+

field

+

Vector field name

+

vector

+

Vector data to be queried

+

metric

+

Measurement method, which can be euclidean, inner_product, cosine, and hamming.

+

Default value: euclidean

+
+
+
+

Painless Syntax Extension

CSS extension supports multiple vector distance calculation functions, which can be directly used in customized painless scripts to build flexible re-score formulas.

+

The following is an example:

+
POST my_index/_search
+{
+  "size": 10,
+  "query": {
+    "script_score": {
+      "query": {
+        "match_all": {}
+      },
+      "script": {
+        "source": "1 / (1 + euclidean(params.vector, doc[params.field]))",
+        "params": {
+          "field": "my_vector",
+          "vector": [1, 2]
+        }
+      }
+    }
+  }
+}
+

The following table lists the distance calculation functions supported by the CSS.

+ +
+ + + + + + + + + + + + + + + + +

Function Signature

+

Description

+

euclidean(Float[], DocValues)

+

Euclidean distance function

+

cosine(Float[], DocValues)

+

Cosine similarity function

+

innerproduct(Float[], DocValues)

+

Inner product function

+

hamming(String, DocValues)

+

Hamming distance function Only vectors whose dim_type is binary are supported. The input query vector must be a Base64-encoded character string.

+
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477899200.html b/docs/css/umn/en-us_topic_0000001477899200.html new file mode 100644 index 00000000..4aa2cc87 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899200.html @@ -0,0 +1,148 @@ + + +

Using Kibana or APIs to Import Data to Elasticsearch

+

You can import data in various formats, such as JSON, to Elasticsearch in CSS by using Kibana or APIs.

+

Importing Data Using Kibana

Before importing data, ensure that you can use Kibana to access the cluster. The following procedure illustrates how to use the POST command to import data.
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters > Elasticsearch to switch to the Clusters page.
  3. Choose Clusters in the navigation pane. Locate the target cluster and click Access Kibana in the Operation column to log in to Kibana.
  4. Click Dev Tools in the navigation tree on the left.
  5. (Optional) On the Console page, run the related command to create an index for storing data and specify a custom mapping to define the data type.

    If there is an available index in the cluster where you want to import data, skip this step. If there is no available index, create an index by referring to the following sample code.

    +

    For example, on the Console page of Kibana, run the following command to create an index named my_store and specify a user-defined mapping to define the data type:

    +
    Versions earlier than 7.x
    PUT /my_store
    +{
    +    "settings": {
    +        "number_of_shards": 1
    +    },
    +    "mappings": {
    +        "products": {
    +            "properties": {
    +                "productName": {
    +                    "type": "text"
    +                },
    +                "size": {
    +                    "type": "keyword"
    +                }
    +            }
    +        }
    +    }
    +}
    +
    +

    Versions 7.x and later

    +
    PUT /my_store
    +{
    +    "settings": {
    +        "number_of_shards": 1
    +    },
    +    "mappings": {
    +        "properties": {
    +            "productName": {
    +                "type": "text"
    +            },
    +            "size": {
    +                "type": "keyword"
    +            }
    +        }
    +    }
    +}
    +
  6. Run commands to import data. For example, run the following command to import a piece of data:
    Versions earlier than 7.x
    POST /my_store/products/_bulk 
    +{"index":{}} 
    +{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
    +
    +

    Versions 7.x and later

    +
    POST /my_store/_bulk  
    +{"index":{}}  
    +{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
    +

    The command output is similar to that shown in Figure 1. If the value of the errors field in the result is false, the data is successfully imported.

    +
    Figure 1 Response message
    +
+
+
+

Importing Data Using APIs

You can call the bulk API using the cURL command to import a JSON data file.

+
  • You are advised to import a file smaller than 50 MB.
  • This section uses a cluster in non-security mode as an example to describe how to run the cURL command to import data..
+
+
  1. Log in to the ECS that you use to access the cluster.
  2. Upload the JSON data file to the ECS.
  3. Run the following commands in the path where the JSON data file is stored in the ECS to import the JSON data to an Elasticsearch cluster.
    In the command, replace the value of {Private network address and port number of the node} with the private network address and port number of a node in the cluster. If the node fails to work, the command will fail to be executed. If the cluster contains multiple nodes, you can replace the value of {Private network address and port number of the node} with the private network address and port number of any available node in the cluster. If the cluster contains only one node, restore the node and execute the command again. test.json indicates the JSON file whose data is to be imported.
    curl -X PUT "http://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json
    +
    +

    If communication encryption has been enabled on the cluster where you will import data, you need to send HTTPS requests and add -k to the cURL command.

    +
    curl -X PUT -k "https://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json
    +

    The value of the -X parameter is a command and that of the -H parameter is a message header. In the preceding command, PUT is the value of the -X parameter and 'Content-Type: application/json' --data-binary @test.json is the value of the -H parameter. Do not add -k between a parameter and its value.

    +
    +

    Example 1: In this example, assume that you need to import data in the test.json file to an Elasticsearch cluster, where communication encryption is disabled and the private network address and port number of one node are 192.168.0.90 and 9200 respectively. The data in the test.json file is as follows:

    +

    Versions earlier than 7.x

    +
    {"index": {"_index":"my_store","_type":"products"}}
    +{"productName":"Autumn new woman blouses 2019","size":"M"}
    +{"index": {"_index":"my_store","_type":"products"}}
    +{"productName":"Autumn new woman blouses 2019","size":"L"}
    +

    Versions 7.x and later

    +
    {"index": {"_index":"my_store"}}
    +{"productName":"Autumn new woman blouse 2019","size":"M"}
    +{"index": {"_index":"my_store"}}
    +{"productName":"Autumn new woman blouse 2019","size":"L"}
    +

    Perform the following steps to import the data:

    +
    1. Run the following command to create an index named my_store:
      Versions earlier than 7.x
      curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      + { 
      +   "settings": { 
      +     "number_of_shards": 1 
      +   }, 
      +   "mappings": { 
      +     "products": { 
      +       "properties": { 
      +         "productName": { 
      +           "type": "text" 
      +           }, 
      +         "size": { 
      +           "type": "keyword" 
      +         } 
      +       } 
      +     } 
      +   } 
      + }'
      +
      +

      Versions 7.x and later

      +
      curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      +{
      +    "settings": {
      +        "number_of_shards": 1
      +    },
      +    "mappings": {
      +        "properties": {
      +            "productName": {
      +                "type": "text"
      +            },
      +            "size": {
      +                "type": "keyword"
      +            }
      +        }
      +    }
      +}'
      +
    2. Run the following command to import the data in the test.json file:
      curl -X PUT "http://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @test.json
      +

      In this case, if the following information is displayed, the data is successfully imported:

      +
      {"took":204,"errors":false,"items":[{"index":{"_index":"my_store","_type":"_doc","_id":"DJQkBIwBbJvUd2769Wi-","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1,"status":201}},{"index":{"_index":"my_store","_type":"_doc","_id":"DZQkBIwBbJvUd2769Wi_","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1,"status":201}}]}
      +
    +

    Example 2: In this example, assume that you need to import data in the test.json file to an Elasticsearch cluster, where communication encryption has been enabled and the node access address and content in the testdata.json are the same as those in example 1. Perform the following steps to import the data:

    +
    1. Run the following command to create an index named my_store:
      curl -X PUT -k https://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      + { 
      +   "settings": { 
      +     "number_of_shards": 1 
      +   }, 
      +   "mappings": { 
      +     "products": { 
      +       "properties": { 
      +         "productName": { 
      +           "type": "text" 
      +           }, 
      +         "size": { 
      +           "type": "keyword" 
      +         } 
      +       } 
      +     } 
      +   } 
      + }'
      +
    2. Run the following command to import the data in the test.json file:
      curl -X PUT -k "https://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @test.json
      +

      In this case, if the following information is displayed, the data is successfully imported:

      +
      {"took":204,"errors":false,"items":[{"index":{"_index":"my_store","_type":"_doc","_id":"DJQkBIwBbJvUd2769Wi-","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1,"status":201}},{"index":{"_index":"my_store","_type":"_doc","_id":"DZQkBIwBbJvUd2769Wi_","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1,"status":201}}]}
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477899208.html b/docs/css/umn/en-us_topic_0000001477899208.html new file mode 100644 index 00000000..e5ccfd94 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899208.html @@ -0,0 +1,19 @@ + + +

Managing the Vector Index Cache

+

The vector retrieval engine is developed in C++ and uses off-heap memory. You can use the following APIs to manage the index cache.

+
  • View cache statistics.
    GET /_vector/stats
    +

    In the implementation of the vector plug-in, the vector index is the same as other types of Lucene indexes. Each segment constructs and stores an index file. During query, the index file is loaded to the non-heap memory. The plug-in uses the cache mechanism to manage the non-heap memory. You can use this API to query the non-heap memory usage, number of cache hits, and number of loading times.

    +
  • Preload the vector index.
    PUT /_vector/warmup/{index_name}
    +

    You can use this API to preload the vector index specified by index_name to the off-heap memory for query.

    +
  • Clear the cache.
    PUT /_vector/clear/cache 
    +
    PUT /_vector/clear/cache/index_name
    +

    The caching mechanism limits the non-heap memory usage when vector indexes are used. When the total index size exceeds the cache size limit, index entry swap-in and swap-out occur, which affects the query performance. You can use this API to clear unnecessary index cache to ensure the query performance of hot data indexes.

    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477899212.html b/docs/css/umn/en-us_topic_0000001477899212.html new file mode 100644 index 00000000..d0142f7f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899212.html @@ -0,0 +1,325 @@ + + +

Using the Open Distro SQL Plug-in to Compile Queries

+

For Elasticsearch 6.5.4 and later versions, Open Distro for Elasticsearch SQL lets you write queries in SQL rather than in the Elasticsearch query domain-specific language (DSL).

+

If you are already familiar with SQL and do not want to learn query DSL, this feature is a great option.

+

Basic Operations

  • Kibana (recommended)
    • Log in to Kibana and send requests using request parameters or request body to _opendistro/_sqlURI in the Dev Tools page.
      POST _opendistro/_sql
      +{
      +  "query": "SELECT * FROM my-index LIMIT 50"
      +}
      +
    • By default, the result is returned in the JSON structure. If you want the result to be returned in the CSV format, run the following command:
      POST _opendistro/_sql?format=csv
      +{
      +  "query": "SELECT * FROM my-index LIMIT 50"
      +}
      +

      When data is returned in the CSV format, each row corresponds to a document and each column corresponds to a field.

      +
    +
  • cURL commands

    You can also run cURL commands in ECS to execute SQL statements.

    +
    curl -XPOST https://localhost:9200/_opendistro/_sql -u username:password -k -d '{"query": "SELECT * FROM kibana_sample_data_flights LIMIT 10"}' -H 'Content-Type: application/json'
    +
+

+
+

Supported Operations

Open Distro for Elasticsearch supports the following SQL operations: statements, conditions, aggregations, include and exclude fields, common functions, joins, and show.

+
  • Statements +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Statements

    Statement

    +

    Example

    +

    Select

    +

    SELECT * FROM my-index

    +

    Delete

    +

    DELETE FROM my-index WHERE _id=1

    +

    Where

    +

    SELECT * FROM my-index WHERE ['field']='value'

    +

    Order by

    +

    SELECT * FROM my-index ORDER BY _id asc

    +

    Group by

    +

    SELECT * FROM my-index GROUP BY range(age, 20,30,39)

    +

    Limit

    +

    SELECT * FROM my-index LIMIT 50 (default is 200)

    +

    Union

    +

    SELECT * FROM my-index1 UNION SELECT * FROM my-index2

    +

    Minus

    +

    SELECT * FROM my-index1 MINUS SELECT * FROM my-index2

    +
    +
    +

    As with any complex query, large UNION and MINUS statements can strain or even crash your cluster.

    +
    +
+
  • Conditions +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Conditions

    Condition

    +

    Example

    +

    Like

    +

    SELECT * FROM my-index WHERE name LIKE 'j%'

    +

    And

    +

    SELECT * FROM my-index WHERE name LIKE 'j%' AND age > 21

    +

    Or

    +

    SELECT * FROM my-index WHERE name LIKE 'j%' OR age > 21

    +

    Count distinct

    +

    SELECT count(distinct age) FROM my-index

    +

    In

    +

    SELECT * FROM my-index WHERE name IN ('alejandro', 'carolina')

    +

    Not

    +

    SELECT * FROM my-index WHERE name NOT IN ('jane')

    +

    Between

    +

    SELECT * FROM my-index WHERE age BETWEEN 20 AND 30

    +

    Aliases

    +

    SELECT avg(age) AS Average_Age FROM my-index

    +

    Date

    +

    SELECT * FROM my-index WHERE birthday='1990-11-15'

    +

    Null

    +

    SELECT * FROM my-index WHERE name IS NULL

    +
    +
    +
  • Aggregations +
    + + + + + + + + + + + + + + + + + + + +
    Table 3 Aggregations

    Aggregation

    +

    Example

    +

    avg()

    +

    SELECT avg(age) FROM my-index

    +

    count()

    +

    SELECT count(age) FROM my-index

    +

    max()

    +

    SELECT max(age) AS Highest_Age FROM my-index

    +

    min()

    +

    SELECT min(age) AS Lowest_Age FROM my-index

    +

    sum()

    +

    SELECT sum(age) AS Age_Sum FROM my-index

    +
    +
    +
+
  • Include and exclude fields +
    + + + + + + + + + + +
    Table 4 Include and exclude fields

    Pattern

    +

    Example

    +

    include()

    +

    SELECT include('a*'), exclude('age') FROM my-index

    +

    exclude()

    +

    SELECT exclude('*name') FROM my-index

    +
    +
    +
+
  • Functions +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 5 Functions

    Function

    +

    Example

    +

    floor

    +

    SELECT floor(number) AS Rounded_Down FROM my-index

    +

    trim

    +

    SELECT trim(name) FROM my-index

    +

    log

    +

    SELECT log(number) FROM my-index

    +

    log10

    +

    SELECT log10(number) FROM my-index

    +

    substring

    +

    SELECT substring(name, 2,5) FROM my-index

    +

    round

    +

    SELECT round(number) FROM my-index

    +

    sqrt

    +

    SELECT sqrt(number) FROM my-index

    +

    concat_ws

    +

    SELECT concat_ws(' ', age, height) AS combined FROM my-index

    +

    /

    +

    SELECT number / 100 FROM my-index

    +

    %

    +

    SELECT number % 100 FROM my-index

    +

    date_format

    +

    SELECT date_format(date, 'Y') FROM my-index

    +
    +
    +

    You must enable fielddata in the document mapping for most string functions to work properly.

    +
    +
+
  • Joins +
    + + + + + + + + + + + + + +
    Table 6 Joins

    Join

    +

    Example

    +

    Inner join

    +

    SELECT s.firstname, s.lastname, s.gender, sc.name FROM student s JOIN school sc ON sc.name = s.school_name WHERE s.age > 20

    +

    Left outer join

    +

    SELECT s.firstname, s.lastname, s.gender, sc.name FROM student s LEFT JOIN school sc ON sc.name = s.school_name

    +

    Cross join

    +

    SELECT s.firstname, s.lastname, s.gender, sc.name FROM student s CROSS JOIN school sc

    +
    +
    +

    For details about the restrictions, see Joins.

    +
+
  • Show

    Show commands display indexes and mappings that match an index pattern. You can use * or % for wildcards.

    + +
    + + + + + + + +
    Table 7 Show

    Show

    +

    Example

    +

    Show tables like

    +

    SHOW TABLES LIKE logs-*

    +
    +
    +
+
+

Joins

Open Distro for Elasticsearch SQL supports inner joins, left outer joins and cross joins. Joins have the following constraints:

+
  • You can only join two indexes.
+
  • You must use an alias for an index (for example, people p).
+
  • In an ON clause, you can only use the AND conditions.
+
  • In a WHERE statement, do not combine trees that contain multiple indexes. For example, the following statement will work:
    WHERE (a.type1 > 3 OR a.type1 < 0) AND (b.type2 > 4 OR b.type2 < -1)
    +
    The following statement will not work:
    WHERE (a.type1 > 3 OR b.type2 < 0) AND (a.type1 > 4 OR b.type2 < -1)
    +
    +
+
  • You cannot use GROUP BY or ORDER BY to obtain results.
+
  • LIMIT with OFFSET (for example, LIMIT 25 OFFSET 25) is not supported.
+
+

JDBC Driver

The Java Database Connectivity (JDBC) driver allows you to integrate Open Distro for Elasticsearch with your business intelligence (BI) applications.

+

For details about how to download and use JAR files, see GitHub Repositories.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001477899216.html b/docs/css/umn/en-us_topic_0000001477899216.html new file mode 100644 index 00000000..89ea42af --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899216.html @@ -0,0 +1,152 @@ + + +

Change History

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Released On

+

Description

+

2024-05-17

+

Added the following sections:

+ +

2024-02-07

+

Deleted:

+ +

Added:

+

New examples in section "Enhanced Import Performance" > Optimization of Other Parameters.

+

2023-12-15

+

Delete the following sections:

+
  • Using the OpenDistro Alarm Plugin
  • (Optional) Service Authorization
  • Logstash
  • Intelligent O&M
+

2023-09-25

+

Added the following sections:

+ +

2023-03-28

+
+

2022-09-14

+

Updated Index Backup and Restoration.

+

2022-07-28

+

Added the cluster version 7.10.2.

+

2022-06-30

+

Added the description about cluster version 7.9.3.

+

Supported the VPC endpoint service Accessing a Cluster Using a VPC Endpoint.

+

Optimized following sections based on the use cases and operation flow:

+ +

2020-08-30

+
+

2019-03-15

+
+

2019-01-26

+

Accepted in OTC-3.2/Agile-01.2019.

+

2019-01-17

+
+

2018-12-17

+
+

2018-12-03

+

Updated the screenshots in section "Why Does My ECS Fail to Connect to a Cluster?".

+

2018-11-02

+

Updated descriptions in the following sections based on software function changes:

+

Index Backup and Restoration

+

2018-10-19

+

Added parameter descriptions and modified the description of operations in the following section:

+

Index Backup and Restoration

+

2018-10-12

+

Added the description about the automatic snapshot deletion time in the following section:

+

Index Backup and Restoration

+

2018-10-08

+

Accepted in OTC-3.2.

+

2018-09-28

+
+

2018-09-14

+

Added Cluster List Overview.

+

2018-08-20

+
+

2018-07-31

+

This issue is the first official release.

+
+
+
+ diff --git a/docs/css/umn/en-us_topic_0000001477899220.html b/docs/css/umn/en-us_topic_0000001477899220.html new file mode 100644 index 00000000..a2fcdfc4 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899220.html @@ -0,0 +1,18 @@ + + +

Large Query Isolation

+

+
+
+ + + +
+ diff --git a/docs/css/umn/en-us_topic_0000001477899224.html b/docs/css/umn/en-us_topic_0000001477899224.html new file mode 100644 index 00000000..699ca50b --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001477899224.html @@ -0,0 +1,13 @@ + + +

Stopping Index Synchronization

+

You can specify multiple indexes or use wildcard to match the target indexes and terminate their synchronization tasks. Subsequent modifications to the indexes in the primary cluster will not be synchronized to the secondary cluster. The read-only state of the indexes in the secondary cluster is cancelled, and new data can be written to the secondary cluster.

+

An example request is as follows:

+
PUT log*/stop_remote_sync
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001504911882.html b/docs/css/umn/en-us_topic_0000001504911882.html new file mode 100644 index 00000000..0f724fdd --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001504911882.html @@ -0,0 +1,37 @@ + + + +

Elasticsearch

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001527697777.html b/docs/css/umn/en-us_topic_0000001527697777.html new file mode 100644 index 00000000..7e5cf7f2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527697777.html @@ -0,0 +1,23 @@ + + +

How Do I Query Snapshot Information?

+

Prerequisites

The snapshot function has been enabled for the cluster and snapshot information has been configured.

+
+

Querying a Snapshot

  1. Log in to the CSS management console, and click Clusters in the navigation pane. On the displayed Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  2. In the left navigation pane of the Kibana page, click Dev Tools. Click Get to work to switch to the Console page.

    Enter the code as required in the left pane, click to execute the command, and view the result in the right pane.

    +
  3. Run the GET _snapshot/_all command to query information about all repositories.
    Figure 1 Querying information about all repositories
    +
    • bucket: OBS bucket name
    • base_path: Path. It consists of a fixed prefix and a cluster name.
    • endpoint: OBS domain name
    • region: your region
    +
  4. Query snapshot information.
    1. Run the GET _snapshot/repo_auto/_all command to query the list of all the snapshots in the current repository.
      Figure 2 Snapshot information
      +
      • snapshot: snapshot name
      • state: snapshot status
      • start_time, start_time_in_millis, end_time, and end_time_in_millis: snapshot time
      • shards: the number of shards. total indicates the total number of shards. failed indicates the number of failures. successful indicates the number of successes.
      +
    2. Run the GET _snapshot/repo_auto/$snapshot-xxx command to query information about a specified snapshot.
      • Replace $snapshot-xxx with the actual snapshot name.
      • repo_auto is followed by a snapshot name or wildcard characters.
      +
    +
  5. (Optional) Delete information about a specified snapshot.

    To delete a specific snapshot, run the DELETE _snapshot/ repo_auto/$snapshot-xxx command.

    +

    Replace $snapshot-xxx with the actual snapshot name.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527697781.html b/docs/css/umn/en-us_topic_0000001527697781.html new file mode 100644 index 00000000..7f791c9d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527697781.html @@ -0,0 +1,25 @@ + + +

How Do I Set the Default Maximum Number of Records Displayed on a Page for an Elasticsearch Cluster

+

Solution

  • Method 1

    Open Kibana and run the following commands on the Dev Tools page:

    +
    PUT _all/_settings?preserve_existing=true
    +{
    +"index.max_result_window" : "10000000"
    +}
    +
  • Method 2

    Run the following commands in the background:

    +
    curl –XPUT 'http://localhost:9200/_all/_setting?preserve_existing=true'-d
    +{
    +"index.max_result_window":"1000000"
    +}
    +
+
+

This configuration consumes memory and CPU resources. Exercise caution when setting this parameter.

+
+

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527697785.html b/docs/css/umn/en-us_topic_0000001527697785.html new file mode 100644 index 00000000..7eb600c3 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527697785.html @@ -0,0 +1,35 @@ + + + +

Resource Usage and Change

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001527697789.html b/docs/css/umn/en-us_topic_0000001527697789.html new file mode 100644 index 00000000..0786682a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527697789.html @@ -0,0 +1,19 @@ + + + +

Components

+ +

+
+ +
+ + + +
+ diff --git a/docs/css/umn/en-us_topic_0000001527697793.html b/docs/css/umn/en-us_topic_0000001527697793.html new file mode 100644 index 00000000..d0751c51 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527697793.html @@ -0,0 +1,13 @@ + + +

Do Ports 9200 and 9300 Both Open?

+

Yes. Port 9200 is used by external systems to access CSS clusters, and port 9300 is used for communication between nodes.

+

The methods for accessing port 9300 are as follows:

+
  • If your client is in the same VPC and subnet with the CSS cluster, you can access it directly.
  • If your client is in the same VPC with but different subnet from the CSS cluster, apply for a route separately.
  • If your client is in the different VPCs and subnets from the CSS cluster, create a VPC peering connection to enable communication between the two VPCs, and then apply for routes to connect the two subnets.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527697797.html b/docs/css/umn/en-us_topic_0000001527697797.html new file mode 100644 index 00000000..be08f5ce --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527697797.html @@ -0,0 +1,13 @@ + + +

How Do I Check the Numbers of Shards and Replicas in a Cluster on the CSS Console?

+
  1. Log in to the console.
  2. On the Clusters page, click Access Kibana in the Operation column of a cluster.
  3. Log in to Kibana and choose Dev Tools.

    +
  4. On the Console page, run the GET _cat/indices?v command query the number of shards and replicas in a cluster. In the following figure, the pri column indicates the number of index shards, and the rep column indicates the number of replicas. After an index is created, its pri value cannot be modified. Its rep value can be modified.

    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527777425.html b/docs/css/umn/en-us_topic_0000001527777425.html new file mode 100644 index 00000000..0eee1f04 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527777425.html @@ -0,0 +1,14 @@ + + +

Why Does the Disk Usage Increase After the delete_by_query Command Was Executed to Delete Data?

+

Running the delete_by_query command can only add a deletion mark to the target data instead of really deleting it. When you search for data, all data is searched and the data with the deletion mark is filtered out.

+

The space occupied by an index with the deletion mark will not be released immediately after you call the disk deletion API. The disk space is released only when the segment merge is performed next time.

+

Querying the data with deletion mark occupies disk space. In this case, the disk usage increases when you run the disk deletion commands.

+

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527777429.html b/docs/css/umn/en-us_topic_0000001527777429.html new file mode 100644 index 00000000..3156aff2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527777429.html @@ -0,0 +1,16 @@ + + +

The Average Memory Usage of an Elasticsearch Cluster Reaches 98%

+

Symptom

The cluster monitoring result shows that the average memory usage of a cluster is 98%. Does it affect cluster performance?

+
+

Possible Cause

In an ES cluster, 50% of the memory is occupied by Elasticsearch and the other 50% is used by Lucene to cache files. It is normal that the average memory usage reaches 98%.

+
+

Solution

You can monitor the cluster memory usage by checking the maximum JVM heap usage and average JVM heap usage.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527777433.html b/docs/css/umn/en-us_topic_0000001527777433.html new file mode 100644 index 00000000..e97f09cb --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527777433.html @@ -0,0 +1,23 @@ + + + +

Clusters in Security Mode

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001527777437.html b/docs/css/umn/en-us_topic_0000001527777437.html new file mode 100644 index 00000000..267d1856 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527777437.html @@ -0,0 +1,16 @@ + + +

Can I Modify the TLS Algorithm of an Elasticsearch Cluster?

+

You can modify TLS algorithms in CSS 7.6.2 and later versions.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. The cluster list is displayed.
  3. Click the name of the target cluster to go to the cluster details page.
  4. Select Parameter Configurations, click Edit, expand the Customize parameter, and click Add.

    Add the opendistro_security.ssl.http.enabled_ciphers parameter and set it to ['TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'].

    +

    If the parameter value contains multiple algorithm protocols, enclose the value with a pair of square brackets ([]). If the parameter value is a single algorithm protocol, enclose the value with a pair of single quotation marks(' ').

    +
    +
  5. After the modification is complete, click Submit.In the displayed Submit Configuration dialog box, select the box indicating "I understand that the modification will take effect after the cluster is restarted." and click Yes.

    If the Status is Succeeded in the parameter modification list, the modification has been saved.

    +
  6. Return to the cluster list and choose More > Restart in the Operation column to restart the cluster and make the modification take effect.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527777441.html b/docs/css/umn/en-us_topic_0000001527777441.html new file mode 100644 index 00000000..7180ca77 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527777441.html @@ -0,0 +1,17 @@ + + +

How Do I Query Index Data on Kibana in an ES Cluster?

+

+

Run the following command to query index data through an API on Kibana:

+
GET indexname/_search
+

The returned data is shown in the following figure.

+
Figure 1 Returned data
+
  • took: How many milliseconds the query cost.
  • time_out: Whether a timeout occurred.
  • _shard: Data is split into five shards. All of the five shards have been searched and data is returned successfully. No query result fails to be returned. No data is skipped.
  • hits.total: Number of query results. Three documents are returned in this example.
  • max_score: Score of the returned documents. The document that is more relevant to your search criteria would have a higher score.
  • hits.hits: Detailed information of the returned documents.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527777445.html b/docs/css/umn/en-us_topic_0000001527777445.html new file mode 100644 index 00000000..9c2a2a9d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527777445.html @@ -0,0 +1,11 @@ + + +

How Do I Delete Index Data?

+
  • Manually: Run the DELETE /my_index command in Kibana.
  • Automatically: Create scheduled tasks to call the index deletion request and periodically execute the tasks. CSS supports Open Distro Index State Management. For details, see: https://opendistro.github.io/for-elasticsearch-docs/docs/im/ism/
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527777449.html b/docs/css/umn/en-us_topic_0000001527777449.html new file mode 100644 index 00000000..c8da36e2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527777449.html @@ -0,0 +1,23 @@ + + +

Why All New Index Shards Are Allocated to the Same Node?

+

Possible Cause

The possible causes are as follows:

+
  • Shards were unevenly distributed in previous index allocations, and the predominate parameter in the latest indexed shard allocation was balance.shard. To balance the shard distribution across nodes, the new shards were allocated to the node with only a small number of shards.
  • After a new node was added to a cluster and before the automatic cluster rebalancing completes, the predominate parameter was balance.shard. The shards of a new index are allocated to the new node, where there are no shards yet.
+

The following two parameters are used to balance the shard allocation in a cluster:

+

cluster.routing.allocation.balance.index (default value: 0.45f)

+

cluster.routing.allocation.balance.shard (default value: 0.55f)

+
  • balance.index: A larger value indicates that all the shards of an index are more evenly distributed across nodes. For example, if an index has six shards and there are three data nodes, two shards will be distributed on each node.
  • balance.shard: A larger value indicates that all the shards of all the indexes are more evenly distributed across nodes. For example, if index a has two shards, index b has four, and there are three data nodes, two shards will be distributed on each node.
  • You can specify both balance.index and balance.shard to balance the shard allocation.
+
+
+

Solution

To prevent the all the shards of an index from being allocated to a single node, use either of the following methods:

+
  1. To create an index during cluster scale-out, configure the following parameter:
    "index.routing.allocation.total_shards_per_node": 2
    +

    That is, allow no more than two shards of an index to be allocated on each node. Determine the maximum number of shards allocated to each node based on the number of data nodes in your cluster and the number of index shards (both primary and secondary).

    +
  1. If too many shards are distributed on only a few nodes, you can move some of the shards to other nodes to balance the distribution. Run the move command of POST _cluster/reroute. The rebalance module will automatically exchange the shard with a shard on the destination node. Determine the values of balance.index and balance.shard as needed.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527937329.html b/docs/css/umn/en-us_topic_0000001527937329.html new file mode 100644 index 00000000..3003b84e --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527937329.html @@ -0,0 +1,13 @@ + + +

Can I Export Data from Kibana?

+

Exporting data from Kibana requires the SQL Workbench plugin. Currently, you can only export data from Kibana 7.6.2 or later.

+

In SQL Workbench of Kibana, you can enter Elasticsearch SQL statements to query data or click Download to export data. You can export 1 to 200 data records. By default, 200 data records are exported.

+
Figure 1 SQL Workbench
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527937333.html b/docs/css/umn/en-us_topic_0000001527937333.html new file mode 100644 index 00000000..5ecc93be --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527937333.html @@ -0,0 +1,18 @@ + + +

How Do I Configure a Two-Replica CSS Cluster?

+
  1. Run GET _cat/indices?v in Kibana to check the number of cluster replicas. If the value of rep is 1, the cluster has two replicas.

    +
  2. If the value of rep is not 1, run the following command to set the number of replicas:

    PUT /index/_settings

    +

    {

    +

    "number_of_replicas" : 1 //Number of replicas

    +

    }

    +

    index specifies the index name. Set this parameter based on site requirements.

    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527937337.html b/docs/css/umn/en-us_topic_0000001527937337.html new file mode 100644 index 00000000..692ef457 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527937337.html @@ -0,0 +1,11 @@ + + +

What Is the Maximum Storage Capacity of CSS?

+

You can configure up to 200 nodes for a cluster (each node corresponds to an ECS). The maximum storage capacity of an ECS is the total capacity of EVS disks attached to the ECS. You can calculate the total storage capacity of CSS based on the sizes of EVS disks attached to different ECSs. The EVS disk size is determined by the node specifications selected when you create the cluster.

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527937341.html b/docs/css/umn/en-us_topic_0000001527937341.html new file mode 100644 index 00000000..1be3f294 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527937341.html @@ -0,0 +1,15 @@ + + +

Can Elasticsearch Data Be Migrated Between VPCs?

+

Elasticsearch does not support direct data migration between different VPCs. You can use either of the following methods to migrate data.

+

Method 1

Use the backup and restoration function to migrate cluster data.

+
+

Method 2

  1. Connect the VPC network and establish a VPC peering connection.
  2. After the network is connected, use Logstash to migrate data.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001527937345.html b/docs/css/umn/en-us_topic_0000001527937345.html new file mode 100644 index 00000000..e666b403 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001527937345.html @@ -0,0 +1,18 @@ + + +

Kibana

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528097289.html b/docs/css/umn/en-us_topic_0000001528097289.html new file mode 100644 index 00000000..b2578f09 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528097289.html @@ -0,0 +1,18 @@ + + +

How Do I Clear Expired Data to Release Storage Space?

+
  • Run the following command to delete a single index data record.

    curl -XDELETE http://IP:9200/Index_name

    +

    IP: the IP address of any node in the cluster

    +
    +
  • Run the following command to delete all Logstash data of a day. For example, delete all data on June 19, 2017:

    For a cluster in non-security mode: curl -XDELETE 'http://IP:9200/logstash-2017.06.19*'

    +

    For a cluster in security mode: curl -XDELETE -u username:password 'https://IP:9200/logstash-2017.06.19' -k

    +
    • username: username of the administrator. The default value is admin.
    • password: the password set during cluster creation
    • IP: the IP address of any node in the cluster
    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528097293.html b/docs/css/umn/en-us_topic_0000001528097293.html new file mode 100644 index 00000000..b7b1e22f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528097293.html @@ -0,0 +1,12 @@ + + +

What Storage Options Does CSS Provide?

+

CSS uses EVS and local disks to store your indices. During cluster creation, you can specify the EVS disk type and specifications (the EVS disk size).

+
  • Supported EVS disk types include common I/O, high I/O, and ultra-high I/O.
  • The EVS disk size varies depending on the node specifications selected when you create a cluster.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528097297.html b/docs/css/umn/en-us_topic_0000001528097297.html new file mode 100644 index 00000000..a03b8844 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528097297.html @@ -0,0 +1,15 @@ + + +

Which CSS Metrics Should I Focus On?

+

Disk usage and cluster health status are two key metrics that you can focus on. You can log in to Cloud Eye and configure alarm rules for these metrics. If alarms are reported, handle them by taking appropriate measures.

+

Configuration examples:

+
  • Alarms are reported if the disk usage is higher than or equal to a specified value (for example, 85%) and has reached this value multiple times (for example, 5 times) within a specified time period (for example, 5 minutes).
  • Alarms are reported if the value of the cluster health status metric exceeds 0 for multiple times (for example, 5 times) within a specified time period (for example, 5 minutes).
+

Measures:

+
  • If disk usage alarms are reported, view available disk space, check whether data can be deleted from cluster nodes or archived to other systems to free up space, or check if you can expand the disk capacity.
  • If cluster health status alarms are reported, check whether shard allocation is normal, whether shards have been lost, and check whether the process has been restarted on Cerebro.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528097305.html b/docs/css/umn/en-us_topic_0000001528097305.html new file mode 100644 index 00000000..2b1667d1 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528097305.html @@ -0,0 +1,22 @@ + + +

What Are Regions and AZs?

+

Regions and AZs

A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.

+
  • A region is a physical data center. Each region is completely independent, and thereby improves fault tolerance and stability. After a resource is created, its region cannot be changed.
  • An AZ is a physical location using independent power supplies and networks. Faults in an AZ do not affect other AZs. A region can contain multiple AZs that are physically isolated but networked together. This enables low-cost and low-latency network connections.
+
Figure 1 shows the relationship between regions and AZs.
Figure 1 Regions and AZs
+
+
+

Region Selection

You are advised to select a region close to you or your target users. This reduces network latency and improves the access success rate.

+
+

AZ Selection

When determining whether to deploy resources in the same AZ, consider your application's requirements for disaster recovery (DR) and network latency.

+
  • To prioritize DR capabilities, deploy resources in different AZs in the same region.
  • To prioritize network latency, deploy resources in the same AZ.
+
+

Regions and Endpoints

Before using an API to call resources, you will need to specify the resource region and endpoint. For details, see "Endpoints" in Cloud Search Service API Reference.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528097309.html b/docs/css/umn/en-us_topic_0000001528097309.html new file mode 100644 index 00000000..a7e4c4c7 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528097309.html @@ -0,0 +1,14 @@ + + +

How Do I Migrate a CSS Cluster Across Regions?

+

CSS clusters cannot be directly migrated. You can back up a cluster to an OBS bucket and restore it to a new region.

+
  • If the OBS bucket is in the same region as your CSS cluster, migrate the cluster by following the instructions in Index Backup and Restoration.
  • If the OBS bucket is not in the same region as your CSS cluster, configure cross-region replication to back up the cluster to the bucket, and migrate the cluster by following the instructions in Index Backup and Restoration.
+
  • Before cross-region replication, ensure the snapshot folder of the destination cluster is empty. Otherwise, the snapshot information cannot be updated to the snapshot list of the destination cluster.
  • Before every migration, ensure the folder is empty.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528097313.html b/docs/css/umn/en-us_topic_0000001528097313.html new file mode 100644 index 00000000..5bbcbc3a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528097313.html @@ -0,0 +1,15 @@ + + +

How Do I Create a Type Under an Index in an Elasticsearch 7.x Cluster?

+

In Elasticsearch 7.x and later versions, types cannot be created for indexes.

+

If you need to use types, add include_type_name=true to the command. For example:

+
PUT _template/urldialinfo_template?include_type_name=true
+

After the command is executed, the following information is displayed:

+
"#! Deprecation: [types removal] Specifying include_type_name in put index template requests is deprecated. The parameter will be removed in the next major version. "
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528097317.html b/docs/css/umn/en-us_topic_0000001528097317.html new file mode 100644 index 00000000..17320950 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528097317.html @@ -0,0 +1,25 @@ + + +

How Do I Clear the Cache of a CSS Cluster?

+
  • Clear the fielddata

    During aggregation and sorting, data are converted to the fielddata structure, which occupies a large amount of memory.

    +
    1. Run the following commands on Kibana to check the memory occupied by index fielddata:
      DELETE /_search/scroll
      +{
      +"scroll_id" :
      +"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
      +}
      +
    2. If the memory usage of fielddata is too high, you can run the following command to clear fielddata:
      POST /test/_cache/clear?fielddata=true 
      +
    +

    In the preceding command, test indicates the name of the index whose fielddata occupies a large amount of memory.

    +
  • Clear segments

    The FST structure of each segment is loaded to the memory and will not be cleared. If the number of index segments is too large, the memory usage will be high. You are advised to periodically clear the segments.

    +
    1. Run the following command on Kibana to check the number of segments and their memory usage on each node:
      GET /_cat/nodes?v&h=segments.count,segments.memory&s=segments.memory:desc
      +
    2. If the memory usage of segments is too high, you can delete or disable unnecessary indexes, or periodically combine indexes that are not updated.
    +
  • Clear the cache

    Run the following command on Kibana to clear the cache:

    +
    POST _cache/clear
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299557.html b/docs/css/umn/en-us_topic_0000001528299557.html new file mode 100644 index 00000000..786f9603 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299557.html @@ -0,0 +1,232 @@ + + +

Creating a Vector Index

+

Prerequisites

+
+

Creating a Vector Index

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Click Dev Tools in the navigation tree on the left and run the following command to create a vector index.

    Create an index named my_index that contains a vector field my_vector and a text field my_label. The vector field creates the graph index and uses Euclidean distance to measure similarity.

    +
    PUT my_index 
    +{
    +  "settings": {
    +    "index": {
    +      "vector": true
    +    }
    +  },
    +  "mappings": {
    +    "properties": {
    +      "my_vector": {
    +        "type": "vector",
    +        "dimension": 2,
    +        "indexing": true,
    +        "algorithm": "GRAPH",
    +        "metric": "euclidean"
    +      },
    +      "my_label": {
    +        "type": "text"
    +      }
    +    }
    +  }
    +}
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for creating an index

    Type

    +

    Parameter

    +

    Description

    +

    Index settings parameters

    +

    vector

    +

    To use a vector index, set this parameter to true.

    +

    Field mappings parameters

    +

    type

    +

    Field type, for example, vector.

    +

    dimension

    +

    Vector dimension. Value range: [1, 4096]

    +

    indexing

    +

    Whether to enable vector index acceleration.

    +
    The value can be:
    • false: disables vector index acceleration. If this parameter is set to false, vector data is written only to docvalues, and only ScriptScore and Rescore can be used for vector query.
    • true: enables vector index acceleration. If this parameter is set to true, an extra vector index is created. The index algorithm is specified by the algorithm field and VectorQuery can be used for data query.
    +
    +

    Default value: false

    +

    algorithm

    +

    Index algorithm. This parameter is valid only when indexing is set to true.

    +
    The value can be:
    • FLAT: brute-force algorithm that calculates the distance between the target vector and all vectors in sequence. The algorithm relies on sheer computing power and its recall rate reaches 100%. You can use this algorithm if you require high recall accuracy.
    • GRAPH: Hierarchical Navigable Small Worlds (HNSW) algorithm for graph indexes. This algorithm is mainly used in scenarios where high performance and precision are required and the data records of a single shard is fewer than 10 million.
    • GRAPH_PQ: combination of the HNSW algorithm and the PQ algorithm. The PQ algorithm reduces the storage overhead of original vectors, so that HNSW can easily search for data among hundreds of millions of records.
    • IVF_GRAPH: combination of IVF and HNSW. The entire space is divided into multiple cluster centroids, which makes search much faster but slightly inaccurate. You can use this algorithm if you require high performance when searching for data among hundreds of millions of records.
    • IVF_GRAPH_PQ: combination of the PQ algorithm with the IVF or HNSW algorithm to further improve the system capacity and reduce the system overhead. This algorithm is applicable to scenarios where there are more than 1 billion files in shards and high retrieval performance is required.
    • PV_GRAPH: Improved Hierarchical Navigable Small Worlds (HNSW) algorithm for graph index. This algorithm is applicable to scenarios where there are fewer than 10 million files in a single shard, available memory resources are sufficient, and high performance and precision are required. This algorithm supports the vector and scalar joint filtering. Currently, the sub_fields parameter supports only the keyword type. Compared with post-filtering and Boolean query, it greatly improves the filling rate of returned results and the search performance. Only Elasticsearch cluster 7.10.2 supports the PV_GRAPH index.
    +
    +
    Default value: GRAPH
    NOTE:

    If IVF_GRAPH or IVF_GRAPH_PQ is specified, you need to pre-build and register a central point index. For details, see (Optional) Pre-Building and Registering a Center Point Vector.

    +
    +
    +

    Table 2

    +

    If Indexing is set to true, CSS provides optional parameters for vector search to achieve higher query performance or precision.

    +

    metric

    +

    Method of calculating the distance between vectors.

    +

    The value can be:

    +
    • euclidean: Euclidean distance
    • inner_product: inner product distance
    • cosine: cosine distance
    • hamming: Hamming distance, which can be used only when dim_type is set to binary.
    +

    Default value: euclidean

    +

    dim_type

    +

    Type of the vector dimension value.

    +

    The value can be binary and float (default).

    +

    sub_fields

    +

    Define the auxiliary scalar field of vectors. Only the keyword type is supported. This parameter must be specified if you need to use the vector and scalar joint filtering feature. It takes effect only when algorithm is set to PV_GRPAH.

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Optional parameters

    Type

    +

    Parameter

    +

    Description

    +

    Graph index configuration parameters

    +

    neighbors

    +

    Number of neighbors of each vector in a graph index. The default value is 64. A larger value indicates higher query precision. A larger index results in a slower build and query speed.

    +

    Value range: [10, 255]

    +

    shrink

    +

    Cropping coefficient during HNSW build. The default value is 1.0f.

    +

    Value range: (0.1, 10)

    +

    scaling

    +

    Scaling ratio of the upper-layer graph nodes during HNSW build. The default value is 50.

    +

    Value range: (0, 128]

    +

    efc

    +

    Queue size of the neighboring node during HNSW build. The default value is 200. A larger value indicates a higher precision and slower build speed.

    +

    Value range: (0, 100000]

    +

    max_scan_num

    +

    Maximum number of nodes that can be scanned. The default value is 10000. A larger value indicates a higher precision and slower indexing speed.

    +

    Value range: (0, 1000000]

    +

    PQ index configuration parameters

    +

    centroid_num

    +

    Number of cluster centroids of each fragment. The default value is 255.

    +

    Value range: (0, 65535]

    +

    fragment_num

    +

    Number of fragments. The default value is 0. The plug-in automatically sets the number of fragments based on the vector length.

    +

    Value range: [0, 4096]

    +
    +
    +
+
+

Importing Vector Data

Run the following command to import vector data. When writing vector data to the my_index index, you need to specify the vector field name and vector data.

+
  • If the input vector data is an array of floating-point numbers separated by commas (,):
    POST my_index/_doc
    +{
    +  "my_vector": [1.0, 2.0]
    +}
    +
+
  • If the input vector data is a Base64 string encoded using little endian:
    When writing binary vectors or high dimensional vectors that have a large number of valid bits, the Base64 encoding format is efficient for data transmission and parsing.
    POST my_index/_doc
    +{
    +  "my_vector": "AACAPwAAAEA="
    +}
    +
    +
  • To write a large amount of data, bulk operations are recommended.
    POST my_index/_bulk
    +{"index": {}}
    +{"my_vector": [1.0, 2.0], "my_label": "red"}
    +{"index": {}}
    +{"my_vector": [2.0, 2.0], "my_label": "green"}
    +{"index": {}}
    +{"my_vector": [2.0, 3.0], "my_label": "red"}
    +
+
+

Advanced Cluster Configurations

  • When importing data offline, you are advised to set refresh_interval of indexes to -1 to disable automatic index refreshing and improve batch write performance.
  • You are advised to set number_of_replicas to 0. After the offline data import is complete, you can modify the parameter value as needed.
  • The parameters of other advanced functions as follows: +
    + + + + + + + + + + + + + + + + + + + +
    Table 3 Cluster parameters

    Parameter

    +

    Description

    +

    native.cache.circuit_breaker.enabled

    +

    Whether to enable the circuit breaker for off-heap memory.

    +

    Default value: true

    +

    native.cache.circuit_breaker.cpu.limit

    +

    Upper limit of off-heap memory usage of the vector index.

    +

    For example, if the overall memory of a host is 128 GB and the heap memory occupies 31 GB, the default upper limit of the off-heap memory usage is 43.65 GB, that is, (128 - 31) x 45%. If the off-heap memory usage exceeds its upper limit, the circuit breaker will be triggered.

    +

    Default value: 45%

    +

    native.cache.expire.enabled

    +

    Whether to enable the cache expiration policy. If this parameter is set to true, some cache items that have not been accessed for a long time will be cleared.

    +

    Value: true or false

    +

    Default value: false

    +

    native.cache.expire.time

    +

    Expiration time.

    +

    Default value: 24h

    +

    native.vector.index_threads

    +

    Number of threads used for creating underlying indexes. Each shard uses multiple threads. Set a relatively small value to avoid resource preemption caused by the build queries of too many threads.

    +

    Default value: 4

    +
    +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299569.html b/docs/css/umn/en-us_topic_0000001528299569.html new file mode 100644 index 00000000..3300d97d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299569.html @@ -0,0 +1,537 @@ + + +

Freezing an Index

+

Precautions

  • Before freezing an index, ensure no data is being written to it. The index will be set to read only before being frozen, and data write will fail.
  • After an index is frozen:
    • It becomes read-only.
    • The index data will be dumped to OBS. This process occupies network bandwidth.
    • The query latency of a dumped index will increase. During aggregation, the latency of processing complex queries and reading a large volume of data is long.
    • It cannot be unfrozen. That is, a read-only index cannot be changed to writable.
    • After the freezing is complete, the index data in your local disks will be deleted.
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Click Dev Tools in the navigation tree on the left.
  4. Run the following command to freeze a specified index and dump it to OBS:
    POST ${index_name}/_freeze_low_cost
    + +
    + + + + + + + +
    Table 1 Parameter description

    Parameter

    +

    Description

    +

    index_name

    +

    Name of the index to be frozen.

    +
    +
    +

    Information similar to the following is displayed:

    +
    {
    +    "freeze_uuid": "pdsRgUtSTymVDWR_HoTGFw"
    +}
    + +
    + + + + + + + +
    Table 2 Response parameter

    Parameter

    +

    Description

    +

    freeze_uuid

    +

    After an index freezing request is submitted, an asynchronous job will be started. The request returns the asynchronous job ID, which can be used to query the progress of the asynchronous job.

    +
    +
    +

    After an index freezing request is submitted, data cannot be written to the index. During the index freezing, query requests are not affected. After the freezing is complete, the index is closed and then opened. During this period, the index cannot be queried, and the cluster may be in the red status for a short time. The index is restored after being opened.

    +
    +
  5. Run the following command to check the freezing task progress:
    GET _freeze_low_cost_progress/${freeze_uuid}
    + +
    + + + + + + + +
    Table 3 Parameter description

    Parameter

    +

    Description

    +

    freeze_uuid

    +

    Asynchronous task ID, which is obtained in 4.

    +
    +
    +

    Information similar to the following is displayed:

    +
    {
    +
    +  "stage" : "STARTED",
    +  "shards_stats" : {
    +    "INIT" : 0,
    +    "FAILURE" : 0,
    +    "DONE" : 0,
    +    "STARTED" : 3,
    +    "ABORTED" : 0
    +  },
    +  "indices" : {
    +    "data1" : [
    +      {
    +        "uuid" : "7OS-G1-tRke2jHZPlckexg",
    +        "index" : {
    +          "name" : "data1",
    +          "index_id" : "4b5PHXJITLaS6AurImfQ9A",
    +          "shard" : 2
    +        },
    +        "start_ms" : 1611972010852,
    +        "end_ms" : -1,
    +        "total_time" : "10.5s",
    +        "total_time_in_millis" : 10505,
    +        "stage" : "STARTED",
    +        "failure" : null,
    +        "size" : {
    +          "total_bytes" : 3211446689,
    +          "finished_bytes" : 222491269,
    +          "percent" : "6.0%"
    +        },
    +        "file" : {
    +          "total_files" : 271,
    +          "finished_files" : 12,
    +          "percent" : "4.0%"
    +        },
    +        "rate_limit" : {
    +          "paused_times" : 1,
    +          "paused_nanos" : 946460970
    +        }
    +      },
    +      {
    +        "uuid" : "7OS-G1-tRke2jHZPlckexg",
    +        "index" : {
    +          "name" : "data1",
    +          "index_id" : "4b5PHXJITLaS6AurImfQ9A",
    +          "shard" : 0
    +        },
    +        "start_ms" : 1611972010998,
    +        "end_ms" : -1,
    +        "total_time" : "10.3s",
    +        "total_time_in_millis" : 10359,
    +        "stage" : "STARTED",
    +        "failure" : null,
    +        "size" : {
    +          "total_bytes" : 3221418186,
    +          "finished_bytes" : 272347118,
    +          "percent" : "8.0%"
    +        },
    +        "file" : {
    +          "total_files" : 372,
    +          "finished_files" : 16,
    +          "percent" : "4.0%"
    +        },
    +        "rate_limit" : {
    +          "paused_times" : 5,
    +          "paused_nanos" : 8269016764
    +        }
    +      },
    +      {
    +        "uuid" : "7OS-G1-tRke2jHZPlckexg",
    +        "index" : {
    +          "name" : "data1",
    +          "index_id" : "4b5PHXJITLaS6AurImfQ9A",
    +          "shard" : 1
    +        },
    +        "start_ms" : 1611972011021,
    +        "end_ms" : -1,
    +        "total_time" : "10.3s",
    +        "total_time_in_millis" : 10336,
    +        "stage" : "STARTED",
    +        "failure" : null,
    +        "size" : {
    +          "total_bytes" : 3220787498,
    +          "finished_bytes" : 305789614,
    +          "percent" : "9.0%"
    +        },
    +        "file" : {
    +          "total_files" : 323,
    +          "finished_files" : 14,
    +          "percent" : "4.0%"
    +        },
    +        "rate_limit" : {
    +          "paused_times" : 3,
    +          "paused_nanos" : 6057933087
    +        }
    +      }
    +    ]
    +  }
    +}
    + +
    + + + + + + + + + + + + + +
    Table 4 Response parameters

    Parameter

    +

    Description

    +

    stage

    +

    Status. Its value can be:

    +
    • INIT: The instance has just started or is being initialized.
    • FAILURE: failed
    • DONE: complete
    • STARTED: started
    • ABORTED: Canceled. This field is reserved.
    +

    shards_stats

    +

    Numbers of shards in each state.

    +

    indices

    +

    Index status details.

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 5 Return values of indices

    Parameter

    +

    Description

    +

    uuid

    +

    UUID of the freezing operation

    +

    index

    +

    Index and shard information

    +

    start_ms

    +

    Start time

    +

    end_ms

    +

    End time. If no end time is specified, the value -1 is displayed.

    +

    total_time

    +

    Time spent

    +

    total_time_in_millis

    +

    Time spent, in milliseconds

    +

    stage

    +

    Status of the current shard.

    +

    failure

    +

    Failure cause. If no failure occurs, null is displayed.

    +

    size.total_bytes

    +

    Size of files to be frozen, in bytes

    +

    size.finished_bytes

    +

    Frozen bytes

    +

    size.percent

    +

    Percentage of frozen bytes

    +

    file.total_bytes

    +

    Number of files to be frozen

    +

    file.finished_bytes

    +

    Number of frozen files

    +

    file.percent

    +

    Percentage of frozen files

    +

    rate_limit.paused_times

    +

    Number of times that freezing is suspended due to rate limit

    +

    rate_limit.paused_nanos

    +

    Duration of freezing task suspension due to rate limit, in nanoseconds

    +
    +
    +

    The following parameters are added to a frozen index. For details, see Table 6.

    + +
    + + + + + + + + + + + + + +
    Table 6 Frozen index parameters

    Parameter

    +

    Description

    +

    index.frozen_low_cost

    +

    Indicates whether an index is frozen. The value is true.

    +

    index.blocks.write

    +

    Indicates whether data writing is denied in a frozen index. The value is true.

    +

    index.store.type

    +

    Storage type of an index. The value is obs.

    +
    +
    +
  6. After an index is frozen, its data will be cached. Run the following command to check the current cache status: For details about the cache, see Configuring Cache.
    GET _frozen_stats
    +GET _frozen_stats/${node_id}
    + +
    + + + + + + + +
    Table 7 Parameter description

    Parameter

    +

    Description

    +

    node_id

    +

    Node ID, which can be used to obtain the cache status of a node.

    +
    +
    +

    Information similar to the following is displayed:

    +
    {
    +  "_nodes" : {
    +    "total" : 3,
    +    "successful" : 3,
    +    "failed" : 0
    +  },
    +  "cluster_name" : "css-zzz1",
    +  "nodes" : {
    +    "7uwKO38RRoaON37YsXhCYw" : {
    +      "name" : "css-zzz1-ess-esn-2-1",
    +      "transport_address" : "10.0.0.247:9300",
    +      "host" : "10.0.0.247",
    +      "ip" : "10.0.0.247",
    +      "block_cache" : {
    +        "default" : {
    +          "type" : "memory",
    +          "block_cache_capacity" : 8192,
    +          "block_cache_blocksize" : 8192,
    +          "block_cache_size" : 12,
    +          "block_cache_hit" : 14,
    +          "block_cache_miss" : 0,
    +          "block_cache_eviction" : 0,
    +          "block_cache_store_fail" : 0
    +        }
    +      },
    +      "obs_stats" : {
    +        "list" : {
    +          "obs_list_count" : 17,
    +          "obs_list_ms" : 265,
    +          "obs_list_avg_ms" : 15
    +        },
    +        "get_meta" : {
    +          "obs_get_meta_count" : 79,
    +          "obs_get_meta_ms" : 183,
    +          "obs_get_meta_avg_ms" : 2
    +        },
    +        "get_obj" : {
    +          "obs_get_obj_count" : 12,
    +          "obs_get_obj_ms" : 123,
    +          "obs_get_obj_avg_ms" : 10
    +        },
    +        "put_obj" : {
    +          "obs_put_obj_count" : 12,
    +          "obs_put_obj_ms" : 2451,
    +          "obs_put_obj_avg_ms" : 204
    +        },
    +        "obs_op_total" : {
    +          "obs_op_total_ms" : 3022,
    +          "obs_op_total_count" : 120,
    +          "obs_op_avg_ms" : 25
    +        }
    +      },
    +      "reader_cache" : {
    +        "hit_count" : 0,
    +        "miss_count" : 1,
    +        "load_success_count" : 1,
    +        "load_exception_count" : 0,
    +        "total_load_time" : 291194714,
    +        "eviction_count" : 0
    +      }
    +    },
    +    "73EDpEqoQES749umJqxOzQ" : {
    +      "name" : "css-zzz1-ess-esn-3-1",
    +      "transport_address" : "10.0.0.201:9300",
    +      "host" : "10.0.0.201",
    +      "ip" : "10.0.0.201",
    +      "block_cache" : {
    +        "default" : {
    +          "type" : "memory",
    +          "block_cache_capacity" : 8192,
    +          "block_cache_blocksize" : 8192,
    +          "block_cache_size" : 12,
    +          "block_cache_hit" : 14,
    +          "block_cache_miss" : 0,
    +          "block_cache_eviction" : 0,
    +          "block_cache_store_fail" : 0
    +        }
    +      },
    +      "obs_stats" : {
    +        "list" : {
    +          "obs_list_count" : 17,
    +          "obs_list_ms" : 309,
    +          "obs_list_avg_ms" : 18
    +        },
    +        "get_meta" : {
    +          "obs_get_meta_count" : 79,
    +          "obs_get_meta_ms" : 216,
    +          "obs_get_meta_avg_ms" : 2
    +        },
    +        "get_obj" : {
    +          "obs_get_obj_count" : 12,
    +          "obs_get_obj_ms" : 140,
    +          "obs_get_obj_avg_ms" : 11
    +        },
    +        "put_obj" : {
    +          "obs_put_obj_count" : 12,
    +          "obs_put_obj_ms" : 1081,
    +          "obs_put_obj_avg_ms" : 90
    +        },
    +        "obs_op_total" : {
    +          "obs_op_total_ms" : 1746,
    +          "obs_op_total_count" : 120,
    +          "obs_op_avg_ms" : 14
    +        }
    +      },
    +      "reader_cache" : {
    +        "hit_count" : 0,
    +        "miss_count" : 1,
    +        "load_success_count" : 1,
    +        "load_exception_count" : 0,
    +        "total_load_time" : 367179751,
    +        "eviction_count" : 0
    +      }
    +    },
    +    "EF8WoLCUQbqJl1Pkqo9-OA" : {
    +      "name" : "css-zzz1-ess-esn-1-1",
    +      "transport_address" : "10.0.0.18:9300",
    +      "host" : "10.0.0.18",
    +      "ip" : "10.0.0.18",
    +      "block_cache" : {
    +        "default" : {
    +          "type" : "memory",
    +          "block_cache_capacity" : 8192,
    +          "block_cache_blocksize" : 8192,
    +          "block_cache_size" : 12,
    +          "block_cache_hit" : 14,
    +          "block_cache_miss" : 0,
    +          "block_cache_eviction" : 0,
    +          "block_cache_store_fail" : 0
    +        }
    +      },
    +      "obs_stats" : {
    +        "list" : {
    +          "obs_list_count" : 17,
    +          "obs_list_ms" : 220,
    +          "obs_list_avg_ms" : 12
    +        },
    +        "get_meta" : {
    +          "obs_get_meta_count" : 79,
    +          "obs_get_meta_ms" : 139,
    +          "obs_get_meta_avg_ms" : 1
    +        },
    +        "get_obj" : {
    +          "obs_get_obj_count" : 12,
    +          "obs_get_obj_ms" : 82,
    +          "obs_get_obj_avg_ms" : 6
    +        },
    +        "put_obj" : {
    +          "obs_put_obj_count" : 12,
    +          "obs_put_obj_ms" : 879,
    +          "obs_put_obj_avg_ms" : 73
    +        },
    +        "obs_op_total" : {
    +          "obs_op_total_ms" : 1320,
    +          "obs_op_total_count" : 120,
    +          "obs_op_avg_ms" : 11
    +        }
    +      },
    +      "reader_cache" : {
    +        "hit_count" : 0,
    +        "miss_count" : 1,
    +        "load_success_count" : 1,
    +        "load_exception_count" : 0,
    +        "total_load_time" : 235706838,
    +        "eviction_count" : 0
    +      }
    +    }
    +  }
    +}
    +
    +
  7. Run the following command to reset the cache status:
    POST _frozen_stats/reset
    +

    Information similar to the following is displayed:

    +
    {
    +  "_nodes" : {
    +    "total" : 1,
    +    "successful" : 1,
    +    "failed" : 0
    +  },
    +  "cluster_name" : "Es-0325-007_01",
    +  "nodes" : {
    +    "mqTdk2YRSPyOSXfesREFSg" : {
    +      "result" : "ok"
    +    }
    +  }
    +}
    +

    This command is used to debug performance issues. If you reset the cache status and run this command, you can check the cache command status. You do not need to run this command during service running.

    +
    +
  8. Run the following command to check all the frozen indexes:
    GET _cat/freeze_indices?stage=${STAGE}
    + +
    + + + + + + + +
    Table 8 Parameter description

    Parameter

    +

    Description

    +

    STAGE

    +

    Its value can be:

    +
    • start: List of indexes that are being frozen
    • done: List of indexes that have been frozen
    • unfreeze: List of indexes that are not frozen
    • Empty or other values: List of all indexes that are being frozen or have been frozen
    +
    +
    +

    Information similar to the following is displayed:

    +
    green open data2 0bNtxWDtRbOSkS4JYaUgMQ 3 0  5 0  7.9kb  7.9kb
    +green open data3 oYMLvw31QnyasqUNuyP6RA 3 0 51 0 23.5kb 23.5kb
    +

    The parameters and return values of this command are the same as those of _cat/indices of Elasticsearch.

    +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299573.html b/docs/css/umn/en-us_topic_0000001528299573.html new file mode 100644 index 00000000..83ef7d2a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299573.html @@ -0,0 +1,103 @@ + + +

Key Operations Recorded by CTS

+

Cloud Trace Service (CTS) is available on the public cloud platform. With CTS, you can record operations associated with CSS for later query, audit, and backtrack operations.

+

Prerequisites

CTS has been enabled. For details, see Enabling CTS.

+
+

Key Operations Recorded by CTS

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Key operations recorded by CTS

Operation

+

Resource Type

+

Event Name

+

Creating a cluster

+

cluster

+

createCluster

+

Deleting a cluster

+

cluster

+

deleteCluster

+

Expanding the cluster capacity

+

cluster

+

roleExtendCluster

+

Restarting a cluster

+

cluster

+

rebootCluster

+

Performing basic configurations for a cluster snapshot

+

cluster

+

updateSnapshotPolicy

+

Setting the automatic snapshot creation policy

+

cluster

+

updateAutoSnapshotPolicy

+

Upgrading a cluster

+

cluster

+

upgradeCluster

+

Retrying the upgrade

+

cluster

+

retryAction

+

Manually creating a snapshot

+

snapshot

+

createSnapshot

+

Restoring a snapshot

+

snapshot

+

restoreSnapshot

+

Deleting a snapshot

+

snapshot

+

deleteSnapshot

+
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299577.html b/docs/css/umn/en-us_topic_0000001528299577.html new file mode 100644 index 00000000..6506b923 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299577.html @@ -0,0 +1,176 @@ + + +

Flow Control

+

Flow control can be implemented via an independent API.

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run the commands to query traffic control information.
    • Check the traffic control status of all nodes.
      GET /_nodes/stats/filter
      +
    • View the traffic control status of a specific node.
      GET /_nodes/{nodeId}/stats/filter
      +

      {nodeId} indicates the ID of the node you want to check.

      +
    +

    Example response:

    +
    {
    +  "_nodes" : {
    +    "total" : 1,
    +    "successful" : 1,
    +    "failed" : 0
    +  },
    +  "cluster_name" : "css-flowcontroller",
    +  "nodes" : {
    +    "ElBRNCMbTj6L1C-Wke-Dnw" : {
    +      "name" : "css-flowcontroller-ess-esn-1-1",
    +      "host" : "10.0.0.133",
    +      "timestamp" : 1613979513747,
    +      "flow_control" : {
    +        "transport" : {
    +          "concurrent_req" : 0,
    +          "rejected_concurrent" : 0,
    +          "rejected_new" : 0,
    +          "rejected_deny" : 0
    +        },
    +        "http" : {
    +          "concurrent_req" : 0,
    +          "rejected_concurrent" : 0,
    +          "rejected_new" : 0,
    +          "rejected_deny" : 0
    +        },
    +        "memory" : {
    +          "memory_allow" : 41,
    +          "memory_rejected" : 0
    +        },
    +        "cpu": {
    +          "rejected_cpu" : 0
    +        }
    +        "ip_address" : [
    +          {
    +            "ip" : "/10.0.0.198",
    +            "count" : 453
    +          },
    +          {
    +            "ip" : "/198.19.49.1",
    +            "count" : 42
    +          }
    +        ],
    +        "url_sample" : [
    +          {
    +            "url" : "/*/_search?pretty=true",
    +            "method" : "GET",
    +            "remote_address" : "/10.0.0.198:16763",
    +            "count" : 1
    +          }
    +        ]
    +      }
    +  }
    +}
    +

    In the response, the information of each node is separated. The http field records the numbers of concurrent connections and new connections. The memory records memory flow control statistics. The ip_address field records the recent client IP addresses that are accessed most recently. The url_sample field records the recent URLs that are requested most frequently. The cpu field records CPU flow control statistics.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Response parameters

    Parameter

    +

    Description

    +

    concurrent_req

    +

    Number of TCP connections of a node, which is recorded no matter whether flow control is enabled. This value is similar to the value of current_open of the GET /_nodes/stats/http API but is smaller, because whitelisted IP addresses and internal node IP addresses are not counted.

    +

    rejected_concurrent

    +

    Number of concurrent connections rejected during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

    +

    rejected_new

    +

    Number of new connections rejected during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

    +

    rejected_deny

    +

    Number of requests rejected based on the blacklist during HTTP flow control. This value is not cleared when HTTP flow control is disabled.

    +

    memory_allow

    +

    Number of allowed requests during memory flow control. This parameter takes effect when memory flow control is enabled, and its value is not cleared after memory flow control is disabled. The requests from the paths in the allow_path whitelist are not recorded. If allow_path is set to **, no requests are recorded.

    +

    memory_rejected

    +

    Number of rejected requests during memory flow control. This parameter takes effect when memory flow control is enabled, and its value is not cleared after memory flow control is disabled. The requests from the paths in the allow_path whitelist are not recorded. If allow_path is set to **, no requests are recorded.

    +

    rejected_cpu

    +

    Number of requests rejected when the CPU flow control threshold is exceeded. This parameter takes effect when CPU flow control is enabled, and its value is not cleared after CPU flow control is disabled.

    +

    ip_address

    +

    IP addresses and the number of requests. For details, see Table 2.

    +

    url_sample

    +

    Request path sampling. The number of URLs of a request are collected based on the configured time and sampling interval. For details, see Table 3.

    +
    +
    + +
    + + + + + + + + + + +
    Table 2 ip_address

    Parameter

    +

    Description

    +

    ip

    +

    Source IP address for accessing the node.

    +

    method

    +

    Number of access requests from an IP address.

    +
    +
    + +
    + + + + + + + + + + + + + + + + +
    Table 3 url_sample

    Parameter

    +

    Description

    +

    url

    +

    Request URL

    +

    method

    +

    Method corresponding to the request path

    +

    remote_address

    +

    Source IP address and port number of the request

    +

    count

    +

    How many times a path is sampled

    +
    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299581.html b/docs/css/umn/en-us_topic_0000001528299581.html new file mode 100644 index 00000000..ee46d31b --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299581.html @@ -0,0 +1,88 @@ + + +

Managing Failed Tasks

+

In the Failed Tasks dialog box, you can view the failed tasks related to a cluster, such as failing to create, restart, scale out, back up, or restore a cluster. In addition, you can view the failure cause of each task and choose to delete one or all failed tasks.

+

Viewing Failed Tasks

  1. Log in to the CSS management console.
  2. Click Clusters to switch to the Clusters page. Click the digit next to Failed Tasks to switch to the Failed Tasks dialog box.
    Figure 1 Clicking the digit next to Failed Tasks
    +
  3. In the Failed Tasks dialog box, view all failed tasks of the current account. The following information about the failed tasks is displayed: Name/ID, Task Status, and Failure Time.
  4. Click the question mark in the Task Status column to view the failure cause of a task. You are advised to troubleshoot faults based on failure causes. For details about failure causes, see Error Code.
    Figure 2 Viewing the failure cause of a task
    +
+
+

Deleting a Failed Task

You can delete one or all failed tasks at a time.

+
  • To delete a failed task, perform the following operations: Locate the row that contains the target task and click Delete in the Operation column. In the displayed dialog box, confirm the task you want to delete and click Yes.
  • To delete all failed tasks, perform the following operations: In the Failed Tasks dialog box, click Delete All. In the displayed dialog box, confirm the information about all failed tasks and click Yes.
+
Figure 3 Deleting a failed task
+
+

Error Code

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Failure causes

Error Code

+

Failure Cause

+

Solution

+

CSS.6000

+

Failed to create the cluster because of an internal error. Please try again later. If the problem persists, contact customer service.

+

Please try again later or contact customer service.

+

CSS.6001

+

Failed to scale out the cluster because of an internal error. Please try again later. If the problem persists, contact customer service.

+

CSS.6002

+

Failed to restart the cluster because of an internal error. Please try again later. If the problem persists, contact customer service.

+

CSS.6003

+

Failed to restore the cluster because of an internal error. Please try again later. If the problem persists, contact customer service.

+

CSS.6004

+

Failed to create the node because of ECS exceptions (<ECS error code>). Please try again later. If the problem persists, contact customer service.

+
NOTE:

<ECS error code> indicates the error information reported by ECS. For details about the cause and solution, see ECS Error Code Description.

+
+

CSS.6005

+

Failed to initialize the service because of an internal error. Please try again later. If the problem persists, contact customer service.

+

CSS.6007

+

Failed to create the snapshot because of an internal error. Please try again later. If the problem persists, contact customer service.

+

CSS.6008

+

Failed to create the snapshot because the OBS bucket you select does not exist or has been deleted.

+

Modify the OBS bucket.

+

CSS.6009

+

Failed to restore the snapshot because the OBS bucket you select does not exist or has been deleted.

+

CSS.6010

+

Failed to restore the snapshot because the OBS object does not exist or has been deleted.

+
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299585.html b/docs/css/umn/en-us_topic_0000001528299585.html new file mode 100644 index 00000000..300eae71 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299585.html @@ -0,0 +1,68 @@ + + +

Changing AZs

+

CSS supports cross-AZ deployment. You can add an AZ to obtain more resources or improve cluster availability, and can migrate your current AZ to one with higher specifications. This section describes how to add or migrate your AZs.

+

Description

You can Add AZ or Migrate AZ.
  • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster to improve cluster availability.
  • Migrate AZ: Completely migrate data from the current AZ to another AZ that has sufficient resources.
+
+
+

Prerequisites

  • Ensure that an AZ with sufficient resources exists.
  • The target cluster is available and has no tasks in progress.
  • Make sure that no non-standard operations have been performed in the cluster. If you have made non-standard modifications, such as modifying return routes, system parameters, and Kibana configurations, these modifications will be lost after the AZ change and your services may be affected.
+
+

Constraints

  • To ensure service continuity, the total number of data nodes and cold data nodes in a cluster must be greater than or equal to 3.
  • During the change, nodes are brought offline one by one and then new nodes are created. Ensure that the disk capacity of other nodes can store all the data of the node after a single node is brought offline.
  • To prevent backup allocation failures after a node is brought offline during the change, ensure that the maximum number of primary and standby index shards of an index can be allocated to the remaining data nodes and cold data nodes. That is, the maximum number of primary and standby shards of an index plus 1 is less than or equal to the total number of data nodes and cold data nodes in the current cluster.
  • You are advised to back up data before the change to prevent data loss caused by upgrade faults.
  • Before a change completes, some nodes may have been moved to a new AZ. In this case, the AZs before and after the change are both displayed. After the change succeeds, the new AZs and their nodes will be displayed properly.
  • When adding AZs, the current AZ must be retained in the change. When adding one or two AZs to a single-AZ cluster, you must change AZs for all nodes at the same time. When adding an AZ to a dual-AZ cluster, you can change AZs for a single type of nodes or all nodes in a cluster at a time. For example, in a cluster using the dual-AZ architecture, you can use the three-AZ architecture for master nodes alone. During HA modification, the nodes with the smallest configurations are modified to rebuild the cluster. After the HA modification is complete, the YML configuration of the nodes that are not modified is also updated. You need to restart the cluster to make the modification take effect.
  • When migrating an AZ, you can select only one target AZ. You can migrate AZs for a single type of nodes or all nodes in a cluster at a time. For example, in a cluster with two AZs, you can migrate the AZ of the master node to the other AZ. After adding AZs, you need to restart the cluster to make the modification take effect.
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. Click the Change AZ tab.
  5. On the Change AZ page, set parameters. +
    + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for changing AZs

    Parameter

    +

    Description

    +

    Operation Type

    +
    • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster.

      During HA modification, the nodes with the smallest configurations are modified to rebuild the cluster. After the HA modification is complete, the YML configuration of the nodes that are not modified is also updated. You need to restart the cluster to make the modification take effect.

      +
    • Migrate AZ: Migrate data from one AZ to another.

      After adding AZs, you need to restart the cluster to make the modification take effect.

      +
    +

    Node Type

    +

    Select a type of node or All nodes to change their AZ.

    +
    NOTE:

    When adding one or two AZs to a single-AZ cluster, you can only select All nodes to change AZs for all nodes at a time.

    +
    +

    Current AZ

    +

    Current AZ of a cluster

    +

    Target AZ

    +

    Target AZ.

    +
    • Add AZ: Select up to three AZs, which must include all your current AZs.
    • Migrate AZ: Select only one target AZ, which cannot be your current AZ.
    +

    Agency

    +

    Select an IAM agency to grant the current account the permission to change AZs.

    +

    If no agencies are available, click Create IAM Agency to go to the IAM console and create an agency.

    +
    NOTE:

    The selected agency must be authorized with the Tenant Administrator or VPC Administrator policy.

    +
    +
    +
    +
  6. Click Submit. Determine whether to check for the backup of all indexes and click OK to start the change.
  7. The current AZ change task is displayed in the task list. If the task status is Running, expand the task list and click View Progress to view the progress details.

    If the task status is Failed, you can retry or terminate the task.

    +
    • Retry a task: Click Retry in the Operation column of a task.
    • Terminate a task: Click Terminate in the Operation column of a task.

      If the AZ of the original node is not changed after the task is terminated, you can recover the node by referring to Replacing a Specified Node.

      +

      If the AZ of some nodes has been changed and the AZ form of the cluster has changed, stopping the switchover task may make the delivery of the previous switchover request fail. Exercise caution when stopping the switchover task.

      +
      +
    +
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528299597.html b/docs/css/umn/en-us_topic_0000001528299597.html new file mode 100644 index 00000000..9d610592 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299597.html @@ -0,0 +1,84 @@ + + +

Scaling in a Cluster

+

If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. You are advised to scale in clusters during off-peak hours.

+

Prerequisites

The target cluster is available and has no tasks in progress.

+
+

Constraints

  • Only the number of nodes can be modified during cluster scale-in. The node specifications and node storage capacity cannot be modified. You can modify node specifications by referring to Changing Specifications. You can modify node storage capacity by referring to Scaling Out a Cluster.
  • If you change the number and storage capacity of a specified type of node, nodes in other types will not be changed.
  • Ensure that the disk usage after scale-in is less than 80% and each AZ of each node type has at least one node.
  • When scaling in a cluster, the data in the node to be deleted is migrated to other nodes. The timeout threshold for data migration is five hours. If data migration is not complete within 5 hours, the cluster scale-in fails. You are advised to perform scale-in for multiple times when the cluster has huge amounts of data.
  • For a cluster without master nodes, the number of remaining data nodes (including cold data nodes and other types of nodes) after scale-in must be greater than half of the original node number, and greater than the maximum number of index replicas.
  • For a cluster with master nodes, the number of removed master nodes in a scale-in must be fewer than half of the original master node number. After scale-in, there has to be an odd number of master nodes, and there has to be at least three of them.
  • A cluster with two nodes cannot be scaled in. You can create a cluster using a single node.
  • The quota of nodes in different types varies. For details, see Table 1. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Number of nodes in different types

    Node Type

    +

    Number

    +

    ess

    +

    ess: 1-32

    +

    ess, ess-master

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess, ess-client

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess, ess-cold

    +

    ess: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess, ess-master, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-cold: 1-32

    +

    ess, ess-client, ess-cold

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    +
    +
    +
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Scale in to set parameters.
    • Action: Select Scale in.
    • Resources: The changed amount of resources.
    • Nodes: The number of the default data nodes. For details about the value range that can be changed, see Table 1.
    +
  5. Click Next.
  6. Confirm the information and click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling in. When Cluster Status changes to Available, the cluster has been successfully scaled in.
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528299601.html b/docs/css/umn/en-us_topic_0000001528299601.html new file mode 100644 index 00000000..e55df4ef --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299601.html @@ -0,0 +1,111 @@ + + +

Configuring YML Parameters

+

You can modify the elasticsearch.yml file.

+

Modifying Parameter Configurations

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. Click Parameter Configurations and click Edit to modify module parameters as required. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Module parameters

    Module Name

    +

    Parameter

    +

    Description

    +

    Cross-domain Access

    +

    http.cors.allow-credentials

    +

    Whether to return the Access-Control-Allow-Credentials of the header during cross-domain access

    +

    Value: true or false

    +

    Default value: false

    +

    http.cors.allow-origin

    +

    Origin IP address allowed for cross-domain access, for example, 122.122.122.122:9200

    +

    http.cors.max-age

    +

    Cache duration of the browser. The cache is automatically cleared after the time range you specify.

    +

    Unit: s

    +

    Default value: 1,728,000

    +

    http.cors.allow-headers

    +

    Headers allowed for cross-domain access, including X-Requested-With, Content-Type, and Content-Length. Use commas (,) and spaces to separate headers.

    +

    http.cors.enabled

    +

    Whether to allow cross-domain access

    +

    Value: true or false

    +

    Default value: false

    +

    http.cors.allow-methods

    +

    Methods allowed for cross-domain access, including OPTIONS, HEAD, GET, POST, PUT, and DELETE. Use commas (,) and spaces to separate methods.

    +

    Reindexing

    +

    reindex.remote.whitelist

    +

    Configured for migrating data from the current cluster to the target cluster through the reindex API. The example value is 122.122.122.122:9200.

    +

    Custom Cache

    +

    indices.queries.cache.size

    +

    Cache size in the query phase

    +

    Value range: 1 to 100

    +

    Unit: %

    +

    Default value: 10%

    +

    Queue Size in a Thread Pool

    +

    thread_pool.bulk.queue_size

    +

    Queue size in the bulk thread pool. The value is an integer. You need to customize this parameter.

    +

    Default value: 200

    +

    thread_pool.write.queue_size

    +

    Queue size in the write thread pool. The value is an integer. You need to customize this parameter.

    +

    Default value: 200

    +

    thread_pool.force_merge.size

    +

    Queue size in the force merge thread pool. The value is an integer.

    +

    Default value: 1

    +

    Customize

    +

    You can add parameters based on your needs.

    +

    Customized parameters

    +
    NOTE:
    • Enter multiple values in the format as [value1, value2, value3...].
    • Separate values by commas (,) and spaces.
    • Colons (:) are not allowed.
    +
    +
    +
    +
  4. After the modification is complete, click Submit.In the displayed Submit Configuration dialog box, select the box indicating "I understand that the modification will take effect after the cluster is restarted." and click Yes.

    If the Status is Succeeded in the parameter modification list, the modification has been saved. Up to 20 modification records can be displayed.

    +
  5. Return to the cluster list and choose More > Restart in the Operation column to restart the cluster and make the modification take effect.
    • You need to restart the cluster after modification, or Configuration unupdated will be displayed in the Task Status column on the Clusters page.
    • If you restart the cluster after the modification, and Task Status displays Configuration error, the parameter configuration file fails to be modified.
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299609.html b/docs/css/umn/en-us_topic_0000001528299609.html new file mode 100644 index 00000000..e02a8d79 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299609.html @@ -0,0 +1,86 @@ + + +

(Optional) Pre-Building and Registering a Center Point Vector

+

When you perform operations in Creating a Vector Index, if IVF_GRAPH and IVF_GRAPH_PQ index algorithms are selected, you need to pre-build and register the center point vector.

+

Context

The vector index acceleration algorithms IVF_GRAPH and IVF_GRAPH_PQ are suitable for ultra-large-scale computing. These two algorithms allow you to narrow down the query range by dividing a vector space into subspaces through clustering or random sampling. Before pre-build, you need to obtain all center point vectors by clustering or random sampling.

+

Then, pre-construct and register the center point vectors to create the GRAPH or GRAPH_PQ index and register them with the Elasticsearch cluster. All nodes in the cluster can share the index file. Reuse of the center index among shards can effectively reduce the training overhead and the number of center index queries, improving the write and query performance.

+
+

Procedure

  1. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. Click Dev Tools in the navigation tree on the left.
  3. Create a center point index table.
    • For example, if the created index is named my_dict, number_of_shards of the index must be set to 1. Otherwise, the index cannot be registered.
    • If you want to use the IVF_GRAPH index, set algorithm of the center point index to GRAPH.
    • If you want to use the IVF_GRAPH_PQ index, set algorithm of the center point index to GRAPH_PQ.
    +
    PUT my_dict 
    + { 
    +   "settings": { 
    +     "index": { 
    +       "vector": true 
    +     }, 
    +     "number_of_shards": 1, 
    +     "number_of_replicas": 0 
    +   }, 
    +   "mappings": { 
    +     "properties": { 
    +       "my_vector": { 
    +         "type": "vector", 
    +         "dimension": 2, 
    +         "indexing": true, 
    +         "algorithm": "GRAPH", 
    +         "metric": "euclidean" 
    +       } 
    +     } 
    +   } 
    + }
    +
  4. Write the center point vector to the created index.

    Write the center point vector obtained through sampling or clustering into the created my_dict index by referring to Importing Vector Data.

    +
  5. Call the registration API.

    Register the created my_dict index with a Dict object with a globally unique identifier name (dict_name).

    +
    PUT _vector/register/my_dict 
    + { 
    +   "dict_name": "my_dict" 
    + }
    +
  6. Create an IVF_GRAPH or IVF_GRAPH_PQ index.

    You do not need to specify the dimension and metric information. Simply specify the registered dictionary name.

    +
    PUT my_index 
    + { 
    +   "settings": { 
    +     "index": { 
    +       "vector": true 
    +     } 
    +   }, 
    +   "mappings": { 
    +     "properties": { 
    +       "my_vector": { 
    +         "type": "vector", 
    +         "indexing": true, 
    +         "algorithm": "IVF_GRAPH", 
    +         "dict_name": "my_dict", 
    +         "offload_ivf": false 
    +       } 
    +     } 
    +   } 
    + }
    + +
    + + + + + + + + + + +
    Table 1 Field mappings parameters

    Parameter

    +

    Description

    +

    dict_name

    +

    Specifies the name of the depended central point index. The vector dimension and measurement metric of the index are the same as those of the Dict index.

    +

    offload_ivf

    +

    Unloads the IVF inverted index implemented by the underlying index to Elasticsearch. In this way, the use of non-heap memory and the overhead of write and merge operations are reduced. However, the query performance also deteriorates. You can use the default value.

    +

    Value: true or false

    +

    Default value: false

    +
    +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299613.html b/docs/css/umn/en-us_topic_0000001528299613.html new file mode 100644 index 00000000..2bbfd029 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299613.html @@ -0,0 +1,68 @@ + + +

Cluster List Overview

+

The cluster list displays all CSS clusters. If there are a large number of clusters, these clusters will be displayed on multiple pages. You can view clusters of all statuses from the cluster list.

+

Clusters are listed in chronological order by default in the cluster list, with the most recent cluster displayed at the top. Table 1 shows the cluster parameters.

+

In the upper right corner of the cluster list, you can enter the cluster name, or cluster ID and click to search for a cluster. You can also click in the upper right corner to refresh the cluster list. Click to download the cluster list.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Cluster list parameter description

Parameter

+

Description

+

Name/ID

+

Name and ID of a cluster. You can click a cluster name to switch to the Basic Information page. The cluster ID is automatically generated by the system and uniquely identifies a cluster.

+

Cluster Status

+

Status of a cluster. For details about the cluster status, see Viewing the Cluster Runtime Status and Storage Capacity Status.

+

Task Status

+

Status of a task, such as cluster restart, cluster capacity expansion, cluster backup, and cluster restoration.

+

Version

+

Elasticsearch version of the cluster.

+

Created

+

Time when the cluster is created.

+

Enterprise Project

+

Enterprise project that a cluster belongs to.

+

Private Network Address

+

Private network address and port number of the cluster. You can use these parameters to access the cluster. If the cluster has multiple nodes, the private network addresses and port numbers of all nodes are displayed.

+

Billing Mode

+

Billing mode of a cluster.

+

Operation

+

Operations that can be performed on a cluster, including accessing Kibana, checking metrics, restarting a cluster, and deleting a cluster. If an operation is not allowed, the button is gray.

+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299617.html b/docs/css/umn/en-us_topic_0000001528299617.html new file mode 100644 index 00000000..61e85d40 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299617.html @@ -0,0 +1,22 @@ + + +

Description

+

Image recognition and retrieval, video search, and personalized recommendation impose high requirements on the latency and accuracy of high-dimensional space vector retrieval. To facilitate large-scale vector search, CSS integrates the vector search feature powered by vector search engine and the Elasticsearch plug-in mechanism.

+

Principles

Vector search works in a way similar to traditional search. To improve vector search performance, we need to:

+
  • Narrow down the matched scope

    Similar to traditional text search, vector search use indexes to accelerate the search instead of going through all data. Traditional text search uses inverted indexes to filter out irrelevant documents, whereas vector search creates indexes for vectors to bypass irrelevant vectors, narrowing down the search scope.

    +
  • Reduce the complexity of calculating a single vector

    The vector search method can quantize and approximate high dimensional vectors first. By doing this, you can acquire a smaller and more relevant data set. Then more sophisticated algorithms are applied to this smaller data set to perform computation and sorting. This way, complex computation is performed on only part of the vectors, and efficiency is improved.

    +
+

Vector search means to retrieve the k-nearest neighbors (KNN) to the query vector in a given vector data set by using a specific measurement method. Generally, CSS only focuses on Approximate Nearest Neighbor (ANN), because a KNN search requires excessive computational resources.

+
+

Functions

The engine integrates a variety of vector indexes, such as brute-force search, Hierarchical Navigable Small World (HNSW) graphs, product quantization, and IVF-HNSW. It also supports multiple similarity calculation methods, such as Euclidean, inner product, cosine, and Hamming. The recall rate and retrieval performance of the engine are better than those of open-source engines. It can meet the requirements for high performance, high precision, low costs, and multi-modal computation.

+

The search engine also supports all the capabilities of the native Elasticsearch, including distribution, multi-replica, error recovery, snapshot, and permission control. The engine is compatible with the native Elasticsearch ecosystem, including the cluster monitoring tool Cerebro, the visualization tool Kibana, and the real-time data ingestion tool Logstash. Several client languages, such as Python, Java, Go, and C++, are supported.

+
+

Constraints

  • Only Elasticsearch clusters of versions 7.6.2 and 7.10.2 and OpenSearch clusters of version 1.3.6 support vector search.
  • The vector search plug-in performs in-memory computing and requires more memory than common indexes do. It is recommended that the memory of the cluster node be greater than or equal to 8 GB and the cluster computing specifications be memory-optimized.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299621.html b/docs/css/umn/en-us_topic_0000001528299621.html new file mode 100644 index 00000000..d1ab20e6 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299621.html @@ -0,0 +1,18 @@ + + +

Binding an Enterprise Project

+

You can create enterprise projects based on your organizational structure. Then you can manage resources across different regions by enterprise project, add users and user groups to enterprise projects, and grant different permissions to the users and user groups. This section describes how to bind a CSS cluster to an enterprise project and how tp modify an enterprise project.

+

Prerequisites

Before binding an enterprise project, you have created an enterprise project.

+
+

Binding an Enterprise Project

When creating a cluster, you can bind an existing enterprise project to the cluster, or click View Enterprise Project to go to the enterprise project management console and create a new project or view existing projects.

+
+

Modifying an Enterprise Project

For a cluster that has been created, you can modify its enterprise project based on the site requirements.

+
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, select a cluster type. The cluster management page is displayed.
  3. In the cluster list on the displayed page, click the target cluster name to switch to the Cluster Information page.
  4. On the Cluster Information page, click the enterprise project name on the right of Enterprise Project. The project management page is displayed.
  5. On the Resources tab page, select the region of the current cluster, and select CSS for Service. In this case, the corresponding CSS cluster is displayed in the resource list.
  6. Select the cluster whose enterprise project you want to modify and click Remove.
  7. On the Remove Resource page, specify Mode and select Destination Enterprise Project, and click OK.
  8. After the resource is removed, you can view the modified enterprise project information on the Clusters page.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528299625.html b/docs/css/umn/en-us_topic_0000001528299625.html new file mode 100644 index 00000000..2733127d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299625.html @@ -0,0 +1,22 @@ + + +

Kibana Platform

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528299629.html b/docs/css/umn/en-us_topic_0000001528299629.html new file mode 100644 index 00000000..96cc772b --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528299629.html @@ -0,0 +1,57 @@ + + +

Accessing a Cluster from a Public Network

+

You can access a security cluster (Elasticsearch clusters in version 6.5.4 or later support the security mode) that has the HTTPS access enabled through the public IP address provided by the system.

+

By default, CSS uses a shared load balancer for public network access. You can use a dedicated load balancer to improve performance. For details about its configuration, see Connecting to a Dedicated Load Balancer.

+

If public network access is enabled for CSS, then EIP and bandwidth resources will be used and billed.

+
+

Configuring Public Network Access

  1. Log in to the CSS management console.
  2. On the Create Cluster page, enable Security Mode. Set the administrator password and enable HTTPS access.
  3. Select Automatically assign for Public IP Address and set related parameters. +
    + + + + + + + + + + + + + +
    Table 1 Public network access parameters

    Parameter

    +

    Description

    +

    Bandwidth

    +

    Bandwidth for accessing Kibana with the public IP address

    +

    Access Control

    +

    If you disable this function, all IP addresses can access the cluster through the public IP address. If you enable access control, only IP addresses in the whitelist can access the cluster through the public IP address.

    +

    Whitelist

    +

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    +
    +
    +
+
+

Managing Public Network Access

You can configure, modify, view the public network access of, or disassociate the public IP address from a cluster.

+
  1. Log in to the CSS management console.
  2. On the Clusters page, click the name of the target cluster. On the Basic Information page that is displayed, manage the public network access configurations.
    • Configuring public network access

      If you enabled HTTPS but did not configure the public network access during security cluster creation, you can configure it on the Basic Information page after configuring the cluster.

      +

      Click Associate next to Public IP Address, set the access bandwidth, and click OK.

      +

      If the association fails, wait for several minutes and try again.

      +
    • Modifying public network access

      For a cluster for which you have configured public network access, you can click Edit next to Bandwidth to modify the bandwidth, or you can click Set next to Access Control to set the access control function and the whitelist for access.

      +
    • Viewing public network access

      On the Basic Information page, you can view the public IP address associated with the current cluster.

      +
    • Disassociating a public IP address from a cluster

      To disassociate the public IP address, click Disassociate next to Public IP Address.

      +
    +
+
+

Accessing a Cluster Through the Public IP Address

After configuring the public IP address, you can use it to access the cluster.

+
For example, run the following cURL commands to view the index information in the cluster. In this example, the public access IP address of one node in the cluster is 10.62.179.32 and the port number is 9200.
  • If the cluster you access does not have the security mode enabled, run the following command:
    curl 'http://10.62.179.32:9200/_cat/indices'
    +
  • If the cluster you access has the security mode enabled, access the cluster using HTTPS and add the username, password and -u to the cURL command.
    curl -u username:password -k 'https://10.62.179.32:9200/_cat/indices'
    +
+
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528379249.html b/docs/css/umn/en-us_topic_0000001528379249.html new file mode 100644 index 00000000..54ff21eb --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379249.html @@ -0,0 +1,19 @@ + + +

Read/Write Splitting

+
+
+ + + +
+ diff --git a/docs/css/umn/en-us_topic_0000001528379253.html b/docs/css/umn/en-us_topic_0000001528379253.html new file mode 100644 index 00000000..44c4dce8 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379253.html @@ -0,0 +1,29 @@ + + +

Overview

+

You can scale in or out a cluster and change cluster specifications. In this way, you can improve cluster efficiency and reduce O&M costs.

+
Scaling Out a Cluster
  • If a data node (ess) processes many data writing and querying requests and responds slowly, you can expand its storage capacity to improve its efficiency. If some nodes turn unavailable due to the excessive data volume or misoperations, you can add new nodes to ensure the cluster availability.
  • Cold data nodes (ess-cold) are used to share the workload of data nodes. To prevent cold data loss, you can expand the storage capacity of the cold data node or add new ones.
+
+
Changing Specifications
  • If the allocation of new indexes or shards takes too long or the node coordination and scheduling are inefficient, you can change the master node (ess-master) specifications.
  • If too many tasks need to be distributed or too many results have been aggregated, you can change the client node (ess-client) specifications.
  • If the speed of data writing and query decreases suddenly, you can change the data node (ess) specifications.
  • If cold data query becomes slow, you can change the cold node (ess-cold) specifications.
+
+
Scaling in a Cluster
  • If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs.
+
+
Removing Specified Nodes
  • If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs.
+
+
Replacing a Specified Node
  • If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.
+
+
Adding Master/Client Nodes
  • If the workloads on the data plane of a cluster increase, you can dynamically scale the cluster by adding master/client nodes.
+
+

Changing the Security Mode

+
After a cluster is created, its security mode can be changed using the following methods:
  • Change a non-security cluster to a security cluster that uses HTTP or HTTPS protocol.
  • Change a security cluster that uses HTTP or HTTPS protocol to a non-security cluster.
  • Change the protocol of a security cluster.
+
+

Changing AZs

+
You can Add AZ or Migrate AZ.
  • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster to improve cluster availability.
  • Migrate AZ: Completely migrate data from the current AZ to another AZ that has sufficient resources.
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528379257.html b/docs/css/umn/en-us_topic_0000001528379257.html new file mode 100644 index 00000000..f9bf6d3e --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379257.html @@ -0,0 +1,22 @@ + + +

Context

+

Feature Description

CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTP connections, and the maximum HTTP connections for a node. You can also configure backpressure based on client traffic in the node memory and block access in one click. CSS can also collect statistics on node access IP addresses and URIs. Each function has an independent control switch, which is disabled by default. To restore default values of parameters, set them to null.

+

After the client write traffic backpressure and control is enabled, large requests will be rejected when too much node heap memory has been occupied. This function prevents nodes from being suspended and reduces the risk of node unavailability.

+
  • HTTP/HTTPS flow control:
    • You can control client IP address access by setting IP addresses and subnets in HTTP/HTTPS blacklist or whitelist. If an IP address is in the blacklist, the client is disconnected and all its request are rejected. Whitelist rules take precedence over blacklist rules. If a client IP address exists in both the blacklist and whitelist, the client request will not be rejected.
    • HTTP/HTTPS concurrent connection flow control limits the total number of HTTP connections to a node per second.
    • HTTP/HTTPS new connection flow control limits the number of new connections to a node.
    +
  • Memory flow control

    Memory flow control limits the write traffic based on the node heap memory. You can back pressure requests to the client, trigger resource recycling as much as possible, and then accept requests based on the available heap memory.

    +
  • Request sampling

    Request sampling can record the access of client IP addresses and the type of requests from the client. Based on the statistics, you can identify the access traffic of client IP addresses and analyze the client write and query requests.

    +
  • One-click traffic blocking

    One-click access blocking can block all the access traffic of a node, excluding the traffic from Kibana and CSS O&M and monitoring APIs.

    +
  • Flow control

    Flow control provides an independent API for viewing traffic statistics and records the number of current client connections and client backpressure connections. You can evaluate the flow control threshold and analyze the cluster loads based on the statistics.

    +
  • Access logs

    Access logs record the URLs and bodies of HTTP/HTTPS requests received by nodes within a period of time. You can analyze the current traffic pressure based on the access logs.

    +
+
+

Constraints

  • Currently, only Elasticsearch clusters of versions 7.6.2 and 7.10.2 support the traffic control feature.
  • Elasticsearch clusters of versions 7.6.2 and 7.10.2 created after February 2023 support only traffic control 2.0. Clusters created before February 2023 support only traffic control 1.0. For details, see Flow Control 1.0.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528379265.html b/docs/css/umn/en-us_topic_0000001528379265.html new file mode 100644 index 00000000..94a156e6 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379265.html @@ -0,0 +1,70 @@ + + +

Matching Index Synchronization

+

The request URL and request body parameters are as follows:

+
PUT auto_sync/pattern/{pattern_name}
+ +
+ + + + + + + + + + + + + + + + + + + +
Table 1 Request body parameters

Parameter

+

Description

+

remote_cluster

+

Name of the primary cluster. The default name is leader1. You can change the name by configuring the primary cluster information.

+

remote_index_patterns

+

Mode of the index to be synchronized in the primary cluster. The wildcard (*) is supported.

+

local_index_pattern

+

Mode of the index being synchronized in the secondary cluster. The template can be replaced. For example, if this parameter is set to {{remote_index}}-sync, the index log1 change to log1-sync after synchronization.

+

apply_exist_index

+

Whether to synchronize existing indexes in the primary cluster. The default value is true.

+

settings

+

Index settings of the index being synchronized

+
+
+

The following are two examples:

+

1. Synchronize a single index from the primary cluster to the secondary cluster.

+
PUT auto_sync/pattern/pattern1
+{
+ "remote_cluster": "leader1",
+ "remote_index_patterns": "log*",
+ "local_index_pattern": "{{remote_index}}-sync",
+ "apply_exist_index": true
+}
+

2. Synchronize a single index from the primary cluster to the secondary cluster and modify the index configurations.

+
PUT auto_sync/pattern/pattern1
+{
+ "remote_cluster": "leader1",
+ "remote_index_patterns": "log*",
+ "local_index_pattern": "{{remote_index}}-sync",
+ "apply_exist_index": true,
+ "settings": {
+   "number_of_replicas": 4
+ }
+}
+

The following index configurations cannot be modified:

+
  • number_of_shards
  • version.created
  • uuid
  • creation_date
  • soft_deletes.enabled
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528379273.html b/docs/css/umn/en-us_topic_0000001528379273.html new file mode 100644 index 00000000..5395dd8f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379273.html @@ -0,0 +1,83 @@ + + +

Creating a User and Granting Permissions by Using Kibana

+

CSS uses the opendistro_security plug-in to provide security cluster capabilities. The opendistro_security plug-in is built based on the RBAC model. RBAC involves three core concepts: user, action, and role. RBAC simplifies the relationship between users and actions, simplifies permission management, and facilitates permission expansion and maintenance. The following figure shows the relationship between the three.

+
Figure 1 User, action, and role
+ +
+ + + + + + + + + + + + + + + + + + + +
Table 1 Parameters

Parameter

+

Description

+

User

+

A user can send operation requests to Elasticsearch clusters. The user has credentials such as username and password, and zero or multiple backend roles and custom attributes.

+

Role

+

A role is a combination of permissions and action groups, including operation permissions on clusters, indexes, documents, or fields.

+

Permission

+

Single permission, for example, creating an index (for example, indices:admin/create)

+

Role mapping

+

A user will be assigned a role after successful authentication. Role mapping is to map a role to a user (or a backend role). For example, the mapping from kibana_user (role) to jdoe (user) means that John Doe obtains all permissions of kibana_user after being authenticated by kibana_user. Similarly, the mapping from all_access (role) to admin (backend role) means that any user with the backend role admin (from the LDAP/Active Directory server) has all the permissions of role all_access after being authenticated. You can map a role to multiple users or backend roles.

+

Action group

+

A group of permissions. For example, the predefined SEARCH action group grants roles to use _search and _msearchAPI.

+
+
+

In addition to the RBAC model, Elasticsearch has an important concept called tenant. RBAC is used to manage user authorization, and tenants are used for information sharing across tenants. In a tenant space, IAM users can share information such as dashboard data and index patterns.

+

This section describes how to use Kibana to create a user and grant permissions to the user. Kibana can be used to create users and grant permissions only when the security mode is enabled for the cluster.

+
  • The Kibana UI varies depending on the Kibana version, but their operations are similar. This section takes Kibana 7.6.2 as an example to describe the procedure.
  • You can customize the username, role name, and tenant name in Kibana.
+
+ +

Logging in to Kibana

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
    Enter the administrator username and password to log in to Kibana.
    • Username: admin (default administrator account name)
    • Password: Enter the administrator password you set when creating the cluster in security mode.
    +
    Figure 2 Login page
    +
    +
+
+

Creating a User

Log in to Kibana and create a user on the Security page.

+
  1. After a successful login, choose Security in the navigation tree on the left of the Kibana operation page. The Security page is displayed.
    Figure 3 Accessing the Security page
    +
  2. Choose Authentication Backends > Internal Users Database.
    Figure 4 Adding a user (1)
    +
  3. On the Internal Users Database page, choose . The page for adding user information is displayed.
    Figure 5 Adding a user (2)
    +
  4. On the user creation page, specify Username, Password, and Repeatpassword, and click Submit.
+

The user will be displayed in the user list.

+
+

Creating a Role and Granting Permissions

Create a role and grant permissions to the role.

+
  1. Click Roles.
    Figure 6 Adding a role
    +
  2. On the Open Distro Security Roles page, click .
    1. On the Overview tab page, set the role name.
      Figure 7 Entering a role name
      +
    2. On the Cluster Permissions tab page, set CSS cluster permissions. Set cluster permissions based on service requirements. If this parameter is not specified for a role, the role has no cluster-level permissions.
      • Permissions: Action Groups: You can click Add Action Group to set cluster permissions. For example, if you select the read permission for a cluster, you can only view information such as the cluster status and cluster nodes.
      • Permissions: Single Permissions: Select Show Advanced and click Add Single Permission to set more refined permissions for the cluster. For example, if this parameter is set to indices:data/read, you can only read specified indexes.
      +
      Figure 8 Cluster Permissions tab page
      +
    3. Configure index permissions on the Index Permissions page.
      • Index patterns: Set this parameter to the name of the index whose permission needs to be configured. For example, my_store.

        Use different names for the index and the user.

        +
        +
      • Permissions: Action Groups: Click Add Action Group and set the permission as required. For example, select the read-only permission Search.
      +
    4. On the Tenant Permissions page, set role permissions based on service requirements.
      • Global permissions: Click Add Field to set the kibana read and write permissions of a role, for example, kibana_all_read or kibana_all_write.
      • Tenant permissions: Click Add tenant pattern to add a tenant mode and set the kibana_all_read or kibana_all_write permission for a new tenant mode.
        Figure 9 Tenant Permissions tab
        +
      +
    +
  3. Click Save Role Definition and you can view the configured role.
+
+

Configuring a Role for a User

After creating a role and granting permissions to the role, you need to map the role to a user so that the user can obtain the permissions of the mapped role.

+
  1. Click Role Mappings. On the displayed Role Mappings page, map the roles.
    Figure 10 Role mapping
    +
  2. On the Role Mappings page, click to select a role and add users.
    • Role: Select the name of the role to be mapped.
    • Users: Click Add User and enter the name of the user whose role is mapped.
    +
    Figure 11 Users and roles
    +
  3. Click Submit.
  4. Verify that the configuration takes effect in Kibana.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528379277.html b/docs/css/umn/en-us_topic_0000001528379277.html new file mode 100644 index 00000000..f338aada --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379277.html @@ -0,0 +1,17 @@ + + +

Importing Data

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528379285.html b/docs/css/umn/en-us_topic_0000001528379285.html new file mode 100644 index 00000000..c31b7b04 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379285.html @@ -0,0 +1,82 @@ + + +

Changing the Security Mode

+
+

Context

You can create clusters in multiple security modes. For details about the differences between security modes, see Table 1. +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Cluster security modes

Security Mode

+

Scenario

+

Advantage

+

Disadvantage

+

Non-Security Mode

+

Intranet services and test scenarios

+

Simple. Easy to access.

+

Poor security. Anyone can access such clusters.

+

Security Mode + HTTP Protocol

+

User permissions can be isolated, which is applicable to scenarios sensitive to cluster performance.

+

Security authentication is required for accessing such clusters, which improves cluster security. Accessing a cluster through HTTP protocol can retain the high performance of the cluster.

+

Cannot be accessed from the public network.

+

Security Mode + HTTPS Protocol

+

Scenarios that require high security and public network access.

+

Security authentication is required for accessing such clusters, which improves cluster security. HTTPS protocol allows public network to access such clusters.

+

The performance of clusters using HTTPS is 20% lower than that of using HTTP.

+
+
+
+
+

Prerequisites

  • You are advised to back up data before changing the cluster security mode.
  • The target cluster is available and has no tasks in progress.
+
+

Constraints

  • Only clusters (whose version is 6.5.4 or later) created after November 2022 support security mode switching.
  • A cluster automatically restarts when its security mode is being changed. Services are interrupted during the restart. The authentication mode for invoking the cluster will change after the restart, and client configurations need to be adjusted accordingly.
  • If a cluster has already opened the Kibana session box, a session error message will be displayed after you change the cluster security mode. In this case, clear the cache and open Kibana again.
+
+

Switching from the Non-Security Mode to Security Mode

You can change a non-security cluster to a security cluster that uses HTTP or HTTPS. After a cluster's security mode is enabled, security authentication is required for accessing the cluster.

+
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters > Elasticsearch. The Elasticsearch cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. Choose the Configure Security Mode tab.
  5. Enable the security mode. Enter and confirm the administrator password of the cluster.
    Figure 1 Enabling the security mode
    +
  6. Enable or disable HTTPS Access.
    • If you enable HTTPS Access: The HTTPS protocol is used to encrypt cluster communication and you can configure public networks to access the cluster.
    • If you disable HTTPS Access: The HTTP protocol is used and you cannot configure public networks to access the cluster.
    +
  7. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    +
+
+

Switching from the Security to Non-Security Mode

You can change a security cluster that uses HTTP or HTTPS to a non-security cluster. After a cluster's security mode is disabled, security authentication is no longer required for accessing the cluster.

+
  • Clusters in non-security mode can be accessed without security authentication, and HTTP protocol is used to transmit data. Ensure the security of the cluster access environment and do not expose the access interface to the public network.
  • During the switchover from the security mode to the non-security mode, the indexes of the original security cluster will be deleted. Back up data before disabling the security mode.
  • If a security cluster has been bound to a public IP address, unbind it before changing the security mode.
  • If a security cluster has enabled Kibana public network access, disable it before changing the security mode.
+
+
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the displayed Clusters page, locate the target cluster and choose More > Modify Configuration in the Operation column.
  3. Choose the Configure Security Mode tab.
  4. Disable the security mode.
    Figure 2 Disabling the security mode
    +
  5. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    +
+
+

Switching the Protocol of Security Clusters

You can change the protocol of a security cluster.

+

If a security cluster has been bound to a public IP address, you need to unbind it before changing HTTPS protocol to HTTP.

+
+
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the displayed Clusters page, locate the target cluster and choose More > Modify Configuration in the Operation column.
  3. Choose the Configure Security Mode tab.
  4. Enable or disable HTTPS Access.
    Figure 3 Configuring the protocol
    +
    • If you enable HTTPS Access:

      HTTPS protocol is used to encrypt cluster communication and you can configure public network access.

      +
    • If you disable HTTPS Access: An alarm message is displayed. Click OK to disable the function.

      Cluster communication is no longer encrypted and the public network access function cannot be enabled.

      +
    +
  5. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    +
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528379297.html b/docs/css/umn/en-us_topic_0000001528379297.html new file mode 100644 index 00000000..aec288c9 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379297.html @@ -0,0 +1,20 @@ + + +

(Optional) Interconnecting with a Dedicated Load Balancer

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528379301.html b/docs/css/umn/en-us_topic_0000001528379301.html new file mode 100644 index 00000000..82e21af9 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379301.html @@ -0,0 +1,85 @@ + + +

Monitoring OBS Operations

+

To clearly display the operations of the storage and compute decoupling plugin in OBS, the real-time OBS rate metric is added to CSS and recorded in the system index.

+

Prerequisite

This feature is available in Elasticsearch clusters of versions 7.6.2 and 7.10.2 and OpenSearch clusters created after March 2023.

+
+

Description

+
+

GET _frozen_stats/obs_rate API

  • Calculation method: The average OBS operation rate in the last 5 seconds is calculated every 5 seconds.
  • Example request:
    GET _frozen_stats/obs_rate 
    +GET _frozen_stats/obs_rate/{nodeId}
    +

    {nodeId} indicates the ID of the node whose OBS operation rate you want to query.

    +
  • Example response:
    {
    +   "_nodes" : {
    +     "total" : 1,
    +     "successful" : 1,
    +     "failed" : 0
    +   },
    +   "cluster_name" : "elasticsearch",
    +   "nodes" : {
    +     "dflDvcSwTJ-fkiIlT2zE3A" : {
    +       "name" : "node-1",
    +       "transport_address" : "127.0.0.1:9300",
    +       "host" : "127.0.0.1",
    +       "ip" : "127.0.0.1",
    +       "update_time" : 1671777600482,                            // Time when the current statistics are updated.
    +       "obs_rate" : {
    +         "list_op_rate" : 0.0,                                   // Rate of OBS list operations. Unit: times/s.
    +         "get_meta_op_rate" : 0.0,                               // Rate of OBS get meta operations. Unit: times/s.
    +         "get_obj_op_rate" : 0.0,                                // Rate of OBS get operations. Unit: times/s.
    +         "put_op_rate" : 0.0,                                    // Rate of OBS put operations. Unit: times/s.
    +         "obs_total_op_rate" : 0.0,                              // Rate of all OBS operations. The unit is times/s.
    +         "obs_upload_rate" : "0.0 MB/s",                         // Data upload rate of OBS, in MB/s.
    +         "obs_download_rate" : "0.0 MB/s"                        // Data download rate of OBS, in MB/s.
    +       }
    +     }
    +   }
    + }
    +
+
+

System Index

  • System index name: .freeze_obs_rate-YYYY.mm.dd.
  • Example: .freeze_obs_rate-2023.01.23

    The default retention period of indexes is 30 days.

    +
    +
+
+

Configuration Item

+
+ + + + + + + + + + + + +

Configuration Item

+

Type

+

Scope

+

Can Be Dynamically Modified

+

Description

+

low_cost.obs_rate_index.evict_time

+

String

+

node

+

Yes

+

The retention period of the .freeze_obs_rate-YYYY.mm.dd index.

+
  • Value range: 1d to 365d
  • Default value: 30d
  • Unit: day
+
+
+
+

For example, run the following command to modify the retention period of the .freeze_obs_rate-YYYY.mm.dd index:

+
PUT _cluster/settings
+ {
+   "persistent": {
+     "low_cost.obs_rate_index.evict_time":  "7d"
+   }
+ }
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528379305.html b/docs/css/umn/en-us_topic_0000001528379305.html new file mode 100644 index 00000000..7f64ea06 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379305.html @@ -0,0 +1,17 @@ + + +

Accessing an Elasticsearch Cluster

+

Elasticsearch clusters have built-in Kibana and Cerebro components. You can quickly access an Elasticsearch cluster through Kibana and Cerebro.

+

Access a Cluster Through Kibana

  1. Log in to the CSS management console.
  2. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column to go to the Kibana login page.
    • Non-security cluster: The Kibana console is displayed.
    • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the one specified during cluster creation.
    +
  3. After the login is successful, you can access clusters through Kibana.
+
+

Accessing a Cluster Through Cerebro

  1. Log in to the CSS management console.
  2. On the Clusters page, locate the target cluster and click More > Cerebro in the Operation column to go to the Cerebro login page.
    • Non-security cluster: Click the cluster name on the Cerebro login page to go to the Cerebro console.
    • Security cluster: Click the cluster name on the Cerebro login page, enter the username and password, and click Authenticate to go to the Cerebro console. The default username is admin and the password is the one specified during cluster creation.
    +
  3. After the login is successful, you can access clusters through Cerebro.
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528379309.html b/docs/css/umn/en-us_topic_0000001528379309.html new file mode 100644 index 00000000..cf3f18dc --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379309.html @@ -0,0 +1,139 @@ + + +

Configuring Cache

+

After data is dumped to OBS, some data is cached to reduce access to OBS and improve Elasticsearch query performance. Data that is requested for the first time is obtained from OBS. The obtained data is cached in the memory. In subsequent queries, the system searches for data in the cache first. Data can be cached in memory or files.

+

Elasticsearch accesses different files in different modes. The cache system supports multi-level cache and uses blocks of different sizes to cache different files. For example, a large number of small blocks are used to cache .fdx and .tip files, and a small number of large blocks are used to cache .fdt files.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Cache configurations

Parameter

+

Type

+

Description

+

low_cost.obs.blockcache.names

+

Array

+

The cache system supports multi-level cache for data of different access granularities. This configuration lists the names of all caches. If this parameter is not set, the system has a cache named default. To customize the configuration, ensure there is a cache named default.

+

Default value: default

+

low_cost.obs.blockcache.<NAME>.type

+

ENUM

+

Cache type, which can be memory or file.

+

If it is set to memory, certain memory will be occupied. If it is set to file, cache will be stored in disks. You are advised to use ultra-high I/O disks to improve cache performance.

+

Default value: memory

+

low_cost.obs.blockcache.<NAME>.blockshift

+

Integer

+

Size of each block in the cache. Its value is the number of bytes shifted left. For example, if this parameter is set to 16, the block size is 216 bytes, that is, 65536 bytes (64 KB).

+

Default value: 13 (8 KB)

+

low_cost.obs.blockcache.<NAME>.bank.count

+

Integer

+

Number of cache partitions.

+

Default value: 1

+

low_cost.obs.blockcache.<NAME>.number.blocks.perbank

+

Integer

+

Number of blocks included in each cache partition.

+

Default value: 8192

+

low_cost.obs.blockcache. <NAME>.exclude.file.types

+

Array

+

Extensions of files that are not cached. If the extensions of certain files are neither in the exclude list nor in the include list, they are stored in the default cache.

+

low_cost.obs.blockcache. <NAME>.file.types

+

Array

+

Extensions of cached files. If the extensions of certain files are neither in the exclude list nor in the include list, they are stored in the default cache.

+
+
+

The following is a common cache configuration. It uses two levels of caches, default and large. The default cache uses 64 KB blocks and has a total of 30 x 4096 blocks. It is used to cache files except .fdt files. The large cache uses 2 MB blocks and contains 5 x 1000 blocks. It is used to cache .fdx, .dvd, and .tip files.

+
low_cost.obs.blockcache.names: ["default", "large"]
+low_cost.obs.blockcache.default.type: file
+low_cost.obs.blockcache.default.blockshift: 16
+low_cost.obs.blockcache.default.number.blocks.perbank: 4096
+low_cost.obs.blockcache.default.bank.count: 30
+low_cost.obs.blockcache.default.exclude.file.types: ["fdt"]
+
+low_cost.obs.blockcache.large.type: file
+low_cost.obs.blockcache.large.blockshift: 21
+low_cost.obs.blockcache.large.number.blocks.perbank: 1000
+low_cost.obs.blockcache.large.bank.count: 5
+low_cost.obs.blockcache.large.file.types: ["fdx", "dvd", "tip"]
+

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 2 Other parameters

Parameter

+

Type

+

Description

+

index.frozen.obs.max_bytes_per_sec

+

String

+

Maximum rate of uploading files to OBS during freezing. It takes effect immediately after you complete configuration.

+

Default value: 150MB

+

low_cost.obs.index.upload.threshold.use.multipart

+

String

+

If the file size exceeds the value of this parameter during freezing, the multipart upload function of OBS is used.

+

Default value: 1GB

+

index.frozen.reader.cache.expire.duration.seconds

+

Integer

+

Timeout duration.

+

To reduce the heap memory occupied by frozen indexes, the reader caches data for a period of time after the index shard is started, and stops caching after it times out.

+

Default value: 300s

+

index.frozen.reader.cache.max.size

+

Integer

+

Maximum cache size.

+

Default value: 100

+
+
+

+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528379313.html b/docs/css/umn/en-us_topic_0000001528379313.html new file mode 100644 index 00000000..138bbbae --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379313.html @@ -0,0 +1,32 @@ + + +

Basic Settings

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  3. Click Dev Tools in the navigation tree on the left and perform the following operations:
    Configure the primary cluster information.
    PUT /_cluster/settings
    +{
    +  "persistent" : {
    +    "cluster" : {
    +      "remote.rest" : {
    +        "leader1" : {
    +          "seeds" : [
    +            "http://10.0.0.1:9200",
    +            "http://10.0.0.2:9200",
    +            "http://10.0.0.3:9200"
    +          ] ,
    +            "username": "elastic",
    +            "password": "*****"
    +        }
    +      }
    +    }
    +  }
    +}
    +
    • Secondary clusters must be able to access the REST API (default port: 9200) of the primary cluster.
    • The primary cluster name is leader1 and can be changed.
    • The value of seeds is the REST address of the primary cluster. Multiple values are supported. When HTTPS access is enabled, the URI schema must be changed to HTTPS.
    • username and password are required only when the security mode is enabled for the primary cluster.
    • After the configuration is complete, you can use the GET _remote/rest/info API to obtain the connection status with the primary cluster.
    +
    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528379317.html b/docs/css/umn/en-us_topic_0000001528379317.html new file mode 100644 index 00000000..bfe48f82 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379317.html @@ -0,0 +1,303 @@ + + +

Getting Started with Elasticsearch

+

This section describes how to use Elasticsearch for product search. You can use the Elasticsearch search engine of CSS to search for data based on the scenario example. The basic operation process is as follows:

+ +

Scenario Description

A women's clothing brand builds an e-commerce website. It uses traditional databases to provide a product search function for users. However, due to an increase in the number of users and business growth, the traditional databases have slow response and low accuracy. To improve user experience and user retention, the e-commerce website plans to use Elasticsearch to provide the product search function for users.

+

This section describes how to use Elasticsearch to provide the search function for users.

+

Assume that the e-commerce website provides the following data:

+
{
+"products":[
+{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
+{"productName":"Latest art shirts for women in 2017 autumn","size":"M"}
+{"productName":"Latest art shirts for women in 2017 autumn","size":"S"}
+{"productName":"Latest jeans for women in spring 2018","size":"M"}
+{"productName":"Latest jeans for women in spring 2018","size":"S"}
+{"productName":"Latest casual pants for women in spring 2017","size":"L"}
+{"productName":"Latest casual pants for women in spring 2017","size":"S"}
+]
+}
+
+

Step 1: Create a Cluster

Create a cluster using Elasticsearch as the search engine. In this example, suppose that you create a cluster named Es-xfx. This cluster is used only for getting started with Elasticsearch. For this cluster, you are advised to select css.medium.8 for Node Specifications, Common I/O for Node Storage Type, and 40 GB for Node Storage Capacity. For details, see Creating a Cluster in Non-Security Mode.

+

Create a cluster using Elasticsearch as the search engine. In this example, suppose that you create a cluster named Sample-ESCluster. This cluster is used only for getting started with Elasticsearch. For this cluster, you are advised to select ess.spec-4u8g for Node Specifications, High I/O for Node Storage Type, and 40 GB for Node Storage Capacity. For details, see or .

+

After you create the cluster, switch to the cluster list to view the created cluster. If the Status of the cluster is Available, the cluster is created successfully.

+
Figure 1 Creating a cluster
+
+

Step 2: Import Data

CSS supports importing data to Elasticsearch using Logstash, Kibana, or APIs. Kibana lets you visualize your Elasticsearch data. The following procedure illustrates how to import data to Elasticsearch using Kibana.

+
  1. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column to go to the Kibana login page.
    • Non-security cluster: The Kibana console is displayed.
    • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the one specified during cluster creation.
    +
  2. In the navigation pane of Kibana on the left, choose Dev Tools.

    The text box on the left is the input box. The triangle icon in the upper right corner of the input box is the command execution button. The text box on the right area is the result output box.

    +
    Figure 2 Console page
    +

    The Kibana UI varies depending on the Kibana version.

    +
    +
  3. On the Console page, run the following command to create index named my_store:
    Versions earlier than 7.x
    PUT /my_store
    +{
    +  "settings": {
    +    "number_of_shards": 1
    +  },
    +  "mappings": {
    +    "products": {
    +      "properties": {
    +        "productName": {
    +          "type": "text",
    +          "analyzer": "ik_smart"
    +        },
    +        "size": {
    +          "type": "keyword"
    +        }
    +      }
    +    }
    +  }
    +}
    +
    +

    Versions 7.x and later

    +
    PUT /my_store
    +{
    +  "settings": {
    +    "number_of_shards": 1
    +  },
    +  "mappings": {
    +          "properties": {
    +            "productName": {
    +              "type": "text",
    +              "analyzer": "ik_smart"
    +        },
    +        "size": {
    +          "type": "keyword"
    +        }
    +      }
    +    }
    +  }
    +

    The command output is similar to the following:

    +
    {
    +  "acknowledged" : true,
    +  "shards_acknowledged" : true,
    +  "index" : "my_store"
    +}
    +
  4. On the Console page, run the following command to import data to index named my_store:

    Versions earlier than 7.x

    +
    POST /my_store/products/_bulk
    +{"index":{}}
    +{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
    +{"index":{}}
    +{"productName":"Latest art shirts for women in 2017 autumn","size":"M"}
    +{"index":{}}
    +{"productName":"Latest art shirts for women in 2017 autumn","size":"S"}
    +{"index":{}}
    +{"productName":"Latest jeans for women in spring 2018","size":"M"}
    +{"index":{}}
    +{"productName":"Latest jeans for women in spring 2018","size":"S"}
    +{"index":{}}
    +{"productName":"Latest casual pants for women in spring 2017","size":"L"}
    +{"index":{}}
    +{"productName":"Latest casual pants for women in spring 2017","size":"S"}
    +
    +

    Versions 7.x and later

    +
    POST /my_store/_doc/_bulk
    +{"index":{}}
    +{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
    +{"index":{}}
    +{"productName":"Latest art shirts for women in 2017 autumn","size":"M"}
    +{"index":{}}
    +{"productName":"Latest art shirts for women in 2017 autumn","size":"S"}
    +{"index":{}}
    +{"productName":"Latest jeans for women in spring 2018","size":"M"}
    +{"index":{}}
    +{"productName":"Latest jeans for women in spring 2018","size":"S"}
    +{"index":{}}
    +{"productName":"Latest casual pants for women in spring 2017","size":"L"}
    +{"index":{}}{"productName":"Latest casual pants for women in spring 2017","size":"S"}
    +

    If the value of the errors field in the command output is false, the data is imported successfully.

    +
+
+

Step 3: Search for Data

  • Full-text search

    If you access the e-commerce website and want to search for commodities whose names include "spring jeans", enter "spring jeans" to begin your search. The following example shows the command to be executed on Kibana and the command output.

    +

    Command to be executed on Kibana:

    +

    Versions earlier than 7.x

    +
    GET /my_store/products/_search
    +{
    +  "query": {"match": {
    +    "productName": "spring jeans"
    +  }}
    +}
    +

    Versions 7.x and later

    +
    GET /my_store/_search
    +{
    +  "query": {"match": {
    +    "productName": "spring jeans"
    +  }}
    +}
    +

    The command output is similar to the following:

    +
    {
    +  "took": 80,
    +  "timed_out": false,
    +  "_shards": {
    +    "total": 1,
    +    "successful": 1,
    +    "skipped": 0,
    +    "failed": 0
    +  },
    +  "hits": {
    +    "total": 4,
    +    "max_score": 1.8069603,
    +    "hits": [
    +      {
    +        "_index": "my_store",
    +        "_type": "products",
    +        "_id": "yTG1QWUBRuneTTG2KJSq",
    +        "_score": 1.8069603,
    +        "_source": {
    +          "productName": "Latest jeans for women in spring 2018",
    +          "size": "M"
    +        }
    +      },
    +      {
    +        "_index": "my_store",
    +        "_type": "products",
    +        "_id": "yjG1QWUBRuneTTG2KJSq",
    +        "_score": 1.8069603,
    +        "_source": {
    +          "productName": "Latest jeans for women in spring 2018",
    +          "size": "S"
    +        }
    +      },
    +      {
    +        "_index": "my_store",
    +        "_type": "products",
    +        "_id": "yzG1QWUBRuneTTG2KJSq",
    +        "_score": 0.56677663,
    +        "_source": {
    +          "productName": "Latest casual pants for women in spring 2017",
    +          "size": "L"
    +        }
    +      },
    +      {
    +        "_index": "my_store",
    +        "_type": "products",
    +        "_id": "zDG1QWUBRuneTTG2KJSq",
    +        "_score": 0.56677663,
    +        "_source": {
    +          "productName": "Latest casual pants for women in spring 2017",
    +          "size": "S"
    +        }
    +      }
    +    ]
    +  }
    +}
    +
    • Elasticsearch supports full-text search. The preceding command searches for the information about all commodities whose names include "spring" or "jeans".
    • Unlike traditional databases, Elasticsearch can return results in milliseconds by using inverted indexes.
    • Elasticsearch supports sorting by score. In the command output, information about the first two commodities contains both "spring" and "jeans", while that about the last two products contain only "spring". Therefore, the first two commodities rank prior to the last two due to high keyword match.
    +
+
  • Aggregation result display

    The e-commerce website provides the function of displaying aggregation results. For example, it classifies commodities corresponding to "spring" based on the size so that you can collect the number of products of different sizes. The following example shows the command to be executed on Kibana and the command output.

    +

    Command to be executed on Kibana:

    +

    Versions earlier than 7.x

    +
    GET /my_store/products/_search
    +{
    +"query": {
    +"match": { "productName": "spring" }
    +},
    +"size": 0,
    +"aggs": {
    +"sizes": {
    +"terms": { "field": "size" }
    +}
    +}
    +}
    +

    Versions 7.x and later

    +
    GET /my_store/_search
    +{
    +"query": {
    +"match": { "productName": "spring" }
    +},
    +"size": 0,
    +"aggs": {
    +"sizes": {
    +"terms": { "field": "size" }
    +}
    +}
    +}
    +

    The command output is similar to the following:

    +

    Versions earlier than 7.x

    +
    {
    +  "took": 66,
    +  "timed_out": false,
    +  "_shards": {
    +    "total": 1,
    +    "successful": 1,
    +    "skipped": 0,
    +    "failed": 0
    +  },
    +  "hits": {
    +    "total": 4,
    +    "max_score": 0,
    +    "hits": []
    +  },
    +  "aggregations": {
    +    "sizes": {
    +      "doc_count_error_upper_bound": 0,
    +      "sum_other_doc_count": 0,
    +      "buckets": [
    +        {
    +          "key": "S",
    +          "doc_count": 2
    +        },
    +        {
    +          "key": "L",
    +          "doc_count": 1
    +        },
    +        {
    +          "key": "M",
    +          "doc_count": 1
    +        }
    +      ]
    +    }
    +  }
    +}
    +

    Versions 7.x and later

    +
    {
    +  "took" : 27,
    +  "timed_out" : false,
    +  "_shards" : {
    +    "total" : 1,
    +    "successful" : 1,
    +    "skipped" : 0,
    +    "failed" : 0
    +  },
    +  "hits" : {
    +    "total" : {
    +      "value" : 3,
    +      "relation" : "eq"
    +    },
    +    "max_score" : null,
    +    "hits" : [ ]
    +  },
    +  "aggregations" : {
    +    "sizes" : {
    +      "doc_count_error_upper_bound" : 0,
    +      "sum_other_doc_count" : 0,
    +      "buckets" : [
    +        {
    +          "key" : "L",
    +          "doc_count" : 1
    +        },
    +        {
    +          "key" : "M",
    +          "doc_count" : 1
    +        },
    +        {
    +          "key" : "S",
    +          "doc_count" : 1
    +        }
    +      ]
    +    }
    +  }
    +}
    +
+
+

Step 4: Delete the Cluster

Once you understand the process and method of using Elasticsearch, you can perform the following steps to delete the cluster you created for the example and its data to avoid resource wastage.

+

After you delete a cluster, its data cannot be restored. Exercise caution when deleting a cluster.

+
+
  1. Log in to the CSS management console. In the navigation pane on the left, choose Clusters > Elasticsearch.
  2. Locate the row that contains cluster Es-xfx and click More > Delete in the Operation column.
  3. In the displayed dialog box, enter the name of the cluster to be deleted and click OK.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528379321.html b/docs/css/umn/en-us_topic_0000001528379321.html new file mode 100644 index 00000000..71f38b18 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528379321.html @@ -0,0 +1,13 @@ + + +

Features

+

CSS supports read/write splitting. Data written to the primary cluster (Leader) can be automatically synchronized to the secondary cluster (Follower). In this way, data is written to the primary cluster and queried in the secondary cluster. The read and write can be separated to improve the query performance (as shown in the left part of Figure 1). When the primary cluster is unavailable, the secondary cluster can provide data write and query services (as shown in the right part of Figure 1).

+
Figure 1 Two application scenarios of read/write splitting
+

Currently, only clusters of versions 7.6.2 and 7.10.2 support read/write isolation. The versions of the primary and secondary clusters must be the same.

+
+
+ +
+ diff --git a/docs/css/umn/css_01_0129.html b/docs/css/umn/en-us_topic_0000001528499121.html similarity index 93% rename from docs/css/umn/css_01_0129.html rename to docs/css/umn/en-us_topic_0000001528499121.html index 276f8558..1a84fe95 100644 --- a/docs/css/umn/css_01_0129.html +++ b/docs/css/umn/en-us_topic_0000001528499121.html @@ -1,13 +1,13 @@ - +

Sample Code for Vector Search on a Client

-

Elasticsearch provides standard REST APIs and clients developed using Java, Python, and Go.

-

Based on the open-source dataset SIFT1M (http://corpus-texmex.irisa.fr/) and Python Elasticsearch client, this section provides a code snippet for creating a vector index, importing vector data, and querying vector data on the client.

-

Prerequisites

The Python dependency package has been installed on the client. If it is not installed, run the following commands to install it:

-
pip install numpy
+

Elasticsearch provides standard REST APIs and clients developed using Java, Python, and Go.

+

Based on the open-source dataset SIFT1M (http://corpus-texmex.irisa.fr/) and Python Elasticsearch client, this section provides a code snippet for creating a vector index, importing vector data, and querying vector data on the client.

+

Prerequisites

The Python dependency package has been installed on the client. If it is not installed, run the following commands to install it:

+
pip install numpy
 pip install elasticsearch==7.6.0
-

Sample Code

  1
+

Sample Code

  1
   2
   3
   4
@@ -323,7 +323,7 @@ pip install elasticsearch==7.6.0
diff --git a/docs/css/umn/en-us_topic_0000001528499125.html b/docs/css/umn/en-us_topic_0000001528499125.html new file mode 100644 index 00000000..922cc7bb --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499125.html @@ -0,0 +1,13 @@ + + +

Context

+

CSS monitors various metrics of the running status and change trend of cluster indexes to measure service usage and handle potential risks in a timely manner, ensuring that clusters can run stably.

+

During index monitoring, the stats information about indexes is collected and saved to the monitoring index (monitoring-eye-css-[yyyy-mm-dd]) of the cluster, and retained for one week by default.

+

Currently, only the Elasticsearch clusters of the versions 7.6.2 and 7.10.2 support the index monitoring.

+
+
+ +
+ diff --git a/docs/css/umn/css_01_0197.html b/docs/css/umn/en-us_topic_0000001528499129.html similarity index 90% rename from docs/css/umn/css_01_0197.html rename to docs/css/umn/en-us_topic_0000001528499129.html index a5c1df6e..7aeceb27 100644 --- a/docs/css/umn/css_01_0197.html +++ b/docs/css/umn/en-us_topic_0000001528499129.html @@ -1,8 +1,8 @@ - +

kibana-monitor

-

The configuration file content of kibana-monitor is as follows. You are advised to save the file as monitoring-kibana.ndjson.

-
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] segment memory in bytes of index for top10","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] segment memory in bytes of index for top10\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"terms\",\"split_color_mode\":\"kibana\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"index_stats.total.segments.memory_in_bytes\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"bytes\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"segments memory in bytes \",\"type\":\"timeseries\",\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"61ca57f2-469d-11e7-af02-69e470af7417\"}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false}}"},"id":"3ae5d820-6628-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwNiwyXQ=="}
+

The configuration file content of kibana-monitor is as follows. You are advised to save the file as monitoring-kibana.ndjson.

+
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] segment memory in bytes of index for top10","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] segment memory in bytes of index for top10\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"terms\",\"split_color_mode\":\"kibana\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"index_stats.total.segments.memory_in_bytes\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"bytes\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"segments memory in bytes \",\"type\":\"timeseries\",\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"61ca57f2-469d-11e7-af02-69e470af7417\"}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false}}"},"id":"3ae5d820-6628-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwNiwyXQ=="}
 {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] segment count of index for top10","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"filter\":{\"language\":\"kuery\",\"query\":\"\"},\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"isModelInvalid\":false,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"rgba(231,102,76,1)\",\"fill\":0.5,\"formatter\":\"number\",\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"label\":\"segment count of index for top10\",\"line_width\":1,\"metrics\":[{\"field\":\"index_stats.total.segments.count\",\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\"}],\"point_size\":1,\"separate_axis\":0,\"split_color_mode\":\"kibana\",\"split_mode\":\"terms\",\"stacked\":\"none\",\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"timestamp\",\"tooltip_mode\":\"show_all\",\"type\":\"timeseries\"},\"title\":\"[monitoring] segment count of index for top10\",\"type\":\"metrics\"}"},"id":"45d571c0-6626-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwNywyXQ=="}
 {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] markdown","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"### Index Monitoring \\nThis dashboard contains default table for you to play with. You can view it, search it, and interact with the visualizations.\"},\"aggs\":[]}"},"id":"b2811c70-a5f1-11ec-9a68-ada9d754c566","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwOCwyXQ=="}
 {"attributes":{"description":"number of document being indexing for primary and replica shards","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] Indexing Rate (/s)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] Indexing Rate (/s)\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"rgba(0,32,188,1)\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"indices_stats._all.total.indexing.index_total\"},{\"unit\":\"1s\",\"id\":\"fed72db0-a5f8-11ec-aa10-992297d21a2e\",\"type\":\"derivative\",\"field\":\"61ca57f2-469d-11e7-af02-69e470af7417\"},{\"unit\":\"\",\"id\":\"14b66420-a5f9-11ec-aa10-992297d21a2e\",\"type\":\"positive_only\",\"field\":\"fed72db0-a5f8-11ec-aa10-992297d21a2e\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"Indexing Rate (/s)\",\"type\":\"timeseries\",\"split_color_mode\":\"rainbow\",\"hidden\":false}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"legend_position\":\"bottom\"},\"aggs\":[]}"},"id":"de4f8ab0-a5f8-11ec-9a68-ada9d754c566","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwOSwyXQ=="}
@@ -19,7 +19,7 @@
 
diff --git a/docs/css/umn/en-us_topic_0000001528499133.html b/docs/css/umn/en-us_topic_0000001528499133.html new file mode 100644 index 00000000..6762054f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499133.html @@ -0,0 +1,24 @@ + + +

Index Monitoring

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528499137.html b/docs/css/umn/en-us_topic_0000001528499137.html new file mode 100644 index 00000000..7dc1e3f9 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499137.html @@ -0,0 +1,197 @@ + + +

Using Logstash to Import Data to Elasticsearch

+

You can use Logstash to collect data and migrate collected data to Elasticsearch in CSS. This method helps you effectively obtain and manage data through Elasticsearch. Data files can be in the JSON or CSV format.

+

Logstash is an open-source, server-side data processing pipeline that ingests data from multiple sources simultaneously, transforms data, and then sends data to Elasticsearch. For details about Logstash, visit the following website: https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html

+

The following two scenarios are involved depending on the Logstash deployment:

+ +

Prerequisites

+
+

Importing Data When Logstash Is Deployed on the External Network

Figure 1 illustrates how data is imported when Logstash is deployed on an external network.

+
Figure 1 Importing data when Logstash is deployed on an external network
+

+
  1. Create a jump host and configure it as follows:
    • The jump host is an ECS running the Linux OS and has been bound with an EIP.
    • The jump host resides in the same VPC as the CSS cluster.
    • SSH local port forwarding is configured for the jump host to forward requests from a chosen local port to port 9200 on one node of the CSS cluster.
    • Refer to SSH documentation for the local port forwarding configuration.
    +
  2. Use PuTTY to log in to the created jump host with the EIP.
  3. Run the following command to perform port mapping and transfer the request sent to the port on the jump host to the target cluster:
    ssh -g -L <Local port of the jump host:Private network address and port number of a node> -N -f root@<Private IP address of the jump host>
    +
    • In the preceding command, <Local port of the jump host> refers to the port obtained in 1.
    • In the preceding command, <Private network address and port number of a node> refers to the private network address and port number of a node in the cluster. If the node is faulty, the command execution will fail. If the cluster contains multiple nodes, you can replace the value of <private network address and port number of a node> with the private network address and port number of any available node in the cluster. If the cluster contains only one node, restore the node and execute the command again.
    • Replace <Private IP address of the jump host> in the preceding command with the IP address (with Private IP) of the created jump host in the IP Address column in the ECS list on the ECS management console.
    +
    +

    For example, port 9200 on the jump host is assigned external network access permissions, the private network address and port number of the node are 192.168.0.81 and 9200, respectively, and the private IP address of the jump host is 192.168.0.227. You need to run the following command to perform port mapping:

    +
    ssh -g -L 9200:192.168.0.81:9200 -N -f root@192.168.0.227
    +
  4. Log in to the server where Logstash is deployed and store the data files to be imported on the server.

    For example, data file access_20181029_log needs to be imported, the file storage path is /tmp/access_log/, and the data file includes the following data:

    +

    Create the access_log folder if it does not exist.

    +
    +
    |   All |               Heap used for segments |                        |     18.6403 |      MB |
    +|   All |             Heap used for doc values |                        |    0.119289 |      MB |
    +|   All |                  Heap used for terms |                        |     17.4095 |      MB |
    +|   All |                  Heap used for norms |                        |   0.0767822 |      MB |
    +|   All |                 Heap used for points |                        |    0.225246 |      MB |
    +|   All |          Heap used for stored fields |                        |    0.809448 |      MB |
    +|   All |                        Segment count |                        |         101 |         |
    +|   All |                       Min Throughput |           index-append |     66232.6 |  docs/s |
    +|   All |                    Median Throughput |           index-append |     66735.3 |  docs/s |
    +|   All |                       Max Throughput |           index-append |     67745.6 |  docs/s |
    +|   All |              50th percentile latency |           index-append |     510.261 |      ms |
    +
    +
  5. In the server where Logstash is deployed, run the following command to create configuration file logstash-simple.conf in the Logstash installation directory:
    cd /<Logstash installation directory>/
    +vi logstash-simple.conf
    +
  6. Input the following content in logstash-simple.conf:
    input {
    +Location of data
    +}
    +filter {
    +Related data processing
    +}
    +output {
    +    elasticsearch {
    +        hosts => "<EIP of the jump host>:<Number of the port assigned external network access permissions on the jump host>"
    +        (Optional) If communication encryption has been enabled on the cluster, you need to add the following configuration:
    +        ssl => true
    +        ssl_certificate_verification => false
    +    }
    +}
    +
    • The input parameter indicates the data source. Set this parameter based on the actual conditions. For details about the input parameter and parameter usage, visit the following website: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
    • The filter parameter specifies the mode in which data is processed. For example, extract and process logs to convert unstructured information into structured information. For details about the filter parameter and parameter usage, visit the following website: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
    • The output parameter indicates the destination address of the data. For details about the output parameter and parameter usage, visit https://www.elastic.co/guide/en/logstash/current/output-plugins.html. Replace <EIP address of the jump host> with the IP address (with EIP) of the created jump host in the IP Address column in the ECS list on the ECS management console. <Number of the port assigned external network access permissions on the jump host> is the number of the port obtained in 1, for example, 9200.
    +

    Consider the data files in the /tmp/access_log/ path mentioned in 4 as an example. Assume that data import starts from data in the first row of the data file, the filtering condition is left unspecified (indicating no data processing operations are performed), the public IP address and port number of the jump host are 192.168.0.227 and 9200, respectively, and the name of the target index is myindex. Edit the configuration file as follows, and enter :wq to save the configuration file and exit.

    +
    input { 
    +    file{
    +      path => "/tmp/access_log/*"
    +      start_position => "beginning"
    +    }
    +} 
    +filter { 
    +} 
    +output { 
    +    elasticsearch { 
    +      hosts => "192.168.0.227:9200"
    +      index => "myindex"
    +     
    +    } 
    +}
    +

    If a license error is reported, set ilm_enabled to false.

    +
    +

    If the cluster has the security mode enabled, you need to download a certificate first.

    +
    1. Download a certificate on the Basic Information page of the cluster.
      Figure 2 Downloading a certificate
      +
    2. Store the certificate to the server where Logstash is deployed.
    3. Modify the logstash-simple.conf configuration file.
      Consider the data files in the /tmp/access_log/ path mentioned in 4 as an example. Assume that data import starts from data in the first row of the data file, the filtering condition is left unspecified (indicating no data processing operations are performed), and the public IP address and port number of the jump host are 192.168.0.227 and 9200, respectively. The name of the index for importing data is myindex, and the certificate is stored in /logstash/logstash6.8/config/CloudSearchService.cer. Edit the configuration file as follows, and enter :wq to save the configuration file and exit.
      input{
      +    file {
      +        path => "/tmp/access_log/*"
      +        start_position => "beginning"
      +    }
      +}
      +filter {
      +    }
      +output{
      +    elasticsearch{
      +        hosts => ["https://192.168.0.227:9200"]
      +        index => "myindex"
      +        user => "admin"
      +        password => "******"
      +        cacert => "/logstash/logstash6.8/config/CloudSearchService.cer"
      +        manager_template => false
      +        ilm_enabled => false 
      +        ssl => true
      +        ssl_certificate_verification => false
      +    }
      +}
      +

      password: password for logging in to the cluster

      +
      +
      +
    +
  7. Run the following command to import the data collected by Logstash to the cluster:
    ./bin/logstash -f logstash-simple.conf
    +

    This command must be executed in the directory where the logstash-simple.conf file is stored. For example, if the logstash-simple.conf file is stored in /root/logstash-7.1.1/, go to the directory before running the command.

    +
    +
  8. Log in to the CSS management console.
  9. In the navigation pane on the left, choose Clusters > Elasticsearch to switch to the Clusters page.
  10. From the cluster list, locate the row that contains the cluster to which you want to import data and click Access Kibana in the Operation column.
  11. In the Kibana navigation pane on the left, choose Dev Tools.
  12. On the Console page of Kibana, search for the imported data.

    On the Console page of Kibana, run the following command to search for data. View the search results. If the searched data is consistent with the imported data, the data has been imported successfully.

    +
    GET myindex/_search
    +
+
+

Importing Data When Logstash Is Deployed on an ECS

Figure 3 illustrates how data is imported when Logstash is deployed on an ECS that resides in the same VPC as the cluster to which data is to be imported.

+
Figure 3 Importing data when Logstash is deployed on an ECS
+
  1. Ensure that the ECS where Logstash is deployed and the cluster to which data is to be imported reside in the same VPC, port 9200 of the ECS security group has been assigned external network access permissions, and an EIP has been bound to the ECS.
    • If there are multiple servers in a VPC, you do not need to associate EIPs to other servers as long as one server is associated with an EIP. Switch to the node where Logstash is deployed from the node with which the EIP is associated.
    • If a private line or VPN is available, you do not need to associate an EIP.
    +
    +
  2. Use PuTTY to log in to the ECS.
    For example, data file access_20181029_log is stored in the /tmp/access_log/ path of the ECS, and the data file includes the following data:
    |   All |               Heap used for segments |                        |     18.6403 |      MB |
    +|   All |             Heap used for doc values |                        |    0.119289 |      MB |
    +|   All |                  Heap used for terms |                        |     17.4095 |      MB |
    +|   All |                  Heap used for norms |                        |   0.0767822 |      MB |
    +|   All |                 Heap used for points |                        |    0.225246 |      MB |
    +|   All |          Heap used for stored fields |                        |    0.809448 |      MB |
    +|   All |                        Segment count |                        |         101 |         |
    +|   All |                       Min Throughput |           index-append |     66232.6 |  docs/s |
    +|   All |                    Median Throughput |           index-append |     66735.3 |  docs/s |
    +|   All |                       Max Throughput |           index-append |     67745.6 |  docs/s |
    +|   All |              50th percentile latency |           index-append |     510.261 |      ms |
    +
    +
  3. Run the following command to create configuration file logstash-simple.conf in the Logstash installation directory:
    cd /<Logstash installation directory>/
    +vi logstash-simple.conf
    +
    Input the following content in logstash-simple.conf:
    input {
    +Location of data
    +}
    +filter {
    +Related data processing
    +}
    +output {
    +    elasticsearch{
    +        hosts => "<Private network address and port number of the node>"} 
    +        (Optional) If communication encryption has been enabled on the cluster, you need to add the following configuration:
    +        ssl => true
    +        ssl_certificate_verification => false
    +}
    +
    • The input parameter indicates the data source. Set this parameter based on the actual conditions. For details about the input parameter and parameter usage, visit the following website: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
    • The filter parameter specifies the mode in which data is processed. For example, extract and process logs to convert unstructured information into structured information. For details about the filter parameter and parameter usage, visit the following website: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
    • The output parameter indicates the destination address of the data. For details about the output parameter and parameter usage, visit https://www.elastic.co/guide/en/logstash/current/output-plugins.html. <private network address and port number of a node> refers to the private network address and port number of a node in the cluster.

      If the cluster contains multiple nodes, you are advised to replace the value of <Private network address and port number of a node> with the private network addresses and port numbers of all nodes in the cluster to prevent node faults. Use commas (,) to separate the nodes' private network addresses and port numbers. The following is an example:

      +
      hosts => ["192.168.0.81:9200","192.168.0.24:9200"]
      +

      If the cluster contains only one node, the format is as follows:

      +
      hosts => "192.168.0.81:9200"
      +
    +
    +

    Consider the data files in the /tmp/access_log/ path mentioned in 2 as an example. Assume that data import starts from data in the first row of the data file, the filtering condition is left unspecified (indicating no data processing operations are performed), the private network address and port number of the node in the cluster where data is to be imported are 192.168.0.81 and 9200, respectively, and the name of the target index is myindex. Edit the configuration file as follows, and enter :wq to save the configuration file and exit.

    +
    input { 
    +    file{
    +      path => "/tmp/access_log/*"
    +      start_position => "beginning"
    +    }
    +} 
    +filter { 
    +} 
    +output { 
    +    elasticsearch { 
    +      hosts => "192.168.0.81:9200"
    +      index => "myindex"
    +      
    +    } 
    +}
    +

    If the cluster has the security mode enabled, you need to download a certificate first.

    +
    1. Download a certificate on the Basic Information page of the cluster.
      Figure 4 Downloading a certificate
      +
    2. Store the certificate to the server where Logstash is deployed.
    3. Modify the logstash-simple.conf configuration file.
      Consider the data files in the /tmp/access_log/ path mentioned in step 2 as an example. Assume that data import starts from data in the first row of the data file, the filtering condition is left unspecified (indicating no data processing operations are performed), the public IP address and port number of the jump host are 192.168.0.227 and 9200, respectively. The name of the index for importing data is myindex, and the certificate is stored in /logstash/logstash6.8/config/CloudSearchService.cer. Edit the configuration file as follows, and enter :wq to save the configuration file and exit.
      input{
      +    file {
      +        path => "/tmp/access_log/*"
      +        start_position => "beginning"
      +    }
      +}
      +filter {
      +    }
      +output{
      +    elasticsearch{
      +        hosts => ["https://192.168.0.227:9200"]
      +        index => "myindex"
      +        user => "admin"
      +        password => "******"
      +        cacert => "/logstash/logstash6.8/config/CloudSearchService.cer"
      +        manager_template => false
      +        ilm_enabled => false 
      +        ssl => true
      +        ssl_certificate_verification => false
      +    }
      +}
      +

      password: password for logging in to the cluster

      +
      +
      +
    +
    +
  4. Run the following command to import the ECS data collected by Logstash to the cluster:
    ./bin/logstash -f logstash-simple.conf
    +
  5. Log in to the CSS management console.
  6. In the navigation pane on the left, choose Clusters > Elasticsearch to switch to the Clusters page.
  7. From the cluster list, locate the row that contains the cluster to which you want to import data and click Access Kibana in the Operation column.
  8. In the Kibana navigation pane on the left, choose Dev Tools.
  9. On the Console page of Kibana, search for the imported data.

    On the Console page of Kibana, run the following command to search for data. View the search results. If the searched data is consistent with the imported data, the data has been imported successfully.

    +
    GET myindex/_search
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528499141.html b/docs/css/umn/en-us_topic_0000001528499141.html new file mode 100644 index 00000000..cb0347a3 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499141.html @@ -0,0 +1,25 @@ + + +

Restarting a Cluster

+

If a cluster becomes faulty, you can restart it to check if it can run normally.

+

Prerequisites

  • The target cluster is not frozen and has no task in progress.
  • If a cluster is available, ensure that it has stopped processing service requests (such as importing data and searching for data). Otherwise, data may be lost when the cluster is restarted. You are advised to perform this operation during off-peak hours.
+
+

Context

CSS supports quick restart and rolling restart.

+
Quick Restart
  • All clusters support this function.
  • If you select a node type for quick restart, all nodes of the selected type will be restarted together.
  • If you select a node name for quick restart, only the specified node will be restarted.
  • The cluster is unavailable during quick restart.
+
+
Rolling Restart
  • Rolling restart is supported only when a cluster has at least three nodes (including master nodes, client nodes, and cold data nodes).
  • Rolling restart can be performed only by specifying node types. If you select a node type for rolling restart, the nodes of the selected type will be restarted in sequence.
  • During the rolling restart, only the nodes that are being restarted are unavailable and other nodes can run normally.
  • When the data volume is large, rolling restart will take a long time.
+
+
+

Quick Restart

  1. Log in to the CSS management console.
  2. In the navigation tree on the left, select a cluster type. The cluster management list page is displayed.
  3. In the Operation column of the target cluster, choose More > Restart.
  4. On the Restart Cluster page, select Quick Restart.

    You can quick restart nodes by Node type or Node name. If you select Node type, then you can select multiple node types and perform quick restart at the time. If you select Node name, you can perform quick restart only on one node at a time.

    +
  5. Refresh the page and check the cluster status. During the restart, the cluster status is Processing, and the task status is Restarting. If the cluster status changes to Available, the cluster has been restarted successfully.
+
+

Rolling Restart

  1. Log in to the CSS management console.
  2. In the navigation tree on the left, select a cluster type. The cluster management list page is displayed.
  3. In the Operation column of the target cluster, choose More > Restart.
  4. On the Restart Cluster page, select Rolling Restart.

    You can perform rolling restart by Node type. Select specific node types for restart.

    +
  5. Refresh the page and check the cluster status. During the restart, the cluster status is Processing, and the task status is Restarting. If the cluster status changes to Available, the cluster has been restarted successfully.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528499145.html b/docs/css/umn/en-us_topic_0000001528499145.html new file mode 100644 index 00000000..a7582aff --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499145.html @@ -0,0 +1,47 @@ + + +

High-cardinality Field Histogram Aggregation

+

High-cardinality fields are usually used for histogram grouping and aggregation instead of single-point grouping and aggregation. For example, collecting the statistics of logs at a certain period. Assume that the following query statement exists:

+
POST testindex/_search?pretty
+{
+  "size": 0,
+  "aggs": {
+    "avg_score": {
+      "avg": {
+        "field": "score"
+      },
+      "aggs": {
+        "groupbytime": {
+          "date_histogram": {
+            "field": "timestamp",
+            "calendar_interval": "day"
+          }
+        }
+      }
+    }
+  }
+}
+

This query groups the field timestamp using a histogram and calculates the average score. timestamp is a typical high-cardinality field. To use the enhanced aggregation for the preceding query, set parameters as follows:

+
// Configure an index
+"settings" : {
+    "index" : {
+        "search" : {
+            "turbo" : {
+                "enabled" : "true" // Enable optimization
+            }
+        },
+        "sort" : { // Specify a sorting key
+            "field" : [
+                "timestamp"
+            ]
+        }
+    }
+}
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528499153.html b/docs/css/umn/en-us_topic_0000001528499153.html new file mode 100644 index 00000000..6ad2fcfb --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499153.html @@ -0,0 +1,24 @@ + + +

Storage-Compute Decoupling

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528499157.html b/docs/css/umn/en-us_topic_0000001528499157.html new file mode 100644 index 00000000..74771be2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499157.html @@ -0,0 +1,122 @@ + + +

Memory Flow Control

+

Context

Elasticsearch provides a circuit breaker, which will terminate requests if the memory usage exceeds its threshold. However, Elasticsearch does not check the heap memory usage when an API is called, and does not allow users to configure the threshold for a single request. In this case, memory usage can only be calculated during request processing, which may lead to frequent circuit breaking and cannot avoid heap memory waste. To solve this problem, CSS checks the heap memory usage when receiving REST requests, blocking excess API requests and protecting nodes. You can configure global memory flow control, or configure the request path and heap memory threshold for a specific request path. Before a request is processed, the system checks the configured heap memory threshold. If the threshold is exceeded, the request path will be blocked.

+
  • Memory flow control may affect request processing performance.
  • If the memory flow control is enabled, some Kibana search requests may fail.
  • If memory flow control is enabled in Elasticsearch 5.5.1, _mget requests will be blocked and Kibana access will be abnormal. You can add _mget requests to the request whitelist to avoid this problem.
+
+

The following table describes memory flow control parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Memory flow control parameters

Parameter

+

Type

+

Description

+

flowcontrol.memory.enabled

+

Boolean

+

Whether to enable memory flow control. This function is disabled by default. Enabling memory flow control may slightly affect node performance.

+

Value: true or false

+

Default value: false

+

flowcontrol.memory.allow_path

+

List<String>

+

Request path whitelist for memory flow control.

+

Whitelisted paths are blocked in memory flow control. Wildcard characters are supported. By default, query APIs controlled by the cluster are not blocked in memory flow control. This prevents the failure to query cluster information when the memory usage reaches the threshold.

+

Example:

+
  • "flowcontrol.memory.allow_path": "/index/_search",
  • "flowcontrol.memory.allow_path": "/index*/_search",
  • "flowcontrol.memory.allow_path": ["/index/_search", "/index1/_bulk"],
+

A maximum of 10 paths can be configured. A path can contain up to 32 characters.

+

The default value is null.

+

flowcontrol.memory.heap_limit

+

String

+

Maximum global heap memory usage of a node. The value cannot be less than 10% of the heap memory.

+

Value range: 10%–100%

+

Default value: 90%

+

flowcontrol.memory.*.filter_path

+

String

+

Paths under memory flow control.

+

The default value is **, indicating all paths. If flowcontrol.memory.heap_limit is configured and flowcontrol.memory.*.filter_path is not, it indicates that all the paths, except those in the whitelist, are under control. The whitelist takes precedence over the single-path rule. If a path is specified in both flowcontrol.memory.allow_path and flowcontrol.memory.*.filter_path, the requests from the path will be allowed.

+

For example, if flowcontrol.memory.allow_path and flowcontrol.memory.*.filter_path are both set to abc/_search, then abc/_search will not be under flow control.

+

Maximum length: 32 characters

+

flowcontrol.memory.*.heap_limit

+

String

+

Heap memory usage threshold of request paths. If the heap memory usage exceeds the threshold, flow control will be triggered.

+

Value range: 0–100%

+

Default value: 90%

+
+
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable memory flow control.
    • Enabling memory flow control
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.memory.enabled": true,
      +    "flowcontrol.memory.allow_path": "/index/_search",
      +    "flowcontrol.memory.heap_limit": "85%"
      +  }
      +}
      +
    • Enabling memory flow control for a request path

      Configure the heap memory usage threshold for a request path. You can configure the priorities of such threshold rules.

      +
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.memory.enabled": true,
      +    "flowcontrol.memory": {
      +      "flowcontrol_search": {
      +        "filter_path": "index1/_search",
      +        "heap_limit": "50%"
      +      },
      +      "flowcontrol_bulk": {
      +        "filter_path": "index*/_bulk",
      +        "heap_limit": "50%"
      +      }
      +    }
      +  }
      +}
      +
    • Deleting the memory flow control configuration of a request path
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.memory.enabled": true,
      +    "flowcontrol.memory": {
      +      "flowcontrol_search": {
      +        "filter_path": null,
      +        "heap_limit": null
      +      }
      +    }
      +  }
      +}
      +
    • Disabling cluster memory flow control
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.memory.enabled": false
      +  }
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528499165.html b/docs/css/umn/en-us_topic_0000001528499165.html new file mode 100644 index 00000000..15ab497a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499165.html @@ -0,0 +1,43 @@ + + +

Global Path Whitelist for Flow Control

+

Context

The following table describes the global path whitelist parameters for flow control.

+ +
+ + + + + + + + + +
Table 1 Global path whitelist parameters for flow control

Parameter

+

Type

+

Description

+

flowcontrol.path.white_list

+

List<String>

+

Paths that are not under flow control. These paths are not affected by memory flow control, CPU flow control, or one-click blocking; but are under IP address-based flow control.

+

A maximum of 10 paths can be configured. A path can contain up to 32 characters.

+

This parameter is left blank by default.

+
NOTE:

You are advised not to configure this parameter, unless required by plug-ins.

+
+
+
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation tree on the left, choose Dev Tools. Run the following command to configure the global path whitelist for flow control:
    PUT _cluster/settings
    +{
    +  "persistent": {
    +    "flowcontrol.path.white_list": "xxxx"
    +  }
    +}
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528499169.html b/docs/css/umn/en-us_topic_0000001528499169.html new file mode 100644 index 00000000..d1d7a98a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499169.html @@ -0,0 +1,102 @@ + + +

Other Management APIs

+
  • Querying the created patterns.

    This API is used to query the pattern list and query a specified pattern by name.

    +

    An example request is as follows:

    +
    GET auto_sync/pattern
    +GET auto_sync/pattern/{pattern_name}
    +

    The following is an example of the response:

    +
    {
    +  "patterns" : [
    +    {
    +      "name" : "pattern1",
    +      "pattern" : {
    +        "remote_cluster" : "leader",
    +        "remote_index_patterns" : [
    +          "log*"
    +        ],
    +        "local_index_pattern" : "{{remote_index}}-sync",
    +        "settings" : { }
    +      }
    +    }
    +  ]
    +}
    +
  • Deleting a created schema.

    This API is used to delete a specified pattern.

    +

    An example request is as follows:

    +
    DELETE auto_sync/pattern/{pattern_name}
    +
  • Obtaining the automatic synchronization status.

    This API is used to obtain the synchronization status of matched indexes.

    +

    An example request is as follows:

    +
    GET auto_sync/stats
    +

    The following is an example of the response:

    +
    {
    +  "success_count" : 3,
    +  "failed_count" : 0,
    +  "failed_remote_cluster_state_requests_count" : 0,
    +  "last_fail_exception" : { },
    +  "last_fail_remote_cluster_requests_exception" : { }
    +}
    +
  • Obtaining the synchronization status of the index that is being synchronized.

    An example request is as follows:

    +
    GET {index_name}/sync_stats
    +

    The following is an example of the response:

    +
    {
    +  "indices" : {
    +    "data1_follower" : {
    +      "shards" : {
    +        "0" : [
    +          {
    +            "primary" : false,
    +            "total_synced_times" : 27,
    +            "total_empty_times" : 25,
    +            "total_synced_files" : 4,
    +            "total_synced_bytes" : 3580,
    +            "total_paused_nanos" : 0,
    +            "total_paused_times" : 0,
    +            "current" : {
    +              "files_count" : 0,
    +              "finished_files_count" : 0,
    +              "bytes" : 0,
    +              "finished_bytes" : 0
    +            }
    +          },
    +          {
    +            "primary" : true,
    +            "total_synced_times" : 28,
    +            "total_empty_times" : 26,
    +            "total_synced_files" : 20,
    +            "total_synced_bytes" : 17547,
    +            "total_paused_nanos" : 0,
    +            "total_paused_times" : 0,
    +            "current" : {
    +              "files_count" : 0,
    +              "finished_files_count" : 0,
    +              "bytes" : 0,
    +              "finished_bytes" : 0
    +            }
    +          }
    +        ]
    +      }
    +    }
    +  }
    +}
    +
  • Changing the synchronization period.

    The synchronization period is 30 seconds by default and can be modified.

    +

    An example request is as follows (change the synchronization period to 2 seconds):

    +
    PUT {index_name}/_settings
    +{
    +  "index.remote_sync.sync_interval": "2s"
    +}
    +
  • Enabling forcible synchronization

    By default, the plug-in determines whether to synchronize metadata based on whether the number of documents in the index of the primary cluster changes. If the primary cluster only updates documents and the number of documents remains unchanged, the plug-in does not synchronize the updates to the secondary cluster. The configuration can be modified. After this function is enabled, the index metadata of the primary cluster is forcibly synchronized to the secondary cluster in each synchronization period.

    +

    The following is an example of enabling forcible synchronization:

    +
    PUT _cluster/settings
    +{
    +  "persistent": {
    +    "remote_sync.force_synchronize": true
    +  }
    +}
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528499181.html b/docs/css/umn/en-us_topic_0000001528499181.html new file mode 100644 index 00000000..553a8ca5 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499181.html @@ -0,0 +1,13 @@ + + +

Auditing

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528499197.html b/docs/css/umn/en-us_topic_0000001528499197.html new file mode 100644 index 00000000..2e1514ab --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499197.html @@ -0,0 +1,114 @@ + + +

Checking Index Monitoring Information

+

You can check preconfigured index monitoring visualizations on the Dashboard and Visualizations pages of Kibana. You can also customize tables and charts.

+

Prerequisites

A cluster has been created and index monitoring has been enabled.

+
+

Checking Dashboard Charts

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  3. In the navigation tree on the left, click Dashboard.
  4. Click [Monitoring] Index Monitoring Dashboard to view the preconfigured dashboard.
    Figure 1 Preconfigured dashboard charts
    +

    The preconfigured dashboard displays the number of read and write operations per second in the cluster and the top 10 indexes with the most read and write operations per second.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Preconfigured charts

    Chart Name

    +

    Description

    +

    [monitoring] markdown

    +

    Markdown chart, which briefly describes the dashboard content.

    +

    [monitoring] Indexing Rate (/s)

    +

    Number of documents written to a cluster per second.

    +

    [monitoring] Search Rate (/s)

    +

    Average number of queries per second in a cluster.

    +

    [monitoring] indexing rate of index for top10

    +

    Top 10 indexes with the most documents written per second.

    +

    [monitoring] search rate of index for top10

    +

    Top 10 indexes with the most queries per second.

    +

    [monitoring] total docs count

    +

    Total number of documents in a cluster.

    +

    [monitoring] total docs delete

    +

    Total number of deleted documents in a cluster.

    +

    [monitoring] total store size in bytes

    +

    Total storage occupied by documents in a cluster.

    +

    [monitoring] indices store_size for top10

    +

    Top 10 indexes that occupy the largest storage space.

    +

    [monitoring] indices docs_count for top10

    +

    Top 10 indexes with the largest number of documents.

    +

    [monitoring] indexing time in millis of index for top10(ms)

    +

    Top 10 indexes with the longest document write latency in a unit time (ms).

    +

    [monitoring] search query time in millis of index for top10(ms)

    +

    Top 10 indexes with the longest index query time in a unit time (ms).

    +

    [monitoring] segment count of index for top10

    +

    Top 10 indexes with the largest number of index segments.

    +

    [monitoring] segment memory in bytes of index for top10

    +

    Top 10 indexes with the largest heap memory usage of index segments.

    +
    +
    +

    The index pattern of monitoring-eye-css-* cannot be deleted during index monitoring. Otherwise, the monitoring chart will be abnormal.

    +
    +
+
+

Customizing Visualizations Charts

The index monitoring module periodically stores the index/stats information in the monitoring-eys-css index. You can use the Kibana chart function to draw customized charts.

+

The following procedure describes how to check the trend of the document quantity in a chart as an example.

+
  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Choose Visualize.
  4. Click Create visualization and select TSVB.
  5. Set chart parameters and view the visualizations.
    On the Data tab page, index_stats.primaries.docs.count indicates the number of documents in the primary shard. Derivative indicates the difference between aggregation buckets. Set Unit to 1s, visualizing network rates as "per second". Select Positive only to prevent negative numbers after resetting. To sort statistics by index, set Group by to Terms and By to index_stats.index. Statistics will be grouped by index name.
    Figure 2 TSVB page
    +
    +

    To view data in different time segments, set the aggregation interval, or the displayed data will be incomplete. On the Panel options tab page, set Interval to 1m or 30m to adjust the interval of timestamp.

    +
    Figure 3 Setting the interval
    +
+
+

Importing Index Monitoring Charts

You can import or export charts on Kibana. If the index monitoring charts are not displayed, you can import the charts to Kibana again to load the monitoring view.

+

The following describes how to import a chart to Kibana:

+
  1. Create the monitoring-kibana.ndjson file by referring to kibana-monitor.
  2. Log in to Kibana and choose Management > Stack Management > Saved objects.
    Figure 4 Selecting saved objects
    +
  3. Click Import and upload the monitoring-kibana.ndjson file created in step 1.
    Figure 5 Uploading a file
    +
  4. After the upload is complete, click Done. The index monitoring chart is successfully imported.
    Figure 6 Successfully importing index monitoring charts
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528499201.html b/docs/css/umn/en-us_topic_0000001528499201.html new file mode 100644 index 00000000..3a8d3194 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528499201.html @@ -0,0 +1,170 @@ + + +

Viewing Basic Cluster Information

+

On the Cluster Information page, you can view the information about a cluster, including the private network address, public IP address, version, and node.

+
  1. Log in to the CSS management console.
  2. Choose Clusters > Elasticsearch. The cluster list is displayed.
  3. Click a cluster name to go to the Cluster Information page and view the basic information about the cluster. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for configuring basic information

    Type

    +

    Parameter

    +

    Description

    +

    Cluster Information

    +

    Name

    +

    Cluster name. The name can be customized.

    +

    You can click on the right to change the cluster name.

    +

    ID

    +

    Unique ID of a cluster, which is automatically generated by the system.

    +

    Each cluster in the same region has a unique ID.

    +

    Version

    +

    Cluster version information.

    +

    For details about how to upgrade the cluster version, see Upgrading the Cluster Version.

    +

    Cluster Status

    +

    Current status of a cluster

    +

    Task Status

    +

    Current task status of a cluster. If no task is in progress, -- is displayed.

    +

    Created

    +

    Time when a cluster was created

    +

    Cluster Storage Capacity (GB)

    +

    Storage capacity of a cluster

    +

    Used Cluster Storage (GB)

    +

    Used storage capacity of a cluster

    +

    Configuration

    +

    Region

    +

    Region where a cluster is located

    +

    AZ

    +

    AZ where a cluster is located

    +

    VPC

    +

    VPC to which the cluster belongs

    +

    Subnet

    +

    Subnet to which the cluster belongs

    +

    Security Group

    +

    Security group to which a cluster belongs.

    +

    To change the security group of a cluster, click Change Security Group on the right.

    +
    NOTICE:

    Before changing the security group, ensure that the port 9200 required for service access has been enabled. Incorrect security group configuration may cause service access failures. Exercise caution when performing this operation.

    +
    +

    Security Mode

    +

    Security mode of a cluster.

    +
    • Enabled: The current cluster is a security cluster.
    • Disabled: The current cluster is a non-security cluster.
    +

    For details about how to change the security mode of a cluster, see Changing the Security Mode.

    +

    Reset Password

    +

    This parameter is displayed only for security clusters.

    +

    Click Reset to change the password of the administrator account admin of the security cluster.

    +
    NOTE:

    Requirements for administrator passwords:

    +
    • The password can contain 8 to 32 characters.
    • The password must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The following special characters are supported: ~!@#$%^&*()-_=+\|[{}];:,<.>/?
    • Do not use the administrator name, or the administrator name spelled backwards.
    • You are advised to change the password periodically.
    +
    +

    Enterprise Project

    +

    Enterprise project to which a cluster belongs.

    +

    You can click the project name to view the basic information about the enterprise project.

    +

    Public IP Address

    +

    Public network access information, which is displayed only for clusters in security mode.

    +
    • For a security cluster with public network access enabled, the configured public network address is displayed. You can use this address to access the security cluster from the public network.
    • For a security cluster with public network access disabled, -- is displayed.
    +

    When using a public IP address to access a cluster, you are advised to enable access control and configure an access whitelist to improve cluster security. For details about how to configure the public network access, see Accessing a Cluster from a Public Network.

    +

    Access Control

    +

    Whether to set access control for a cluster. This parameter is displayed only for clusters with public network access enabled.

    +
    • Enabled: Only IP addresses in the whitelist can access the cluster through the public network.
    • Disabled: Any IP address can access the cluster through the public network.
    +

    Click Set to configure the access control and the whitelist.

    +

    Bandwidth

    +

    The bandwidth for public network access. This parameter is displayed only for clusters with public network access enabled.

    +

    Click Edit to change the bandwidth size.

    +

    HTTPS Access

    +

    Whether to enable the HTTPS access protocol for a cluster.

    +
    • Disabled: The HTTP protocol is used for cluster access.
    • Enabled: The HTTPS protocol is used for cluster access. Only security clusters can enable this function. If HTTPS Access is enabled, you can click Download Certificate to obtain the CER security certificate for accessing the security cluster. Currently, the security certificate cannot be used in the public network environment.
    +

    For details about how to change the access mode of a cluster in security mode, see Switching the Protocol of Security Clusters.

    +

    Private IPv4 Address

    +

    Private IP address and port number of a cluster, which can be used to access the cluster. If the cluster has only one node, the IP address and port number of only one node are displayed, for example, 10.62.179.32:9200. If the cluster has multiple nodes, the IP addresses and port numbers of all nodes are displayed, for example, 10.62.179.32:9200,10.62.179.33:9200.

    +

    Node

    +

    Node Specifications

    +

    Specifications of nodes in a cluster

    +

    Node Storage Type

    +

    Storage capacity and storage type of nodes in a cluster

    +

    Nodes

    +

    Number of nodes in a cluster

    +
    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659081.html b/docs/css/umn/en-us_topic_0000001528659081.html new file mode 100644 index 00000000..071b4b38 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659081.html @@ -0,0 +1,52 @@ + + +

Switching Hot and Cold Data

+

CSS provides you with cold data nodes. You can store data that requires query response in seconds on high-performance nodes and store data that requires query response in minutes on cold data nodes with large capacity and low specifications.

+
  • When creating a cluster, you need to configure nodes as data nodes. When you enable the cold data node function, data nodes become hot nodes.
  • You can enable the cold data node, master node, and client node functions at the same time.
  • You can increase nodes and expand storage capacity of cold data nodes. The maximum storage capacity is determined by the node specifications. Local disks do not support storage capacity expansion.
+
+

Hot and Cold Data Node Switchover

If you enable cold data nodes when creating a cluster, the cold data nodes are labeled with cold. Other data nodes become hot nodes and are labeled with hot. You can specify indexes to allocate data to cold or hot nodes.

+

You can configure a template to store indices on the specified cold or hot node.

+

The following figure shows this process. Log in to the Kibana Console page of the cluster, modify the template by configuring the index starting with myindex, and store the indexes on the cold node. In this case, the myindex* date is stored on the cold data node by modifying the template.

+
  • For the 5.x version, run the following command to create a template:
    PUT _template/test
    +{
    +    "order": 1,
    +    "template": "myindex*",
    +    "settings": {
    +        "index": {
    +            "refresh_interval": "30s",
    +            "number_of_shards": "3",
    +            "number_of_replicas": "1",
    +            "routing.allocation.require.box_type": "cold"
    +        }
    +    }
    +}
    +
  • For 6.x or later versions, run the following command to create a template:
    PUT _template/test
    +{
    +  "order": 1,
    +  "index_patterns": "myindex*",
    +  "settings": {
    +    "refresh_interval": "30s",
    +    "number_of_shards": "3",
    +    "number_of_replicas": "1",
    +    "routing.allocation.require.box_type": "cold"
    +  }
    +}
    +
+

You can perform operations on the created index.

+
PUT myindex/_settings   
+ { 
+        "index.routing.allocation.require.box_type": "cold"
+    }
+

You can cancel the configurations of hot and cold data nodes.

+
PUT myindex/_settings    
+{ 
+        "index.routing.allocation.require.box_type": null
+    }
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659085.html b/docs/css/umn/en-us_topic_0000001528659085.html new file mode 100644 index 00000000..90afb1b0 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659085.html @@ -0,0 +1,40 @@ + + +

Changing Policies

+

You can change any managed index policy. ISM has constraints to ensure that policy changes do not break indexes.

+

If an index is stuck in its current status, never proceeding, and you want to update its policy immediately, make sure that the new policy includes the same status (same name, action, and order) as the old policy. In this case, ISM applies the new policy even if the policy is being executed.

+

If you update the policy without including an identical status, ISM updates the policy only after all actions in the current status finish executing. Alternatively, you can select a specific status in the old policy and have the new policy take effect.

+

To change a policy using Kibana, do the following:

+
  1. Under Managed Indices, select the indexes to which you want to attach the new policy.
  2. Click Change policy in the upper right corner. The Choose managed indices page is displayed. Configure parameters required for changing a policy. +
    + + + + + + + + + + + + + +
    Table 1 Parameters required for changing a policy

    Parameter

    +

    Description

    +

    Managed indices

    +

    Select the indexes to which you want to attach the new policy. Multiple indexes can be selected.

    +

    State filters

    +

    Select an index status. When a status is selected, the new policy is attached to an index in this status.

    +

    New policy

    +

    Select a new policy.

    +
    +
    +
  3. After configuration is complete, click Change.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659089.html b/docs/css/umn/en-us_topic_0000001528659089.html new file mode 100644 index 00000000..38e081f3 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659089.html @@ -0,0 +1,29 @@ + + +

Enhanced Cluster Features

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528659093.html b/docs/css/umn/en-us_topic_0000001528659093.html new file mode 100644 index 00000000..6f263ac2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659093.html @@ -0,0 +1,36 @@ + + +

Clusters in Security Mode

+

When creating an Elasticsearch cluster, you can enable the security mode for it. Identity authentication is required when users access a security cluster. You can also authorize and encrypt security clusters.

+

Identity Verification

To access a security cluster, you need to enter the username and password. The identity verification is required for the following two types of users:

+
  • Administrator: The default administrator username is admin, and the password is the one specified during cluster creation.
  • Users: Enter the username and password created through Kibana.
+
+

Authorization

On the Kibana console, click Security to control user permissions in Elasticsearch clusters. You can configure hierarchical user permissions by cluster, index, document, and field. For details, see Creating a User and Granting Permissions by Using Kibana.

+

You can add or delete users, and map users to different roles for permissions control.

+
Figure 1 Configuring users
+

You can use role mapping to configure roles and map a user, backend role, and host name to a role.

+
Figure 2 Role mapping
+

You can set permissions for each role to access clusters, indexes and documents and assign Kibana tenants different roles.

+
Figure 3 Configuring role permissions
+

You can set action groups, assign the groups to roles, and configure the roles' permission for accessing indexes and documents.

+
Figure 4 Configuring action groups
+

You can view the parameters of authentication and authorization for the current cluster. You can also run the securityadmin command to modify the configuration.

+
Figure 5 Viewing cluster parameters
+

You can also clear the security cache.

+
Figure 6 Clearing the security cache
+
+

Encryption

When key data is transferred between nodes or through the HTTP protocol, SSL/TLS encryption is used to ensure data security.

+

You can perform the preceding functions on Kibana, using .yml files (not recommended), or by calling RESTful APIs. For more information about the security mode, see Security.

+
+

Resetting the Administrator Password

If you want to change the administrator password of a security cluster or you have forgotten the password, reset the password.

+
  1. On the Clusters page, locate the target cluster whose password you want to reset and click the cluster name. The Cluster Information page is displayed.
  2. In the Configuration area, click Reset next to Reset Password.
    • The password can contain 8 to 32 characters.
    • The password must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The following special characters are supported: ~!@#$%^&*()-_=+\|[{}];:,<.>/?
    • Do not use the administrator name, or the administrator name spelled backwards.
    • You are advised to change the password periodically.
    +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659101.html b/docs/css/umn/en-us_topic_0000001528659101.html new file mode 100644 index 00000000..5e8d001c --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659101.html @@ -0,0 +1,170 @@ + + +

Access Logs

+

Context

You can check access logs in either of the following ways:

+
  • Enable and check access logs via an independent API. Configure the API parameters to record the access log time and size. The access log content is returned through a REST API.
  • Print access logs. Your access logs are printed as files in backend logs.
+

Enabling the access log function may affect cluster performance.

+

The following table describes access log parameters.

+ +
+ + + + + + + + + + + + + +
Table 1 Access log parameters

Parameter

+

Type

+

Description

+

duration_limit

+

String

+

Duration recorded in an access log.

+

Value range: 10 to 120

+

Unit: s

+

Default value: 30

+

capacity_limit

+

String

+

Size of an access log. After access logging is enabled, the size of recorded requests is checked. If the size exceeds the value of this parameter, the access logging stops.

+

Value range: 1 to 5

+

Unit: MB

+

Default value: 1

+
+
+

Access logging stops if either duration_limit or capacity_limit reaches the threshold.

+
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable access logs.
    • Enabling access logs for all nodes in a cluster
      PUT /_access_log?duration_limit=30s&capacity_limit=1mb
      +
    • Enabling access logs for a node in a cluster
      PUT /_access_log/{nodeId}?duration_limit=30s&capacity_limit=1mb
      +

      {nodeId} indicates the ID of the node where you want to enable access logs.

      +
    +
  4. Use APIs to check access logs.
    • API for checking the access logs of all nodes in a cluster
      GET /_access_log
      +
    • API for checking the access logs of a node in a cluster
      GET /_access_log/{nodeId}
      +

      {nodeId} indicates the ID of the node where you want to enable access logs.

      +
    +
    Example response:
    {
    +  "_nodes" : {
    +    "total" : 1,
    +    "successful" : 1,
    +    "failed" : 0
    +  },
    +  "cluster_name" : "css-flowcontroller",
    +  "nodes" : {
    +    "8x-ZHu-wTemBQwpcGivFKg" : {
    +      "name" : "css-flowcontroller-ess-esn-1-1",
    +      "host" : "10.0.0.98",
    +      "count" : 2,
    +      "access" : [
    +        {
    +          "time" : "2021-02-23 02:09:50",
    +          "remote_address" : "/10.0.0.98:28191",
    +          "url" : "/_access/security/log?pretty",
    +          "method" : "GET",
    +          "content" : ""
    +        },
    +        {
    +          "time" : "2021-02-23 02:09:52",
    +          "remote_address" : "/10.0.0.98:28193",
    +          "url" : "/_access/security/log?pretty",
    +          "method" : "GET",
    +          "content" : ""
    +        }
    +      ]
    +    }
    +  }
    +}
    + +
    + + + + + + + + + + + + + + + + +
    Table 2 Response parameters

    Parameter

    +

    Description

    +

    name

    +

    Node name

    +

    host

    +

    Node IP address

    +

    count

    +

    Number of node access requests in a statistical period

    +

    access

    +

    Details about node access requests in a statistical period For details, see Table 3.

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    Table 3 access

    Parameter

    +

    Description

    +

    time

    +

    Request time

    +

    remote_address

    +

    Source IP address and port number of the request

    +

    url

    +

    Original URL of the request

    +

    method

    +

    Method corresponding to the request path

    +

    content

    +

    Request content

    +
    +
    +
  5. Enable or disable the access log function.

    All user access operation can be logged. By default, logs are recorded in the acces_log.log file in the background. The maximum size of a log file is 250 MB, and there can be a maximum of five log files. You can back up access log files to OBS.

    +
    • Enabling access logs
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.accesslog.enabled": true  
      +   }
      +}
      +
    • Disabling access logs
      PUT /_cluster/settings
      +{
      +  "persistent": {
      +    "flowcontrol.accesslog.enabled": false
      +   }
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659105.html b/docs/css/umn/en-us_topic_0000001528659105.html new file mode 100644 index 00000000..3a42febb --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659105.html @@ -0,0 +1,142 @@ + + +

Checking the Index Read and Write Traffic

+

You can call an API to query the index read and write traffic within a period of time.

+

Prerequisites

A cluster has been created and index monitoring has been enabled.

+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  3. Choose Dev Tools in the navigation pane on the left and run the following commands to query the index read and write traffic:
    • Check read and write traffic of all the indexes.
      GET  /_cat/monitoring
      +
    • Check read and write traffic of a specific index.
      GET  /_cat/monitoring/{indexName}
      +

      {indexName} indicates the name of the index whose read and write traffic you want to check.

      +
    • Check the read and write traffic of indexes for different periods.
      GET _cat/monitoring?begin=1650099461000
      +GET _cat/monitoring?begin=2022-04-16T08:57:41
      +GET _cat/monitoring?begin=2022-04-16T08:57:41&end=2022-04-17T08:57:41
      + +
      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Description

      +

      begin

      +

      No

      +

      Start time (UTC time) of the monitoring data you want to view.

      +

      Time format: strict_date_optional_time|epoch_millis

      +

      The default start time is five minutes before the current time.

      +

      end

      +

      No

      +

      End time (UTC time) of the monitoring data you want to view.

      +

      Time format: strict_date_optional_time|epoch_millis

      +

      The default end time is the current time.

      +
      +
      +
    +

    These parameters cannot be used for system indexes, whose names start with a dot (.).

    +
    +

    Information similar to the following is displayed:

    +
    index   begin               end                 status pri rep init unassign docs.count docs.deleted store.size pri.store.size delete.rate indexing.rate search.rate
    +test 2022-03-25T09:46:53.765Z 2022-03-25T09:51:43.767Z yellow  1   1  0    1     9         0      5.9kb        5.9kb         0/s           0/s         0/s
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Parameters in the returned information

    Parameter

    +

    Description

    +

    index

    +

    Index name

    +

    begin

    +

    Start time of the monitoring data you queried.

    +

    end

    +

    End time of the monitoring data you queried.

    +

    status

    +

    Index status within the queried monitoring interval.

    +

    pri

    +

    The number of index shards within the queried monitoring interval.

    +

    rep

    +

    The number of index replicas within the queried monitoring interval.

    +

    init

    +

    The number of initialized indexes within the queried monitoring interval.

    +

    unassign

    +

    The number of unallocated indexes within the queried monitoring interval.

    +

    docs.count

    +

    The number of documents within the queried monitoring interval.

    +

    docs.deleted

    +

    The number of deleted documents within the queried monitoring interval.

    +

    store.size

    +

    Index storage size within the queried monitoring interval.

    +

    pri.store.size

    +

    Size of the primary index shard within the queried monitoring interval.

    +

    delete.rate

    +

    Number of indexes deleted per second within the queried monitoring interval.

    +

    indexing.rate

    +

    Number of indexes wrote per second within the queried monitoring interval.

    +

    search.rate

    +

    Number of indexes queried per second within the queried monitoring interval.

    +
    +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659117.html b/docs/css/umn/en-us_topic_0000001528659117.html new file mode 100644 index 00000000..6d195129 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659117.html @@ -0,0 +1,51 @@ + + +

Optimizing the Performance of Vector Retrieval

+

Optimizing Write Performance

  • To reduce the cost of backup, disable the backup function before data import and enable it afterwards.
  • Set refresh_interval to 120s or a larger value. Larger segments can reduce the vector index build overhead caused by merging.
  • Increase the value of native.vector.index_threads (the default value is 4) to increase the number of threads for vector index build.
    PUT _cluster/settings
    +{
    +  "persistent": {
    +    "native.vector.index_threads": 8
    +  }
    +}
    +
+
+

Optimizing Query Performance

  • After importing data in batches, you can run the forcemerge command to improve the query efficiency.
    POST index_name/_forcemerge?max_num_segments=1
    +
+
  • If the off-heap memory required by the vector index exceeds the circuit breaker limit, index entry swap-in and swap-out occur, which affects the query performance. In this case, you can increase the circuit breaker threshold of off-heap memory.
    PUT _cluster/settings
    +{
    +  "persistent": {
    +    "native.cache.circuit_breaker.cpu.limit": "75%"
    +  }
    +}
    +
  • If the fetch overhead is high, you can configure _source to reduce the fdt file size to reduce the fetch overhead.
    PUT my_index
    +{
    +  "settings": {
    +    "index": {
    +      "vector": "true"
    +    },
    +    "index.soft_deletes.enabled": false
    +  },
    +  "mappings": {
    +    "_source": {
    +      "excludes": ["my_vector"]
    +    },
    +    "properties": {
    +      "my_vector": {
    +        "type": "vector",
    +        "dimension": 128,
    +        "indexing": true,
    +        "algorithm": "GRAPH",
    +        "metric": "euclidean"
    +      }
    +    }
    +  }
    +}
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659121.html b/docs/css/umn/en-us_topic_0000001528659121.html new file mode 100644 index 00000000..e171a1db --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659121.html @@ -0,0 +1,22 @@ + + +

Enhanced Aggregation

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001528659125.html b/docs/css/umn/en-us_topic_0000001528659125.html new file mode 100644 index 00000000..6889bbb5 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659125.html @@ -0,0 +1,62 @@ + + +

Grouping and Aggregation of Low-cardinality Fields

+

Low-cardinality fields have high data clustering performance when being sorted, which facilitates vectorized optimization. Assume that the following query statement exists:

+
POST testindex/_search
+{
+  "size": 0,
+  "aggs": {
+    "groupby_region": {
+      "terms": {
+        "field": "region"
+      },
+      "aggs": {
+        "groupby_host": {
+          "terms": {
+            "field": "host"
+          },
+          "aggs": {
+            "avg_cpu_usage": {
+              "avg": {
+                "field": "cpu_usage"
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+

Assume that the region and host are low-cardinality fields. To use the enhanced aggregation, set the parameters as follows:

+

The clustering key must be a prefix subset of the sorting key.

+
+
// Configure an index
+"settings" : {
+    "index" : {
+        "search" : {
+            "turbo" : {
+                "enabled" : "true" // Enable optimization
+            }
+        },
+        "sort" : { // Specify a sorting key
+            "field" : [
+                "region",
+                "host",
+                "other"
+            ]
+        },
+        "cluster" : {
+            "field" : [ // Specify a clustering key
+                "region",
+                "host"
+            ]
+        }
+    }
+}
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659133.html b/docs/css/umn/en-us_topic_0000001528659133.html new file mode 100644 index 00000000..a9245d16 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659133.html @@ -0,0 +1,52 @@ + + +

Monitoring Metrics of Clusters

+

You can use Cloud Eye to monitor cluster metrics of CSS in real time and quickly handle exceptions. For details about Cloud Eye, see the Cloud Eye User Guide.

+

Table 1 lists the metrics supported by CSS.

+ +
+ + + + + + + + + + + + + + + + + + + +
Table 1 Supported metrics

Metric

+

Description

+

Formula

+

Value Range

+

Monitoring Interval

+

Disk Usage

+

Calculates the disk usage of a CSS cluster.

+

Unit: %

+

Used disk space of a cluster/Total disk space of a cluster

+

0 to 100%

+

1 minute

+

Cluster Health Status

+

Measures the health status of a CSS cluster.

+

-

+

Available values are 0, 1, and 2.

+
  • 0: The cluster is 100% available.
  • 1: The data is complete while some replicas are missing. Exceptions may occur because the high availability is compromised. This is a warning that should prompt investigation.
  • 2: Data is missing and the cluster fails to work.
+

1 minute

+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659137.html b/docs/css/umn/en-us_topic_0000001528659137.html new file mode 100644 index 00000000..a0cdc075 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659137.html @@ -0,0 +1,58 @@ + + +

Managing Tags

+

Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.

+

You can add tags to a cluster when creating the cluster or add them on the details page of the created cluster.

+

If your organization has enabled tag policies for CSS, you must comply with the tag policy rules when creating clusters, otherwise, clusters may fail to be created. Contact the organization administrator to learn more about tag policies.

+

Managing Tags of a New Cluster

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner. The Create Cluster page is displayed.
  3. On the Create Cluster page, set Advanced Settings to Custom. Add tags for a cluster.

    You can select a predefined tag and set Tag value for the tag. You can click View Predefined Tag to switch to the TMS management console and view existing tags.

    +

    You can also create new tags by specifying Tag key and Tag value.

    +

    You can add a maximum of 10 tags for a CSS cluster. If the entered tag is incorrect, you can click Delete on the right of the tag to delete the tag.

    + +
    + + + + + + + + + + +
    Table 1 Naming rules for a tag key and value

    Parameter

    +

    Description

    +

    Tag key

    +

    Must be unique in a cluster.

    +

    The value cannot contain more than 64 characters.

    +

    It can contain only numbers, letters, and the following special characters: _.:=+-@ The value cannot start or end with a space.

    +

    Cannot be left blank.

    +

    Tag value

    +

    The value cannot contain more than 64 characters.

    +

    It can contain only numbers, letters, and the following special characters: _.:=+-@ The value cannot start or end with a space.

    +

    Cannot be left blank.

    +
    +
    +
+
+

Managing Tags of Existing Clusters

You can modify, delete, or add tags for a cluster.

+
  1. Log in to the CSS management console.
  2. On the Clusters page, click the name of a cluster for which you want to manage tags.

    The Basic Information page is displayed.

    +
  3. In the navigation pane on the left, choose the Tags tab. You can add, modify, or delete tags.
    • View

      On the Tags page, you can view details about tags of the cluster, including the number of tags and the key and value of each tag.

      +
    • Add

      Click Add in the upper left corner. In the displayed Add Tag dialog box, enter the key and value of the tag to be added, and click OK.

      +
    • Modify

      You can only change the value of an existing tag.

      +

      In the Operation column of a tag, click Edit. In the displayed Edit Tag page, enter a new tag value and click OK.

      +
    • Delete

      In the Operation column of a tag, click Delete. After confirmation, click Yes on the displayed Delete Tag page.

      +
    +
+
+

Searching for Clusters by Tag

  1. Log in to the CSS management console.
  2. On the Clusters page, click Search by Tag in the upper right corner of the cluster list.
  3. Select or enter the tag key and tag value you want to search for, and click Add to add the tag to the search text box.

    You can select a tag key or tag value from their drop-down lists. The system returns a list of clusters that exactly match the tag key or tag value. If you enter multiple tags, the cluster that meets requirements of all the tags will be filtered.

    +

    You can add a maximum of 10 tags at one time.

    +
  4. Click Search.

    The system searches for the target cluster by tag key and value.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659141.html b/docs/css/umn/en-us_topic_0000001528659141.html new file mode 100644 index 00000000..f4fe2478 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659141.html @@ -0,0 +1,71 @@ + + +

Low-cardinality and High-cardinality Field Mixing

+

In the scenario where low-cardinality and high-cardinality fields are mixed, assume that the following query statement exists:

+
POST testindex/_search
+{
+  "size": 0,
+  "aggs": {
+    "groupby_region": {
+      "terms": {
+        "field": "region"
+      },
+      "aggs": {
+        "groupby_host": {
+          "terms": {
+            "field": "host"
+          },
+          "aggs": {
+            "groupby_timestamp": {
+              "date_histogram": {
+                "field": "timestamp",
+                "interval": "day"
+              },
+              "aggs": {
+                "avg_score": {
+                  "avg": {
+                    "field": "score"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+

Group the low-cardinality fields and create a histogram using the high-cardinality fields. To use the enhanced aggregation for the preceding query, set the parameters as follows:

+
  • A clustering key is the prefix subset of a sorting key.
  • High-cardinality fields must be in the sorting key, and high-cardinality fields must follow the last low-cardinality field.
+
+
// Configure an index
+"settings" : {
+    "index" : {
+        "search" : {
+            "turbo" : {
+                "enabled" : "true" // Enable optimization
+            }
+        },
+        "sort" : { // Specify a sorting key
+            "field" : [
+                "region",
+                "host",
+                "timestamp",
+                "other"
+            ]
+        },
+        "cluster" : {
+            "field" : [ // Specify a clustering key
+                "region",
+                "host"
+            ]
+        }
+    }
+}
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659149.html b/docs/css/umn/en-us_topic_0000001528659149.html new file mode 100644 index 00000000..dad09e1d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659149.html @@ -0,0 +1,159 @@ + + +

Temporary Access Statistics Logs

+

Context

You can check access logs in either of the following ways:

+
  • Enable and check access logs via an independent API. Configure the API parameters to record the access log time and size. The access log content is returned through a REST API.
  • Print access logs. Your access logs are printed as files in backend logs. This section describes how to temporarily access logs in this mode.
+

When the access log function is enabled or disabled, the parameters involved in the command are as follows:

+ +
+ + + + + + + + + + + + + +
Table 1 Access log parameters

Parameter

+

Type

+

Description

+

duration_limit

+

String

+

Duration recorded in an access log.

+

Value range: 10 to 120

+

Unit: s

+

Default value: 30

+

capacity_limit

+

String

+

Size of an access log. After access logging is enabled, the size of recorded requests is checked. If the size exceeds the value of this parameter, the access logging stops.

+

Value range: 1 to 5

+

Unit: MB

+

Default value: 1

+
+
+

Access logging stops if either duration_limit or capacity_limit reaches the threshold.

+
+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. In the navigation pane on the left, choose Dev Tools and run commands to enable or disable access logs.
    • Enable access logs for all nodes in a cluster.
      PUT /_access_log?duration_limit=30s&capacity_limit=1mb
      +
    • Enable access logs for a node in a cluster.
      PUT /_access_log/{nodeId}?duration_limit=30s&capacity_limit=1mb
      +

      {nodeId} indicates the ID of the node where you want to enable access logs.

      +
    +
  4. View access logs.
    • Check the access logs of all nodes in a cluster.
      GET /_access_log
      +
    • Check the access logs of a node in a cluster.
      GET /_access_log/{nodeId}
      +

      {nodeId} indicates the ID of the node where you want to enable access logs.

      +
      Example response:
      {
      +  "_nodes" : {
      +    "total" : 1,
      +    "successful" : 1,
      +    "failed" : 0
      +  },
      +  "cluster_name" : "css-flowcontroller",
      +  "nodes" : {
      +    "8x-ZHu-wTemBQwpcGivFKg" : {
      +      "name" : "css-flowcontroller-ess-esn-1-1",
      +      "host" : "10.0.0.98",
      +      "count" : 2,
      +      "access" : [
      +        {
      +          "time" : "2021-02-23 02:09:50",
      +          "remote_address" : "/10.0.0.98:28191",
      +          "url" : "/_access/security/log?pretty",
      +          "method" : "GET",
      +          "content" : ""
      +        },
      +        {
      +          "time" : "2021-02-23 02:09:52",
      +          "remote_address" : "/10.0.0.98:28193",
      +          "url" : "/_access/security/log?pretty",
      +          "method" : "GET",
      +          "content" : ""
      +        }
      +      ]
      +    }
      +  }
      +}
      + +
      + + + + + + + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Description

      +

      name

      +

      Node name

      +

      host

      +

      Node IP address

      +

      count

      +

      Number of node access requests in a statistical period

      +

      access

      +

      Details about node access requests in a statistical period. For details, see Table 3.

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 access

      Parameter

      +

      Description

      +

      time

      +

      Request time

      +

      remote_address

      +

      Source IP address and port number of the request

      +

      url

      +

      Original URL of the request

      +

      method

      +

      Method corresponding to the request path

      +

      content

      +

      Request content

      +
      +
      +
    +
  5. Run the following commands to delete access logs.
    • Delete access logs of all nodes in a cluster.
      DELETE /_access_log
      +
    • Delete access logs of a specified node in a cluster.
      DELETE /_access_log/{nodeId}
      +

      {nodeId} indicates the ID of the node where you want to enable access logs.

      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659153.html b/docs/css/umn/en-us_topic_0000001528659153.html new file mode 100644 index 00000000..d825f355 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659153.html @@ -0,0 +1,217 @@ + + +

Upgrading the Cluster Version

+

Same-version upgrade, cross-engine upgrade, and cross-version upgrade are supported. Same-version upgrade is to upgrade the kernel patch of a cluster to fix problems or optimize performance. Cross-engine upgrade is to upgrade an Elasticsearch cluster to an OpenSearch cluster. Cross-version upgrade is to upgrade the cluster version to enhance functions or incorporate versions.

+

Description

Principle

+

Nodes in the cluster are upgraded one by one so that services are not interrupted. The upgrade process is as follows: bring a node offline, migrate its data to another node, create a new node of the target version, and mount the NIC ports of the offline node to the new node to retain the node IP address. After a new node is added to the cluster, other nodes will be updated in the same way in sequence. If there is a large amount of data in a cluster, the upgrade duration depends on the data migration duration.

+

Process

+
  1. Pre-Upgrade Check
  2. Creating a Snapshot
  3. Creating an Upgrade Task
+

Version Restrictions

+
The supported target version varies according to the current cluster version. For details, see Table 1. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Version restrictions

Current Version

+

Target Version

+

Elasticsearch: 6.2.3

+

Elasticsearch: 6.5.4 or 6.8.23

+

Elasticsearch: 6.5.4

+

Elasticsearch: 6.8.23

+

Elasticsearch: 6.8.23

+

Elasticsearch: 7.6.2 or 7.10.2

+

Elasticsearch: 7.1.1

+

Elasticsearch: 7.6.2 or 7.10.2

+

Elasticsearch: 7.6.2

+

Elasticsearch: 7.10.2

+

Elasticsearch: 7.9.3

+

Elasticsearch: 7.10.2

+

Elasticsearch: 7.10.2

+

OpenSearch: 1.3.6

+

Note:

+
  • Elasticsearch 7.6.2 and 7.10.2 are mainstream cluster versions. You are advised to upgrade your clusters to these two versions. The supported target versions are displayed in the drop-down list of Target Image.
  • Elasticsearch clusters of version 5.X cannot be upgraded across versions. Elasticsearch clusters of versions 6.2.3 and 6.5.4 can be upgraded to 6.8.23 and then to 7.X.X.
  • Currently, only Elasticsearch clusters of version 7.10.2 can be upgraded to OpenSearch clusters of version 1.3.6 across engines.
+
+
+
+
+

Constraints

  • A maximum of 20 clusters can be upgraded at the same time. You are advised to perform the upgrade during off-peak hours.
  • Clusters that have ongoing tasks cannot be upgraded.
  • Once started, an upgrade task cannot be stopped until it succeeds or fails.
  • During the upgrade, nodes are replaced one by one. Requests sent to a node that is being replaced may fail. In this case, you are advised to access the cluster through the VPC Endpoint service or a dedicated load balancer.
  • During the upgrade, the Kibana and Cerebro components will be rebuilt and cannot be accessed. Different Kibana versions are incompatible with each other. During the upgrade, you may fail to access Kibana due to version incompatibility. A cluster can be accessed after it is successfully upgraded.
+
+

Pre-Upgrade Check

To ensure a successful upgrade, you must check the items listed in the following table before performing an upgrade.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Pre-upgrade checklist

Check Item

+

Check Method

+

Description

+

Normal Status

+

Cluster status

+

System check

+

After an upgrade task is started, the system automatically checks the cluster status. Clusters whose status is green or yellow can provide services properly and have no unallocated primary shards.

+

The cluster status is Available.

+

Node quantity

+

System check

+

After an upgrade task is started, the system automatically checks the number of nodes. The total number of data nodes and cold data nodes in a cluster must be greater than or equal to 3 so that services will not be interrupted.

+

The total number of data nodes and cold data nodes in a cluster must be greater than or equal to 3.

+

Disk capacity

+

System check

+

After an upgrade task is started, the system automatically checks the disk capacity. During the upgrade, nodes are brought offline one by one and then new nodes are created. Ensure that the disk capacity of all the remaining nodes can process all data of the node that has been brought offline.

+

After a node is brought offline, the remaining nodes can contain all data of the cluster.

+

Data backup

+

System check

+

Check whether the maximum number of primary and standby shards of indexes in a cluster can be allocated to the remaining data nodes and cold data nodes. Prevent backup allocation failures after a node is brought offline during the upgrade.

+

Maximum number of primary and standby index shards plus 1 must be less than or equal to the total number of data nodes and cold data nodes before the upgrade.

+

Data backup

+

System check

+

Before the upgrade, back up data to prevent data loss caused by upgrade faults. When submitting an upgrade task, you can determine whether to enable the system to check for the backup of all indexes.

+

Check whether data has been backed up.

+

Resources

+

System check

+

After an upgrade task is started, the system automatically checks resources. Resources will be created during the upgrade. Ensure that resources are available.

+

Resources are available and sufficient.

+

Custom plugins

+

System and manual check

+

Perform this check only when custom plugins are installed in the source cluster. If a cluster has a custom plugin, upload all plugin packages of the target version on the plugin management page before the upgrade. During the upgrade, install the custom plugin in the new nodes. Otherwise, the custom plugins will be lost after the cluster is successfully upgraded. After an upgrade task is started, the system automatically checks whether the custom plugin package has been uploaded, but you need to check whether the uploaded plugin package is correct.

+
NOTE:

If the uploaded plugin package is incorrect or incompatible, the plugin package cannot be automatically installed during the upgrade. As a result, the upgrade task fails. To restore a cluster, you can terminate the upgrade task and restore the node that fails to be upgraded by Replacing a Specified Node.

+

After the upgrade is complete, the status of the custom plugin is reset to Uploaded.

+
+

The plugin package of the cluster to be upgraded has been uploaded to the plugin list.

+

Custom configurations

+

System check

+

During the upgrade, the system automatically synchronizes the content of the cluster configuration file elasticsearch.yml.

+

Clusters' custom configurations are not lost after the upgrade.

+

Non-standard operations

+

Manual check

+

Check whether non-standard operations are contained in the upgrade. Non-standard operations refer to manual operations that are not recorded. These operations cannot be automatically transferred during the upgrade, for example, modification of the Kibana.yml configuration file, system configuration, and route return.

+

Some non-standard operations are compatible. For example, the modification of a security plugin can be retained through metadata, and the modification of system configuration can be retained using images. Some non-standard operations, such as the modification of the kibana.yml file, cannot be retained, and you must back up the file in advance.

+

Compatibility check

+

System and manual check

+

After a cross-version upgrade task is started, the system automatically checks whether the source and target versions have incompatible configurations. If a custom plugin is installed for a cluster, the version compatibility of the custom plugin needs to be manually checked.

+

Configurations before and after the cross-version upgrade are compatible.

+
+
+
+

Creating an Upgrade Task

  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the cluster list page that is displayed, click the name of a cluster.
  3. On the displayed basic cluster information page, click Version Upgrade.
  4. On the displayed page, set upgrade parameters. +
    + + + + + + + + + + + + + +
    Table 3 Upgrade parameters

    Parameter

    +

    Description

    +

    Upgrade Type

    +
    • Same-version upgrade: Upgrade the kernel patch of the cluster. The cluster version number remains unchanged.
    • Cross-version upgrade: Upgrade the cluster version.
    • Cross-engine upgrade: Upgrade an Elasticsearch cluster to an OpenSearch cluster. Currently, only the Elasticsearch cluster of version 7.10.2 can be upgraded to the OpenSearch cluster of version 1.3.6.
    +

    Target Image

    +

    Image of the target version. When you select an image, the image name and target version details are displayed.

    +

    The supported target versions are displayed in the drop-down list of Target Image. If the target image cannot be selected, the possible causes are as follows:

    +
    • The current cluster is of the latest version.
    • The current cluster is created before 2023 and has vector indexes.
    • The new version images have not been added at the current region.
    +

    Agency

    +

    Select an IAM agency to grant the upgrade permission to the current account.

    +

    If no agency is available, click Create Agency to go to the IAM console and create an agency.

    +
    NOTE:

    The selected agency must be assigned the Tenant Administrator or VPC Administrator policy.

    +
    +
    +
    +
  5. After setting the parameters, click Submit. Determine whether to enable Check full index snapshot and Perform cluster load detection and click OK.

    If a cluster is overloaded, the upgrade task may suspend or fail. Enabling Cluster load detection can effectively avoid failures. If any of the following situations occurs during the detection, wait or reduce the load. If you urgently need to upgrade the version and you have understood the upgrade failure risks, you can disable the Cluster load detection function. The cluster load detection items are as follows:

    +
    • nodes.thread_pool.search.queue < 1000: check whether the maximum number of search queues is less than 1000.
    • nodes.thread_pool.write.queue < 200: Check whether the maximum number of write queues is less than 200.
    • nodes.process.cpu.percent < 90: Check whether the maximum CPU usage is less than 90%.
    • nodes.os.cpu.load_average/Number of CPU cores < 80%: Check whether the ratio of the maximum load to the number of CPU cores is less than 80%.
    +
  6. View the upgrade task in the task list. If the task status is Running, you can expand the task list and click View Progress to view the upgrade progress.

    If the task status is Failed, you can retry or terminate the task.

    +
    • Retry the task: Click Retry in the Operation column.
    • Terminate the task: Click Terminate in the Operation column.
      • Same version upgrade: If the upgrade task status is Failed, you can terminate the upgrade task.
      • Cross version upgrade: You can stop an upgrade task only when the task status is Failed and no node has been upgraded.
      +
      +

      After an upgrade task is terminated, the Task Status of the cluster is rolled back to the status before the upgrade, and other tasks in the cluster are not affected.

      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001528659157.html b/docs/css/umn/en-us_topic_0000001528659157.html new file mode 100644 index 00000000..bd746f1a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001528659157.html @@ -0,0 +1,64 @@ + + +

Synchronizing Specified Indexes

+

Synchronize a single index.

+

The request URL and request body parameters are as follows:

+
PUT start_remote_sync
+ +
+ + + + + + + + + + + + + + + + +
Table 1 Request body parameters

Parameter

+

Description

+

remote_cluster

+

Name of the primary cluster. The default name is leader1. You can change the name by configuring the primary cluster information.

+

remote_index

+

Name of the index to be synchronized in the primary cluster

+

local_index

+

Name of the index being synchronized to the secondary cluster

+

settings

+

Index settings of the index being synchronized

+
+
+

After the synchronization function is enabled, indexes in the secondary cluster become read-only and are periodically synchronized with indexes in the primary cluster.

+

The following are two examples:

+
  1. Synchronize a single index from the primary cluster to the secondary cluster.
    PUT start_remote_sync
    +{
    +  "remote_cluster": "leader1",
    +  "remote_index": "data1_leader",
    +  "local_index": "data1_follower"
    +}
    +
  2. Synchronize a single index from the primary cluster to the secondary cluster and modify the index configurations.
    PUT start_remote_sync
    +{
    +  "remote_cluster": "leader1",
    +  "remote_index": "data1_leader",
    +  "local_index": "data1_follower",
    +  "settings": {
    +    "number_of_replicas": 4
    +  }
    +}
    +

    The following index configurations cannot be modified:

    +
    • number_of_shards
    • version.created
    • uuid
    • creation_date
    • soft_deletes.enabled
    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001533829376.html b/docs/css/umn/en-us_topic_0000001533829376.html new file mode 100644 index 00000000..f7386c1f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001533829376.html @@ -0,0 +1,19 @@ + + +

Context

+

Feature Description

CSS provides enhanced data import function. It optimizes bulk route, and speeds up processing through indexes and word segmentation, improving import performance and reduces bulk rejection. This function applies to clusters that contain a large number of index shards and text indexes, and have high import throughput.

+
+

Constraints

Currently, only Elasticsearch clusters of version 7.10.2 and OpenSearch clusters of version 1.3.6 support the import performance enhancement.

+
+

Prerequisites

An Elasticsearch cluster of version 7.10.2 or OpenSearch cluster has been created on the CSS console.

+
+

Precautions

  • After the local shard preferential bulk routing optimization and bulk routing optimization are enabled, data writing is not routed based on IDs, and routing-related functions are restricted. For example, ID-based GET requests may fail. The optimization of local shard preferential bulk routing depends on the random distribution of client bulk requests and the balanced distribution of primary shards.
  • If index.native_speed_up (the text index acceleration function) is enabled, index_sorting is not supported.
  • Prerequisites for enabling index.native_analyzer:
    1. The index.native_speed_up function has been enabled.
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001533988876.html b/docs/css/umn/en-us_topic_0000001533988876.html new file mode 100644 index 00000000..2ec9d3a1 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001533988876.html @@ -0,0 +1,19 @@ + + +

Enhanced Import Performance

+
+
+ + + +
+ diff --git a/docs/css/umn/en-us_topic_0000001534148568.html b/docs/css/umn/en-us_topic_0000001534148568.html new file mode 100644 index 00000000..fe99ff9a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001534148568.html @@ -0,0 +1,45 @@ + + +

Bulk Route Optimization

+

According to the default routing rule of Elasticsearch, data in a bulk request is routed to different shards. When massive data is written and a large number of index shards exist, excessive internal requests forwarding may trigger bulk rejection. In a large-scale cluster, the long tail effect causes a high bulk request latency.

+

You can specify the index.bulk_routing configuration item to enable bulk route optimization. This function reduces the requests that need to be internally forwarded. For clusters containing a large number of shards, this function can improve write performance and reduce bulk rejection.

+

Procedure

  1. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. In the navigation tree on the left, choose Dev Tools.
  3. On the Dev Tools page, run the following command:
    PUT my_index 
    +{
    +  "settings": { 
    +    "index.bulk_routing": "local_pack"
    +  } 
    +}
    + +
    + + + + + + + + + + + + + +
    Table 1 Values of index.bulk_routing

    Value

    +

    Description

    +

    default

    +

    The default routing mechanism of Elasticsearch is used. Records in a bulk request are split and routed independently.

    +

    pack

    +

    Data of a single bulk request is randomly routed to the same shard.

    +

    local_pack

    +

    The data of a single bulk request is routed to the local shard of the data node that receives the bulk request. If the node does not contain the corresponding index shard, the data is randomly routed to another node that contains the index shard.

    +
    +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001534308508.html b/docs/css/umn/en-us_topic_0000001534308508.html new file mode 100644 index 00000000..fe77d5f8 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001534308508.html @@ -0,0 +1,21 @@ + + +

Bulk Aggregation Optimization

+

You can specify the index.aggr_perf_batch_size configuration item to enable or disable batch import optimization. After the batch import function is enabled, documents in bulk requests are written in batches. This function reduces the overhead of memory application, application lock, and other calls, improving data import performance.

+

The value range of index.aggr_perf_batch_size is [1, Integer.MAX_VALUE]. The default value is 1, indicating that the batch import function is disabled. If the value is greater than 1, the batch import function is enabled and the value of MIN(bulk_doc_size, aggr_perf_batch_size) indicates the batch size.

+
+

Procedure

  1. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. In the navigation tree on the left, choose Dev Tools.
  3. On the Dev Tools page, run the following command:
    PUT my_index 
    +{
    +  "settings": { 
    +    "index.aggr_perf_batch_size": "128"
    +  } 
    +}
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001555591537.html b/docs/css/umn/en-us_topic_0000001555591537.html new file mode 100644 index 00000000..efa91523 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001555591537.html @@ -0,0 +1,25 @@ + + + +

Accessing an Elasticsearch Cluster

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001562137917.html b/docs/css/umn/en-us_topic_0000001562137917.html new file mode 100644 index 00000000..60d5425f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001562137917.html @@ -0,0 +1,75 @@ + + +

How to access Kibana from outside cloud using ELB?

+

Overview

Currently to access Kibana dashboard of CSS Service, a user has to login to OTC consoleand navigate to Kibana login page.

+

+

To make the access convenient a user can utilize the provided python script which willconfigure the Dedicated Loadbalancer of OTC and a user would be able to access Kibanadashboard with a public IP.

+
+

ELB Configuration Script

Script to Configure ELB to be able to access CSS Kibana Dashboard in https mode. ThisScript will create a Dedicated Loadbalancer with a HTTPS Listener which will be forwardingthe traffic to CSS nodes at 5601 port in order to access Kibana Dashboard.

+

Download Script

+
+

Installing Dependency

The script depends on otcextensions library.

+

If you already have Python with pip installed, you can simply run:

+
pip install otcextensions
+
  • To know more details about using otcextensions library you can check otcextensions docs.

    A file called clouds.yaml holds all necessary configuration parameters. The file can beplaced either in the local directory, below the user home directory in .config/openstack orin the system-wide directory /etc/openstack. You may use a second file secure.yaml in thesame directories to extra protect clear-text password credentials. For more details see thesection configuration in the official documentation.

    +

    Minimal sample clouds.yaml file:

    +
    clouds:
    +      otc:
    +        profile: otc
    +        auth:
    +          username: '<USER_NAME>'
    +          password: '<PASSWORD>'
    +          project_name: '<eu-de_project>'
    +          # or project_id: '<123456_PROJECT_ID>'
    +          user_domain_name: 'OTC00000000001000000xxx'
    +          # or user_domain_id: '<123456_DOMAIN_ID>'
    +          auth_url: 'https://iam.eu-de.otc.t-systems.com:443/v3'
    +

    With this configuration you can start using the CLI with openstack --os-cloud otc *command* or by export OS_CLOUD=otc; openstack *command*.

    +
  • Environment variables: Authentication using username/password is often used:
    export OS_AUTH_URL=<url-to-openstack-identity>
    +export OS_PROJECT_NAME=<project-name>
    +export OS_USERNAME=<username>
    +export OS_PASSWORD=<password>
    +export OS_USER_DOMAIN_NAME=<user-domain-name>
    +export OS_IDENTITY_API_VERSION=3
    +
+

In addition to that a regular clouds.yaml configuration file can be used.

+

More information is available at:

+

https://docs.openstack.org/openstacksdk/latest/user/config/configuration.html

+
+

Pre-Requisites

The Script requires ID of a CSS Cluster and Certificate ID for creating a HTTPS listener.

+
  • You can get a CSS Cluster ID by visiting the OTC console -> CSS Dashboard ->Clusters page, and click on your CSS Cluster to get its details.
  • To learn more about Creating and Getting a TLS Certificate, check ELB User Guide
+

Generating a TSL Certificate with openssl command.

+
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout private.key -out certificate.crt
+

When adding the certificate and private key, Certificate Type must be "Server Certificate".

+
+
+

Running The Script

Once you have certificate_id and cluster_id, you are ready to run the script.

+
+

List ELB Flavors

python3 script.py elb-flavors
+

This will print the L7 Flavors supported by Dedicated Loadbalancer. To print all types of flavors supported you may add --all argument to the command. But we need only L7 flavor type, that's why --all argument is set as optional.

+
+

Configure ELB

 python3 script.py elb-configure --cluster-id <cluster_id> --certificate-id <certificate_id>
+

Argument --certificate-id is optional, if it's not provided then Loadbalancer will be configured with HTTP listener.

+

Configure ELB with specific Flavor

+
  • By default ELB will be configured with smallest L7 flavor type. But if you want to have some specific flavor of your choice, follow below commands.
  • Only L7 flavor type must be used since we are creating HTTPS listener.
+
 # Prints list of Loadbalancer flavor Types
+   python3 script.py elb-flavors
+
+ # Run the script
+   python3 script.py elb-configure --cluster-id <cluster_id> --certificate-id <certificate_id> --flavor-id <flavor_id>
+
+

Delete ELB

 python3 script.py elb-delete <loadbalancer_name_or_id>
+

Delete ELB and Release Public EIP

+
python3 script.py elb-delete <loadbalancer_id> --release-public-ip
+

Please use the elb-delete command with caution.

+
+
+

Logging

When you run the script a log file is created with name debug.log where you can find details of all the API requests.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001564706853.html b/docs/css/umn/en-us_topic_0000001564706853.html new file mode 100644 index 00000000..f26c8b58 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001564706853.html @@ -0,0 +1,18 @@ + + +

(Optional) Authorizing CSS to Use SMN

+

Scenario Description

To use the OpenDistro alarm plugin (opendistro_alerting), authorize your Elasticsearch cluster to use SMN to send notifications. For details about how to use the OpenDistro alarm plugin, see Configuring SMN Alarms.

+

Service authorization is to delegate CSS to use other cloud resources. For example, you can authorize CSS to use SMN to send notifications.

+
+

Constraints and Limitations

Only the SMN service can be authorized.

+
+

Procedure

  1. Log in to the CSS management console as an administrator with IAM permissions.
  2. In the navigation pane, choose Service Authorization.
  3. On the Service Authorization page, click Create Agency. In the dialog box displayed, confirm that the agency is successfully created.
    • If an agency has been created, "css_smn_agency exist, no need to created." is displayed in the upper right corner.
    • If you do not have the creation permission, a message indicating that the current user does not have the permission and you need to check the account permission on IAM is displayed in the upper right corner.
    +
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001564906577.html b/docs/css/umn/en-us_topic_0000001564906577.html new file mode 100644 index 00000000..0d4c8600 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001564906577.html @@ -0,0 +1,148 @@ + + +

Configuring SMN Alarms

+

Scenario Description

By default, the open-source OpenDistro alarm plugin (opendistro_alerting) is integrated into CSS to send notifications when data meets specific conditions. This plugin consists of three components: Dashboard, Monitors, and Destinations. CSS integrates the SMN service in the Destinations component and can send alarm messages only through the SMN service as the destination.

+

This section describes how to use the OpenDistro alarm plugin to configure SMN alarms for Elasticsearch clusters in Kibana.

+

For details about the official guide of the open-source alarm plug-in Opendistro Alerting, visit OpenDistro-Monitors.

+
+
+

Constraints and Limitations

The open-source OpenDistro alarm plugin is installed on Elasticsearch clusters of the versions 7.1.1, 7.6.2, and 7.10.2 by default.

+
+

Prerequisites

+
+

Procedure

  1. Log in to the CSS management console.
  2. On the Cluster Management > Elasticsearch page, select the target cluster and click Access Kibana in the Operation column.
  3. On the Kibana page, choose Open Distro for Elasticsearch > Alerting in the navigation pane on the left.
  4. Create an SMN destination to send alert messages.
    1. On the Alerting page, click the Destinations tab and click Add destination to configure destination information. +
      + + + + + + + + + + + + + +
      Table 1 Destinations parameter description

      Parameter

      +

      Description

      +

      Name

      +

      User-defined destination name

      +

      Type

      +

      Retain the default value SMN.

      +

      Topic

      +

      Select the SMN topic you have created for sending alarm messages.

      +
      NOTE:

      For the Elasticsearch cluster of version 7.1.1, you need to manually enter the topic name. Ensure that the topic name is the same as that in the SMN service.

      +
      +
      +
      +
      Figure 1 Add destination
      +
    2. Click Create to return to the destination list. If the created SMN destination is displayed in the list, the creation is complete.
      Figure 2 Destination list
      +
    +
  5. Create a monitoring task and configure the alarm triggering condition and monitoring frequency.
    1. Click the Monitors tab on the Alerting page and click Create monitors to configure monitoring information. +
      + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Monitor parameters

      Parameter

      +

      Description

      +

      Monitor name

      +

      User-defined monitor name

      +

      Monitor state

      +

      Monitoring status. You are advised to keep this function enabled.

      +

      Method of definition

      +

      Select a method to define monitoring. You are advised to use Define using extraction query.

      +
      • Define using visual graph: use visualized query statement
      • Define using extraction query: use specific query statement
      +

      Index

      +

      Index to be monitored

      +

      Time field

      +

      When Define using visual graph is selected, select a time field and define counting parameters such as count.

      +

      Frequency

      +

      Select the monitoring frequency and set the monitoring interval. The options include:

      +
      • By interval
      • Daily
      • Weekly
      • Monthly
      • Custom cron expression
      +
      +
      +
    2. Click Create. The Create trigger page is displayed.
    3. On the Create trigger page, set the alarm triggering conditions and actions to be triggered. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 Trigger parameters

      Parameter

      +

      Description

      +

      Trigger name

      +

      User-defined trigger name

      +

      Severity level

      +

      Sensitivity of a trigger, that is, the number of alarms that are triggered before an alarm message is sent. 1 indicates the highest sensitivity.

      +

      Trigger condition

      +

      Trigger condition. An alarm is triggered when the trigger condition is hit.

      +

      Action name

      +

      Name of a trigger action

      +

      Destination

      +

      Select the SMN destination created in section 4.

      +

      Message subject

      +

      Title of the alarm message. This parameter is required only when Elasticsearch clusters of version 7.10.2 is used.

      +

      Message

      +

      Body of an alarm message. By default, the subject and body are defined when the destination is an email.

      +

      Action throttling

      +

      Message sending frequency. It limits the number of notification messages can be received in a specified period.

      +

      For example, if this parameter is set to 10 minutes, SMN sends only one alarm notification in the next 10 minutes even if the trigger condition is hit for multiple times. After 10 minutes, SMN sends another alarm notification if the alarm condition is met.

      +
      +
      +
      Figure 3 Setting the destination of a trigger action
      +
    4. Click Send test message. If a subscriber receives an email, as shown in Figure 5, the trigger is configured successfully.
      Figure 4 Sending test messages
      +
      Figure 5 Email notification
      +
    5. Click Create to return to the Monitor details page.
    +
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001583146906.html b/docs/css/umn/en-us_topic_0000001583146906.html new file mode 100644 index 00000000..404c4cce --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001583146906.html @@ -0,0 +1,14 @@ + + +

Deleting a Snapshot

+

If you no longer need a snapshot, delete it to release storage resources. If the automatic snapshot creation function is enabled, snapshots that are automatically created cannot be deleted manually, and the system automatically deletes these snapshots on the half hour after the time specified by Retention Period (days). If you disable the automatic snapshot creation function while retaining the automated snapshots, then you can manually delete them later. If you do not manually delete the automatically created snapshots and enable the automatic snapshot creation function again, then all snapshots with Snapshot Type set to Automated in the snapshot list of the cluster can only be automatically deleted by the system.

+

After a snapshot is deleted, its data cannot be restored. Exercise caution when deleting a snapshot.

+
+
  1. In the snapshot list, locate the snapshot that you want to delete.
  2. Click Delete in the Operation column. In the dialog box that is displayed, confirm the snapshot information and click OK.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001583300810.html b/docs/css/umn/en-us_topic_0000001583300810.html new file mode 100644 index 00000000..d81acf35 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001583300810.html @@ -0,0 +1,29 @@ + + +

Restoring Data

+

You can use existing snapshots to restore the backup index data to a specified cluster.

+

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

+
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
+
+

Precautions

  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • Cluster data cannot be queried during snapshot restoration.
  • If you restore a CSS cluster snapshot to another cluster, indexes with the same name in the destination cluster will be overwritten. If the snapshot and the destination cluster use different shards, the indexes with the same name will not be overwritten.
  • The version of the destination cluster used for restoration must be the same as or higher than that of the source cluster.
+
+

Restoring Data

You can use snapshots whose Snapshot Status is Available to restore cluster data. The stored snapshot data can be restored to other clusters.

+

Restoring data will overwrite current data in clusters. Therefore, exercise caution when restoring data.

+
  1. In the Snapshots area, locate the row that contains the snapshot you want to restore and click Restore in the Operation column.
  2. On the Restore page, set restoration parameters.

    Index: Enter the name of the index you want to restore. If you do not specify any index name, data of all indexes will be restored. The value can contain 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?) are not allowed. You can use the asterisk (*) to match multiple indexes. For example, index* indicates that all indexes with the prefix index in snapshots are restored.

    +

    Rename Pattern: Enter a regular expression. Indexes that match the regular expression are restored. The default value index_(.+) indicates restoring data of all indexes. The value contains 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed.

    +

    Rename Replacement: Enter the index renaming rule. The default value restored_index_$1 indicates that restored_ is added in front of the names of all restored indexes. The value contains 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed.

    +

    The Rename Pattern and Rename Replacement take effect only when they are configured at the same time.

    +
    +

    Cluster: Select the cluster that you want to restore. You can select the current cluster or others. However, you can only restore the snapshot to clusters whose status is Available. If the status of the current cluster is Unavailable, you cannot restore the snapshot to the current cluster. When you restore data to another cluster, the version of the target cluster must be later than or equal to that of the current cluster. If the target cluster you selected has an index with the same name as the original cluster, data in the index will be overwritten after the restoration. Exercise caution when performing this operation.

    +

    Overwrite Index Shards of the Buckets with the Same Name in the Target Cluster: By default, the shards are not overwritten. Data is restored using snapshots by overwriting the snapshot files. After the index with the same name in the target cluster is overwritten, the index data in the target cluster may be lost. Exercise caution when performing this operation.

    +
    Figure 1 Restoring a snapshot
    +
  3. Click OK. If restoration succeeds, Task Status of the snapshot in the snapshot list will change to Restoration succeeded, and the index data is generated again according to the snapshot information.
    Figure 2 Successful restoration
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001583460750.html b/docs/css/umn/en-us_topic_0000001583460750.html new file mode 100644 index 00000000..bda17c91 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001583460750.html @@ -0,0 +1,67 @@ + + +

Managing Automatic Snapshot Creation

+

Snapshots are automatically created at a specified time according to the rules you create. You can enable or disable the automatic snapshot creation function and set the automatic snapshot creation policy.

+

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

+
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
+
+

Precautions

  • When creating a backup for the first time, you are advised to back up data of all indexes.
  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • Before creating a snapshot, you need to perform basic configurations, including configuring the OBS bucket for storing snapshots and IAM agency used for security authentication.
  • If there are available snapshots in the snapshot list when you configure the OBS bucket for storing cluster snapshots for the first time, you cannot change the bucket for snapshots that are subsequently created automatically or manually. Exercise caution when you configure the OBS bucket.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • The first snapshot of a cluster is a full snapshot, and subsequent snapshots are incremental snapshots. CSS snapshot files depend on each other.
+
+

Managing Automatic Snapshot Creation

  1. In the CSS navigation pane on the left, click Clusters.
  2. On the Clusters page that is displayed, click the name of the target cluster. In the navigation pane on the left, choose Cluster Snapshots.
  3. On the displayed Cluster Snapshots page, click the icon to the right of Cluster Snapshot to enable the cluster snapshot function.
  4. Enable the cluster snapshot function. OBS buckets and IAM agencies are automatically created to store snapshots. The automatically created OBS bucket and IAM agency are displayed on the page. You can also click on the right of Basic Configuration to edit the configuration. To ensure the security of snapshot data, you can select a key to encrypt the snapshot. +
    + + + + + + + + + + + + + + + + +
    Table 1 Cluster snapshot parameter

    Parameter

    +

    Description

    +

    OBS bucket

    +

    Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

    +

    The created or existing OBS bucket must meet the following requirements:

    +
    • Storage Class is Standard or Warm.
    • Region must be the same as that of the created cluster.
    +

    Backup Path

    +

    Storage path of the snapshot in the OBS bucket.

    +
    The backup path configuration rules are as follows:
    • The backup path cannot contain the following characters: \:*?"<>|
    • The backup path cannot start with a slash (/).
    • The backup path cannot start or end with a period (.).
    • The backup path cannot contain more than 1,023 characters.
    +
    +

    IAM Agency

    +

    IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

    +

    The created or existing IAM agency must meet the following requirements:

    +
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
    +

    Snapshot Encryption

    +

    Whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

    +

    After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    +
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
    • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
    • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
    +
    +
    +
    Figure 1 Edit Basic configuration
    +
  5. Enable the automatic snapshot creation function. The Configure Automatic Snapshot Creation dialog box is displayed. If the automatic snapshot creation function is enabled, you can click on the right of Automatic Snapshot Creation to modify the snapshot policy.
    • Snapshot Name Prefix: Enter a maximum of 32 characters starting with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. A snapshot name consists of a snapshot name prefix and a timestamp, for example, snapshot-2018022405925.
    • Time Zone: indicates the time zone for the backup time. Specify backup start time based on the time zone.
    • Backup Start Time: indicates the time when the backup starts automatically every hour, every day, or a specified day of a week. You can specify this parameter at the top of the hour every day or on a specified day of a week, for example, 00:00 or 01:00. The value ranges from 00:00 to 23:00. Select the backup time from the drop-down list box.
    • Index: Enter an index name. You can select an index for backup. Use commas (,) to separate multiple indexes. Uppercase letters, spaces, and special characters "\<|>/? are not allowed. If you do not specify this parameter, data of all indexes in the cluster is backed up by default. You can use the asterisk (*) to back up data of certain indexes. For example, if you enter index*, then data of indexes with the name prefix of index will be backed up.

      Run the GET /_cat/indices command in Kibana to query the names of all indexes in the cluster.

      +
    +
    Figure 2 Automatic snapshot creation
    +
  6. Click OK to save the snapshot policy.

    Snapshots that are automatically created according to the snapshot policy are displayed in the snapshot list, along with manually created snapshots. You can distinguish them by the Snapshot Type setting. In the upper right corner of the snapshot list, enter the keyword of the snapshot name or snapshot ID to search for the desired snapshots.

    +
    Figure 3 Automatic snapshot creation
    +
  7. (Optional) Disable the automatic snapshot creation function.

    After you disable the automatic snapshot creation function, the system stops automatic creation of snapshots. If the system is creating a snapshot based on the automatic snapshot creation policy and the snapshot is not yet displayed in the snapshot list, you cannot disable the automatic snapshot creation function. In this case, if you click the button next to Automatic Snapshot Creation, a message is displayed, indicating that you cannot disable the function. You are advised to disable the function after the system completes automatic creation of the snapshot, and the created snapshot is displayed in the snapshot list.

    +

    When disabling the automatic snapshot creation function, you can choose whether to delete the snapshots that have been automatically created by selecting Delete automated snapshots in the displayed dialog box. By default, automatically created snapshots are not deleted.

    +
    • If you do not select Delete automated snapshots, automatically created snapshots are not deleted when you disable the automatic snapshot creation function. You can manually delete them later. For details, see Deleting a Snapshot. If you do not manually delete the automatically created snapshots and enable the automatic snapshot creation function again, then all snapshots with Snapshot Type set to Automated in the snapshot list of the cluster can only be automatically deleted by the system. The system automatically deletes snapshots based on the policy configured when the automatic snapshot creation function is enabled. For example, if the number of retained snapshots is set to 10 in this policy and more than 10 snapshots are created, the system automatically deletes the excess snapshots on the half hour.
    • If you select Delete automated snapshots, all snapshots with Snapshot Type set to Automated in the snapshot list will be deleted when you disable the automatic snapshot creation function.
    +

    If snapshots are disabled, existing snapshots will not be automatically deleted. If you need to delete the snapshots, manage the bucket that stores snapshots on the OBS console.

    +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001583669884.html b/docs/css/umn/en-us_topic_0000001583669884.html new file mode 100644 index 00000000..060582c0 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001583669884.html @@ -0,0 +1,154 @@ + + +

Viewing Basic Information About an Opensearch Cluster

+

On the basic information page of an Opensearch cluster, you can view the private network address, public network address, version, and node of the cluster.

+
  1. Log in to the CSS management console.
  2. Choose Clusters > Opensearch. The cluster list page is displayed.
  3. Click a cluster name to go to the Cluster Information page and view the basic information about the cluster. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Basic information

    Type

    +

    Parameter

    +

    Description

    +

    Cluster Information

    +

    Name

    +

    Cluster name. The name can be customized.

    +

    You can click on the right to change the cluster name.

    +

    ID

    +

    Unique ID of a cluster, which is automatically generated by the system.

    +

    Each cluster in the same region has a unique ID.

    +

    Version

    +

    Cluster version information.

    +

    Cluster Status

    +

    Current status of a cluster

    +

    Task Status

    +

    Current task status of a cluster. If no task is in progress, -- is displayed.

    +

    Created

    +

    Time when a cluster was created

    +

    Cluster Storage Capacity (GB)

    +

    Storage capacity of a cluster

    +

    Used Cluster Storage (GB)

    +

    Used storage capacity of a cluster

    +

    Configuration

    +

    Region

    +

    Region where a cluster is located

    +

    AZ

    +

    AZ where a cluster is located

    +

    VPC

    +

    VPC to which the cluster belongs

    +

    Subnet

    +

    Subnet to which the cluster belongs

    +

    Security Group

    +

    Security group to which a cluster belongs.

    +

    To change the security group of a cluster, click Change Security Group on the right.

    +
    NOTICE:

    Before changing the security group, ensure that the port 9200 required for service access has been enabled. Incorrect security group configuration may cause service access failures. Exercise caution when performing this operation.

    +
    +

    Security Mode

    +

    Security mode of a cluster.

    +
    • Enabled: The current cluster is a security cluster.
    • Disabled: The current cluster is a non-security cluster.
    +

    Reset Password

    +

    This parameter is displayed only for security clusters.

    +

    Click Reset to change the password of the administrator account admin of the security cluster.

    +
    NOTE:

    Requirements for administrator passwords:

    +
    • The password can contain 8 to 32 characters.
    • The password must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The following special characters are supported: ~!@#$%^&*()-_=+\|[{}];:,<.>/?
    • Do not use the administrator name, or the administrator name spelled backwards.
    • You are advised to change the password periodically.
    +
    +

    Enterprise Project

    +

    Enterprise project to which a cluster belongs.

    +

    You can click the project name to view the basic information about the enterprise project.

    +

    Public IP Address

    +

    Public network access information, which is displayed only for clusters in security mode.

    +
    • For a security cluster with public network access enabled, the configured public network address is displayed. You can use this address to access the security cluster from the public network.
    • For a security cluster with public network access disabled, -- is displayed.
    +

    When using a public IP address to access a cluster, you are advised to enable access control and configure an access whitelist to improve cluster security. For details about how to configure the public network access, see Accessing a Cluster from a Public Network.

    +

    HTTPS Access

    +

    Indicates whether to enable the HTTPS access protocol for a cluster.

    +
    • Disabled: The HTTP protocol is used for cluster access.
    • Enabled: The HTTPS protocol is used for cluster access. Only security clusters can enable this function. If HTTPS Access is enabled, you can click Download Certificate to obtain the CER security certificate for accessing the security cluster. Currently, the security certificate cannot be used in the public network environment.
    +

    Private IPv4 Address

    +

    Private IP address and port number of a cluster, which can be used to access the cluster. If the cluster has only one node, the IP address and port number of only one node are displayed, for example, 10.62.179.32:9200. If the cluster has multiple nodes, the IP addresses and port numbers of all nodes are displayed, for example, 10.62.179.32:9200,10.62.179.33:9200.

    +

    Node

    +

    Node Specifications

    +

    Specifications of nodes in a cluster

    +

    Node Storage Type

    +

    Storage capacity and storage type of nodes in a cluster

    +

    Nodes

    +

    Number of nodes in a cluster

    +
    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001583669892.html b/docs/css/umn/en-us_topic_0000001583669892.html new file mode 100644 index 00000000..a468c2c0 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001583669892.html @@ -0,0 +1,22 @@ + + +

Accessing a Cluster

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001583989096.html b/docs/css/umn/en-us_topic_0000001583989096.html new file mode 100644 index 00000000..49938cba --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001583989096.html @@ -0,0 +1,28 @@ + + +

Managing Clusters

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001584149004.html b/docs/css/umn/en-us_topic_0000001584149004.html new file mode 100644 index 00000000..4c0fdb06 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001584149004.html @@ -0,0 +1,340 @@ + + +

Creating a Cluster

+

This section describes how to create an OpenSearch cluster.

+

Public IP address access and Kibana public access can be used only after security mode is enabled.

+
+

Context

  • When creating a cluster, the number of nodes that can be added varies according to the node type. For details, see Table 1. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Number of nodes in different types

    Node Type

    +

    Number

    +

    ess

    +

    ess: 1-32

    +

    ess, ess-master

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess, ess-client

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess, ess-cold

    +

    ess: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess, ess-master, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-cold: 1-32

    +

    ess, ess-client, ess-cold

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    +
    +
    +
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the upper right corner of the page, click Create Cluster. The Create page is displayed.
  3. Specify Region and AZ. +
    + + + + + + + + + + +
    Table 2 Parameter description for Region and AZ

    Parameter

    +

    Description

    +

    Region

    +

    Select a region for the cluster from the drop-down list on the right. Currently, only eu-de and eu-nl are supported.

    +

    AZ

    +

    Select AZs associated with the cluster region.

    +

    You can select a maximum of three AZs. For details, see Deploying a Cross-AZ Cluster.

    +
    +
    +
  4. Set basic information about the cluster. Specifically, set Version and Name. +
    + + + + + + + + + + + + + +
    Table 3 Basic parameters

    Parameter

    +

    Description

    +

    Type

    +

    Select OpenSearch

    +

    Version

    +

    Currently, the versions 1.3.6 and 2.11.0 are supported.

    +

    Name

    +

    Cluster name, which contains 4 to 32 characters. Only letters, numbers, hyphens (-), and underscores (_) are allowed and the value must start with a letter.

    +
    NOTE:

    After a cluster is created, you can modify the cluster name as required. Click the name of a cluster to be modified. On the displayed Basic Information page, click next to the cluster name. After the modification is completed, click to save the modification. If you want to cancel the modification, click .

    +
    +
    +
    +
  5. Set host specifications of the cluster. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 Specification parameters

    Parameter

    +

    Description

    +

    Nodes

    +

    Number of nodes in a cluster. Select a number from 1 to 32. You are advised to configure three or more nodes to ensure high availability of the cluster.

    +
    • If neither a master node nor client node is enabled, the nodes specified by this parameter are used to serve as both the master node and client node. Nodes provide the cluster management, data storage, cluster access, and data analysis functions. To ensure data stability in a cluster, you are advised to set this parameter to a value no less than 3.
    • If only the master node function is enabled, nodes specified by this parameter are used to store data and provide functions of client nodes.
    • If both the master and client node functions are enabled, the nodes specified by this parameter are only used for storing data.
    • If only the client node function is enabled, nodes specified by this parameter are used to store data and provide functions of the master node.
    +

    CPU Architecture

    +

    Support x86. The supported type is determined by the actual regional environment.

    +

    Node Specifications

    +

    Specifications of nodes in a cluster. You can select a specification as required. Each cluster supports only one specification.

    +

    After you select a node specification, the CPU and memory corresponding to the current specification are displayed below the parameter. For example, if you select css.medium.8, then 1 vCPUs | 8 GB will be displayed, indicating that the node flavor you select contains one vCPU and 8 GB memory.

    +

    Node Storage Type

    +

    In the current version, the following options are available: High I/O and Ultra-high I/O.

    +

    Node Storage Capacity

    +

    Storage space. Its value varies with node specifications.

    +

    The node storage capacity must be a multiple of 20.

    +

    Disk Encryption

    +

    If you select this option, the nodes in the cluster you create will use encrypted disks to protect data. By default, this option is not selected. Note that you cannot modify this setting after the cluster is created. Therefore, exercise caution when performing the setting.

    +

    After you select this option, you need to select an available key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    +

    Enabling disk encryption has no impact on your operations on a cluster (such as accessing the cluster and importing data to the cluster). However, after you enable disk encryption, operation performance deteriorates by about 10%.

    +
    NOTE:
    • If the cluster is in the Available status and the key used for disk encryption is in the Pending deletion or Disable status or has been deleted after a cluster is created, cluster scale-out is not allowed and the key cannot be used to create new clusters. You can still restart the cluster, create snapshots, restore the cluster, and import data to the cluster.
    • After a cluster is created, do not delete the key used by the cluster. Otherwise, the cluster will become unavailable.
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    +
    +

    Master node

    +

    The master node manages all nodes in a cluster. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the master node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    +

    After enabling the master node, specify Node Specifications, Nodes, and Node Storage Type. The value of Nodes must be an odd number greater than or equal to 3. Up to nine nodes are supported. The value of Node Storage Capacity is fixed. You can select a storage type as required.

    +

    Client node

    +

    The client node allows clients to access clusters and analyze data. If more than 20 nodes are required to store and analyze a large amount of data, you are advised to enable the client node to ensure cluster stability. Otherwise, you are advised to set only the Nodes parameter and use the nodes as both master and client nodes.

    +

    After enabling the client node, specify Node Specifications, Nodes and Node Storage Type. The value of Nodes ranges from 1 to 32. The value of Node Storage Capacity is fixed. You can select a storage type as required.

    +

    Cold data node

    +

    The cold data node is used to store historical data, for which query responses can be returned in minutes. If you do not quire a quick query response, store historical data on cold data nodes to reduce costs.

    +

    After enabling cold data node, configure Node Specifications, Nodes, Node Storage Type, and Node Storage Capacity. The value of Nodes ranges from 1 to 32. Select Node Storage Type and Node Storage Capacity as required.

    +

    After the cold data node is enabled, CSS automatically adds cold and hot tags to related nodes.

    +
    +
    +
  6. Set the enterprise project.

    When creating a CSS cluster, you can bind an enterprise project to the cluster if you have enabled the enterprise project function. You can select an enterprise project created by the current user from the drop-down list on the right or click View Project Management to go to the Enterprise Project Management console and create a new project or view existing projects.

    +
  7. Click Next: Configure Network. Configure the cluster network. +
    + + + + + + + + + + + + + + + + + + + + + + +
    Table 5 Parameter description

    Parameter

    +

    Description

    +

    VPC

    +

    A VPC is a secure, isolated, and logical network environment.

    +

    Select the target VPC. Click View VPC to enter the VPC management console and view the created VPC names and IDs. If no VPCs are available, create one.

    +
    NOTE:

    The VPC must contain CIDRs. Otherwise, cluster creation will fail. By default, a VPC will contain CIDRs.

    +
    +

    Subnet

    +

    A subnet provides dedicated network resources that are isolated from other networks, improving network security.

    +

    Select the target subnet. You can access the VPC management console to view the names and IDs of the existing subnets in the VPC.

    +

    Security Group

    +

    A security group implements access control for ECSs that have the same security protection requirements in a VPC. To view more details about the security group, click View Security Group.

    +
    NOTE:

    Ensure that Port/Range is All or a port range includes port 9200 for the selected security group.

    +
    +

    Security Mode

    +

    After the security mode is enabled, communication will be encrypted and authentication required for the cluster.

    +
    • The default administrator account is admin.
    • Set and confirm the Administrator Password. This password will be required when you access this cluster.
    +

    HTTPS Access

    +

    HTTPS access can be enabled only after the security mode of the cluster is enabled. After HTTPS access is enabled, communication is encrypted when you access the cluster.

    +
    NOTE:

    Security clusters use HTTPS for communication, which is much slower than non-security clusters that use HTTP for communication. If you want fast read performance and the permission provided by the security mode to isolate resources (such as indexes, documents, and fields), you can disable the HTTPS Access function. After HTTPS Access is disabled, HTTP protocol is used for cluster communication. In this case, data security cannot be ensured and public IP address cannot be used.

    +
    +

    Public IP Address

    +

    If HTTPS Access is enabled, you can configure Public Network Access and obtain an IP address for public network access. This IP address can be used to access this security cluster through the public network. For details, see Accessing a Cluster from a Public Network.

    +
    +
    +
  8. Click Next: Configure Advanced Settings. Configure the automatic snapshot creation and other functions.
    1. Configure Cluster Snapshot. Set basic configuration and snapshot configuration.

      The cluster snapshot function is enabled by default. You can also disable this function as required. To store automatic snapshots in OBS, an agency will be created to access OBS. Additional cost will be incurred if snapshots are stored in standard storage.

      + +
      + + + + + + + + + + + + + + + + +
      Table 6 Cluster snapshot parameter

      Parameter

      +

      Description

      +

      OBS bucket

      +

      Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

      +

      The created or existing OBS bucket must meet the following requirements:

      +
      • Storage Class is Standard or Warm.
      • Region must be the same as that of the created cluster.
      +

      Backup Path

      +

      Storage path of the snapshot in the OBS bucket.

      +
      The backup path configuration rules are as follows:
      • The backup path cannot contain the following characters: \:*?"<>|
      • The backup path cannot start with a slash (/).
      • The backup path cannot start or end with a period (.).
      • The backup path cannot contain more than 1,023 characters.
      +
      +

      IAM Agency

      +

      IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

      +

      The created or existing IAM agency must meet the following requirements:

      +
      • Agency Type must be Cloud service.
      • Set Cloud Service to CSS.
      • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
      +

      Snapshot Encryption

      +

      Whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

      +

      After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

      +
      • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
      • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
      • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
      • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
      +
      +
      + +
      + + + + + + + + + + + + + + + + +
      Table 7 Automatic snapshot creation parameter

      Parameter

      +

      Description

      +

      Snapshot Name Prefix

      +

      The snapshot name prefix contains 1 to 32 characters and must start with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. A snapshot name consists of a snapshot name prefix and a timestamp, for example, snapshot-1566921603720.

      +

      Time Zone

      +

      Time zone for the backup time, which cannot be changed. Specify Backup Started Time based on the time zone.

      +

      Backup Start Time

      +

      The time when the backup starts automatically every day. You can specify this parameter only in full hours, for example, 00:00 or 01:00. The value ranges from 00:00 to 23:00. Select a time from the drop-down list.

      +

      Retention Period (days)

      +

      The number of days that snapshots are retained in the OBS bucket. The value ranges from 1 to 90. You can specify this parameter as required. The system automatically deletes expired snapshots every hour at half past the hour.

      +
      +
      +
    2. Configure advanced settings for the cluster.
      • Default: The VPC Endpoint Service, Kibana Public Access, and Tag functions are disabled by default. You can manually enable these functions after the cluster is created.
      • Custom: You can enable the VPC Endpoint Service, Kibana Public Access, and Tag functions as required.
      + +
      + + + + + + + + + + +
      Table 8 Parameters for advanced settings

      Parameter

      +

      Description

      +

      Kibana Public Access

      +

      You can configure this parameter only when security mode is enabled for a cluster. After enabling this function, you can obtain a public IP address for accessing Kibana. For details, see Accessing a Cluster from a Kibana Public Network.

      +

      Tag

      +

      Adding tags to clusters can help you identify and manage your cluster resources. You can customize tags or use tags predefined by Tag Management Service (TMS). For details, see Managing Tags.

      +

      If your organization has enabled tag policies for CSS, you must comply with the tag policy rules when creating clusters, otherwise, clusters may fail to be created. Contact the organization administrator to learn more about tag policies.

      +
      +
      +
    +
  9. Click Next: Confirm. Check the configuration and click Next to create a cluster.
  10. Click Back to Cluster List to switch to the Clusters page. The cluster you created is listed on the displayed page and its status is Creating. If the cluster is successfully created, its status will change to Available.

    If the cluster creation fails, create the cluster again.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001584708761.html b/docs/css/umn/en-us_topic_0000001584708761.html new file mode 100644 index 00000000..92d6abac --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001584708761.html @@ -0,0 +1,44 @@ + + +

Performance Data

+
  • Test environment
    • Cluster: 3 Cloud M6 ECSs (8 vCPUs | 64 GB memory)
    • Data: open-source web server access logs and internal service dataset (dns_logs)
    • Configuration: 120 shards, no replicas, and all the enhanced features enabled
    +
  • Test result +
    + + + + + + + + + + + + + + + + +

    Type

    +

    Performance (Before)

    +

    Performance (After)

    +

    Improved By

    +

    Open-source dataset

    +

    85 Mbit/s

    +

    131 Mbit/s

    +

    54%

    +

    Service dataset

    +

    124 Mbit/s

    +

    218 Mbit/s

    +

    76%

    +
    +
    +
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001584828717.html b/docs/css/umn/en-us_topic_0000001584828717.html new file mode 100644 index 00000000..7037c7a8 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001584828717.html @@ -0,0 +1,27 @@ + + +

Text Index Acceleration

+
  • You can configure index.native_speed_up to enable or disable text index acceleration. This function optimizes the index process and memory usage to accelerate index building for text fields (text and keyword).
  • You can configure index.native_analyzer to enable or disable word segmentation acceleration. For texts that require common word segmentation, you can use the analyzer to accelerate word segmentation.
+

Procedure

  1. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. In the navigation tree on the left, choose Dev Tools.
  3. On the Dev Tools page, run the following command:
    PUT my_index 
    +{
    +  "settings": {
    +    "index.native_speed_up": true,
    +    "index.native_analyzer": true
    +  },
    +  "mappings": {
    +    "properties": {
    +      "my_field": {
    +        "type": "text"
    +      }
    +    }
    +  }
    +}
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001584988497.html b/docs/css/umn/en-us_topic_0000001584988497.html new file mode 100644 index 00000000..0daacb8a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001584988497.html @@ -0,0 +1,20 @@ + + +

Optimization of Other Parameters

+

After the import performance is enhanced, the number of index merge tasks increases accordingly. You can adjust the following configuration to reduce the impact of merge task overhead on the import performance:

+

You can increase the value of index.merge.scheduler.max_thread_count to increase the number of shard merge threads and reduce the traffic limit on data import. The default value is 4 and you are advised to set it to 8.

+

Procedure

  1. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster, and click Access Kibana in the Operation column.
  2. In the navigation tree on the left, choose Dev Tools.
  3. On the Dev Tools page, run the following command:
    PUT my_index 
    +{
    +  "settings": {
    +    "index.merge.scheduler.max_thread_count": 8
    +  }
    +}
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001585148465.html b/docs/css/umn/en-us_topic_0000001585148465.html new file mode 100644 index 00000000..760e6df3 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001585148465.html @@ -0,0 +1,21 @@ + + +

Instructions

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001587956758.html b/docs/css/umn/en-us_topic_0000001587956758.html new file mode 100644 index 00000000..590ea6c0 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001587956758.html @@ -0,0 +1,19 @@ + + +

OpenSearch Dashboards

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001590323656.html b/docs/css/umn/en-us_topic_0000001590323656.html new file mode 100644 index 00000000..01aedd9d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001590323656.html @@ -0,0 +1,37 @@ + + +

Accessing a Cluster Using a VPC Endpoint

+

If the VPC endpoint service is enabled, you can use a private domain name or node IP address generated by the endpoint to access the cluster. When the VPC endpoint service is enabled, a VPC endpoint will be created by default. You can select Private Domain Name Creation as required.

+

VPC Endpoint uses a shared load balancer for intranet access. If your workloads require quick access, you are advised to connect a dedicated load balancer to the cluster. For details, see Connecting to a Dedicated Load Balancer.

+

The public IP address access and VPC endpoint service share a load balancer. If you have configured a public access whitelist, public and private IP addresses that access the cluster through VPCEP are restricted because the public IP address access shares the load balancer with the VPC endpoint service. In this case, you need to add IP address 198.19.128.0/17 to the public access whitelist to allow traffic through VPCEP.

+
+

Enabling the VPC Endpoint Service

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner.
  3. On the Create Cluster page, set Advanced Settings to Custom. Enable the VPC endpoint service.
    • Private Domain Name Creation: If you enable this function, the system automatically creates a private domain name for you, which you can use to access the cluster.
    • VPC Endpoint Service Whitelist: You can add an authorized account ID to the VPC endpoint service whitelist. Then you can access the cluster using the private domain name or the node IP address.
    • You can click Add to add multiple accounts.
    • Click Delete in the Operation column to delete the accounts that are not allowed to access the cluster.
    +
    • If the authorized account ID is set to *, all users are allowed to access the cluster.
    • You can view authorized account IDs on the My Credentials page.
    +
    +
+
+

Managing VPC Endpoint Service

You can enable the VPC endpoint service while creating a cluster, and also enable it by performing the following steps after cluster creation.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  4. Click the VPC Endpoint Service tab, and turn on the button next to VPC Endpoint Service.

    In the displayed dialog box, you can determine whether to enable the private domain name. Click Yes to enable the VPC endpoint service.

    +
    +
    +
  5. (Optional) Click Modify next to VPC Endpoint Service Whitelist to update the existing whitelist.
  6. Manage VPC endpoints.

    The VPC Endpoint Service page displays all VPC endpoints connected to the current VPC endpoint service.

    +

    Click Accept or Reject in the Operation column to change the node status. If you reject the connection with a VPC endpoint, you cannot access the cluster through the private domain name generated by that VPC endpoint.

    +
+
+

Accessing the Cluster Using the Private Domain Name or Node IP Address

  1. Obtain the private domain name or node IP address.

    Log in to the CSS console, click the target cluster name and go to the Cluster Information page. Click the VPC Endpoint Service tab and view the private domain name.

    + +
  2. Run the cURL command to execute the API or call the API by using a program before accessing the cluster. For details about Elasticsearch operations and APIs, see the Elasticsearch Reference.

    The ECS must meet the following requirements:

    +
    • Sufficient disk space is allocated for the ECS.
    • The ECS and the cluster must be in the same VPC. After enabling the VPC endpoint service, you can access the cluster from the ECS even when the cluster is not in the same VPC as the ECS.
    • The security group of the ECS must be the same as that of the cluster.

      If this requirement is not met, modify the ECS security group or configure the inbound and outbound rules of the ECS security group to allow the ECS security group to be accessed by all security groups of the cluster. For details, see Configuring Security Group Rules.

      +
    • Configure security group rule settings of the target CSS cluster. Set TCP protocol and port 9200 or a port range including port 9200 for both the outbound and inbound directions.
    +
    • If the cluster you access does not have the security mode enabled, run the following command:
      
      +
    • If the cluster you access has the security mode enabled, access the cluster using HTTPS and add the username, password, and -u to the cURL command.
      
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001590323664.html b/docs/css/umn/en-us_topic_0000001590323664.html new file mode 100644 index 00000000..2be56b56 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001590323664.html @@ -0,0 +1,54 @@ + + +

Manually Creating a Snapshot

+

You can manually create a snapshot at any time to back up all data or data of specified indexes.

+

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

+
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
+
+

Precautions

  • When creating a backup for the first time, you are advised to back up data of all indexes.
  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • Before creating a snapshot, you need to perform basic configurations, including configuring the OBS bucket for storing snapshots and IAM agency used for security authentication.
  • If there are available snapshots in the snapshot list when you configure the OBS bucket for storing cluster snapshots, you cannot change the bucket for snapshots that are created later. Exercise caution when you configure the OBS bucket.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, then enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • The first snapshot of a cluster is a full snapshot, and subsequent snapshots are incremental snapshots. CSS snapshot files depend on each other.
+
+

Manually Creating a Snapshot

  1. In the CSS navigation pane on the left, click Clusters.
  2. On the Clusters page that is displayed, click the name of the target cluster. In the navigation pane on the left, choose Cluster Snapshots.
  3. On the displayed Cluster Snapshots page, click the icon to the right of Cluster Snapshot to enable the cluster snapshot function.
  4. Enable the cluster snapshot function. OBS buckets and IAM agencies are automatically created to store snapshots. The automatically created OBS bucket and IAM agency are displayed on the page. You can also click on the right of Basic Configuration to edit the configuration. To ensure the security of snapshot data, you can select a key to encrypt the snapshot. +
    + + + + + + + + + + + + + +
    Table 1 Cluster snapshot parameter

    Parameter

    +

    Description

    +

    OBS bucket

    +

    Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

    +

    The created or existing OBS bucket must meet the following requirements:

    +
    • Storage Class is Standard or Warm.
    +

    IAM Agency

    +

    IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

    +

    The created or existing IAM agency must meet the following requirements:

    +
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
    +

    Snapshot Encryption

    +

    Whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

    +

    After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    +
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
    • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
    • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
    +
    +
    +
    Figure 1 Edit Basic configuration
    +
  5. After basic configurations are completed, click Create.
    • Snapshot Name indicates the name of the manually created snapshot, which can contain 4 to 64 characters and must start with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. For snapshots you create manually, you can specify the snapshot name. The system will not automatically add the time information to the snapshot name.
    • Index: Enter an index name. You can select an index for backup. Use commas (,) to separate multiple indexes. Uppercase letters, spaces, and the following special characters are not allowed: "\<|>/? If you do not specify this parameter, data of all indexes in the cluster is backed up by default. You can use the asterisk (*) to back up data of certain indices. For example, if you enter index*, then data of indices with the name prefix of index will be backed up.

      Run the GET /_cat/indices command in Kibana to query the names of all indexes in the cluster.

      +
    • Description: indicates the description of the created snapshot. The value contains 0 to 256 characters, and certain special characters (<>) are not allowed.
    +
    Figure 2 Creating a snapshot
    +
  6. Click OK.

    After the snapshot is created, it will be displayed in the snapshot list. The status Available indicates that the snapshot is created successfully. along with manually created snapshots. You can distinguish them by the Snapshot Type setting. In the upper right corner of the snapshot list, enter the keyword of the snapshot name or snapshot ID to search for the desired snapshots.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001590332948.html b/docs/css/umn/en-us_topic_0000001590332948.html new file mode 100644 index 00000000..bff08094 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001590332948.html @@ -0,0 +1,85 @@ + + +

Scaling Out a Cluster

+

If the workloads on the data plane of a cluster change, you can scale out the cluster by increasing the number or capacity of its nodes. Services are not interrupted during cluster scale-out.

+

Prerequisites

  • The target cluster is available and has no tasks in progress.
  • The target cluster has sufficient quotas available.
+
+

Constraints

  • The Node Specifications cannot be modified during scale-out. You can modify Node Specifications by referring to Changing Specifications.
  • If you change the number and storage capacity of a specified type of node, nodes in other types will not be changed.
  • The quota of nodes in different types varies. For details, see Table 1. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Number of nodes in different types

    Node Type

    +

    Number

    +

    ess

    +

    ess: 1-32

    +

    ess, ess-master

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess, ess-client

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess, ess-cold

    +

    ess: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess, ess-master, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-cold: 1-32

    +

    ess, ess-client, ess-cold

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    +
    +
    +
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Scale out to set parameters.
    • Action: Select Scale out.
    • Resource: The changed amount of resources.
    • Nodes: The number of nodes and node storage capacity of the default data node.
      • Nodes: For details, see Table 1.
      • The value range of Node Storage Type depends on the Node Specifications. The value must be a multiple of 20.
      +
    +
  5. Click Next.
  6. Confirm the information and click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling out. When Cluster Status changes to Available, the cluster has been successfully scaled out.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001590603388.html b/docs/css/umn/en-us_topic_0000001590603388.html new file mode 100644 index 00000000..2a56c1e1 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001590603388.html @@ -0,0 +1,382 @@ + + +

Sample Code for Two-Way Authentication During the Access to a Cluster

+

This section provides the sample code for two-way authentication during the access to a cluster from a Java client.

+

ESSecuredClientWithCerDemo Code

  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
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
import org.apache.commons.io.IOUtils;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.HttpHost;
+import org.apache.http.nio.conn.ssl.SSLIOSessionStrategy;
+import org.elasticsearch.action.search.SearchRequest;
+import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.RestClient;
+import org.elasticsearch.client.RestClientBuilder;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.SearchHits;
+import org.elasticsearch.search.builder.SearchSourceBuilder;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.security.KeyStore;
+import java.security.SecureRandom;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.TrustManagerFactory;
+public class ESSecuredClientWithCerDemo {
+    private static final String KEY_STORE_PWD = "";
+    private static final String TRUST_KEY_STORE_PWD = "";
+    private static final String CA_JKS_PATH = "ca.jks";
+    private static final String CLIENT_JKS_PATH = "client.jks";
+    private static final String ELB_ADDRESS = "127.0.0.1";
+    private static final int ELB_PORT = 9200;
+    private static final String CSS_USERNAME = "user";
+    private static final String CSS_PWD = "";
+    public static void main(String[] args) {
+       // Create a client.
+        RestHighLevelClient client = initESClient(ELB_ADDRESS, CSS_USERNAME, CSS_PWD);
+        try {
+         // Search match_all, which is equivalent to {\"query\": {\"match_all\": {}}}.
+            SearchRequest searchRequest = new SearchRequest();
+            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+            searchSourceBuilder.query(QueryBuilders.matchAllQuery());
+            searchRequest.source(searchSourceBuilder);
+            // query
+            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
+            System.out.println("query result: " + searchResponse.toString());
+            SearchHits hits = searchResponse.getHits();
+            for (SearchHit hit : hits) {
+                System.out.println(hit.getSourceAsString());
+            }
+            System.out.println("query success");
+            Thread.sleep(2000L);
+        } catch (InterruptedException | IOException e) {
+            e.printStackTrace();
+        } finally {
+            IOUtils.closeQuietly(client);
+        }
+    }
+    private static RestHighLevelClient initESClient(String clusterAddress, String userName, String password) {
+        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
+        SSLContext ctx = null;
+        try {
+            KeyStore ks = getKeyStore(CLIENT_JKS_PATH, KEY_STORE_PWD, "JKS");
+            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+            kmf.init(ks, KEY_STORE_PWD.toCharArray());
+            KeyStore tks = getKeyStore(CA_JKS_PATH, TRUST_KEY_STORE_PWD, "JKS");
+            TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
+            tmf.init(tks);
+            ctx = SSLContext.getInstance("SSL", "SunJSSE");
+            ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        SSLIOSessionStrategy sessionStrategy = new SSLIOSessionStrategy(ctx, new HostnameVerifier() {
+            @Override
+            public boolean verify(String arg0, SSLSession arg1) {
+                return true;
+            }
+        });
+        SecuredHttpClientConfigCallback httpClientConfigCallback = new SecuredHttpClientConfigCallback(sessionStrategy,
+            credentialsProvider);
+        RestClientBuilder builder = RestClient.builder(new HttpHost(clusterAddress, ELB_PORT, "https"))
+            .setHttpClientConfigCallback(httpClientConfigCallback);
+        RestHighLevelClient client = new RestHighLevelClient(builder);
+        return client;
+    }
+    private static KeyStore getKeyStore(String path, String pwd, String type) {
+        KeyStore keyStore = null;
+        FileInputStream is = null;
+        try {
+            is = new FileInputStream(path);
+            keyStore = KeyStore.getInstance(type);
+            keyStore.load(is, pwd.toCharArray());
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            IOUtils.closeQuietly(is);
+        }
+        return keyStore;
+    }
+}
+
+ +
+
+

SecuredHttpClientConfigCallback Code

 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
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
+import org.apache.http.nio.conn.ssl.SSLIOSessionStrategy;
+import org.elasticsearch.client.RestClientBuilder;
+import org.elasticsearch.common.Nullable;
+import java.util.Objects;
+class SecuredHttpClientConfigCallback implements RestClientBuilder.HttpClientConfigCallback {
+    @Nullable
+    private final CredentialsProvider credentialsProvider;
+    /**
+     * The {@link SSLIOSessionStrategy} for all requests to enable SSL / TLS encryption.
+     */
+    private final SSLIOSessionStrategy sslStrategy;
+    /**
+     * Create a new {@link SecuredHttpClientConfigCallback}.
+     *
+     * @param credentialsProvider The credential provider, if a username/password have been supplied
+     * @param sslStrategy         The SSL strategy, if SSL / TLS have been supplied
+     * @throws NullPointerException if {@code sslStrategy} is {@code null}
+     */
+    SecuredHttpClientConfigCallback(final SSLIOSessionStrategy sslStrategy,
+        @Nullable final CredentialsProvider credentialsProvider) {
+        this.sslStrategy = Objects.requireNonNull(sslStrategy);
+        this.credentialsProvider = credentialsProvider;
+    }
+    /**
+     * Get the {@link CredentialsProvider} that will be added to the HTTP client.
+     *
+     * @return Can be {@code null}.
+     */
+    @Nullable
+    CredentialsProvider getCredentialsProvider() {
+        return credentialsProvider;
+    }
+    /**
+     * Get the {@link SSLIOSessionStrategy} that will be added to the HTTP client.
+     *
+     * @return Never {@code null}.
+     */
+    SSLIOSessionStrategy getSSLStrategy() {
+        return sslStrategy;
+    }
+    /**
+     * Sets the {@linkplain HttpAsyncClientBuilder#setDefaultCredentialsProvider(CredentialsProvider) credential provider},
+     *
+     * @param httpClientBuilder The client to configure.
+     * @return Always {@code httpClientBuilder}.
+     */
+    @Override
+    public HttpAsyncClientBuilder customizeHttpClient(final HttpAsyncClientBuilder httpClientBuilder) {
+        // enable SSL / TLS
+        httpClientBuilder.setSSLStrategy(sslStrategy);
+        // enable user authentication
+        if (credentialsProvider != null) {
+            httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
+        }
+        return httpClientBuilder;
+    }
+}
+
+ +
+
+

pom.xml Code

<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>1</groupId>
+    <artifactId>ESClient</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <name>ESClient</name>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <elasticsearch.version>7.10.2</elasticsearch.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.elasticsearch.client</groupId>
+            <artifactId>transport</artifactId>
+            <version>${elasticsearch.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.elasticsearch</groupId>
+            <artifactId>elasticsearch</artifactId>
+            <version>${elasticsearch.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.elasticsearch.client</groupId>
+            <artifactId>elasticsearch-rest-high-level-client</artifactId>
+            <version>${elasticsearch.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.11.0</version>
+        </dependency>
+    </dependencies>
+</project>
+
+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001590612676.html b/docs/css/umn/en-us_topic_0000001590612676.html new file mode 100644 index 00000000..79def12c --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001590612676.html @@ -0,0 +1,18 @@ + + +

Removing Specified Nodes

+

If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs. Services will not be interrupted during the removal of specified nodes.

+

Prerequisites

The target cluster is available and has no tasks in progress.

+
+

Constraints

  • Ensure that the disk usage after scale-in is less than 80% and each AZ of each node type has at least one node.
  • In a cross-AZ cluster, the difference between the numbers of the same type nodes in different AZs cannot exceed 1.
  • For a cluster without master nodes, the number of removed data nodes and cold data nodes in a scale-in must be fewer than half of the original number of data nodes and cold data nodes, and the number of remaining data nodes and cold data nodes after a scale-in must be greater than the maximum number of index replicas.
  • For a cluster with master nodes, the number of removed master nodes in a scale-in must be fewer than half of the original master node number. After scale-in, there has to be an odd number of master nodes, and there has to be at least three of them.
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, click the Scale In tab.
  5. On the Scale In tab page, set the following parameters:
    • Whether to perform data migration: If this option is selected, data migration is performed. If the target node contains disabled indexes or indexes that have no replicas, this option must be selected.
    • In the data node table, select the node to be scaled in.
    +
  6. Click Next.
  7. Confirm the information and click Submit.
  8. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling in. When Cluster Status changes to Available, the cluster has been successfully scaled in.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001590963076.html b/docs/css/umn/en-us_topic_0000001590963076.html new file mode 100644 index 00000000..c6efa7ae --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001590963076.html @@ -0,0 +1,57 @@ + + +

Accessing a Cluster from a Public Network

+

You can access a security cluster that has the HTTPS access enabled through the public IP address provided by the system.

+

By default, CSS uses a shared load balancer for public network access. You can use a dedicated load balancer to improve performance. For details about its configuration, see Connecting to a Dedicated Load Balancer.

+

If public network access is enabled for CSS, then EIP and bandwidth resources will be used and billed.

+
+

Configuring Public Network Access

  1. Log in to the CSS management console.
  2. On the Create Cluster page, enable Security Mode. Set the administrator password and enable HTTPS access.
  3. Select Automatically assign for Public IP Address and set related parameters. +
    + + + + + + + + + + + + + +
    Table 1 Public network access parameters

    Parameter

    +

    Description

    +

    Bandwidth

    +

    Bandwidth for accessing Kibana with the public IP address

    +

    Access Control

    +

    If you disable this function, all IP addresses can access the cluster through the public IP address. If you enable access control, only IP addresses in the whitelist can access the cluster through the public IP address.

    +

    Whitelist

    +

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    +
    +
    +
+
+

Managing Public Network Access

You can configure, modify, view the public network access of, or disassociate the public IP address from a cluster.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. On the Clusters page, click the name of the target cluster. On the Basic Information page that is displayed, manage the public network access configurations.
    • Configure public network access

      If you did not configure the public network access during cluster creation, you can configure it on the cluster details page after configuring the cluster.

      +

      Click Associate next to Public IP Address, set the access bandwidth, and click OK.

      +

      If the association fails, wait for several minutes and try again.

      +
    • Modify public network access

      For a cluster for which you have configured public network access, you can click Edit next to Bandwidth to modify the bandwidth, or you can click Set next to Access Control to set the access control function and the whitelist for access.

      +
    • View the associated public IP address

      On the basic information page of a cluster, you can view the public IP address associated with the cluster.

      +
    • Disassociate a public IP address from a cluster

      To disassociate the public IP address, click Disassociate next to Public IP Address.

      +
    +
+
+

Accessing a Cluster Through the Public IP Address

After configuring the public IP address, you can use it to access the cluster.

+
For example, run the following cURL commands to view the index information in the cluster. In this example, the public access IP address of one node in the cluster is 10.62.179.32 and the port number is 9200.
  • If the cluster you access does not have the security mode enabled, run the following command:
    curl 'http://10.62.179.32:9200/_cat/indices'
    +
  • If the cluster you access has the security mode enabled, access the cluster using HTTPS and add the username, password and -u to the cURL command.
    curl -u username:password -k 'https://10.62.179.32:9200/_cat/indices'
    +
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001590963080.html b/docs/css/umn/en-us_topic_0000001590963080.html new file mode 100644 index 00000000..22ff4db2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001590963080.html @@ -0,0 +1,65 @@ + + +

Managing Automatic Snapshot Creation

+

Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and set the automatic snapshot creation policy.

+

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

+
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
+
+

Precautions

  • When creating a backup for the first time, you are advised to back up data of all indexes.
  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • Before creating a snapshot, you need to perform basic configurations, including configuring the OBS bucket for storing snapshots and IAM agency used for security authentication.
  • If there are available snapshots in the snapshot list when you configure the OBS bucket for storing cluster snapshots, you cannot change the bucket for snapshots that are created later. Exercise caution when you configure the OBS bucket.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • The first snapshot of a cluster is a full snapshot, and subsequent snapshots are incremental snapshots. CSS snapshot files depend on each other.
+
+

Managing Automatic Snapshot Creation

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. On the Clusters page that is displayed, click the name of the target cluster. In the navigation pane on the left, choose Cluster Snapshots.
  4. On the displayed Cluster Snapshots page, click the icon to the right of Cluster Snapshot to enable the cluster snapshot function.
  5. Enable the cluster snapshot function. OBS buckets and IAM agencies are automatically created by CSS to store snapshots. The automatically created OBS bucket and IAM agency are displayed on the page. You can also click on the right of Basic Configuration to edit the configuration. To ensure the security of snapshot data, you can select a key to encrypt the snapshot. +
    + + + + + + + + + + + + + + + + +
    Table 1 Cluster snapshot parameter

    Parameter

    +

    Description

    +

    OBS bucket

    +

    Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

    +

    The created or existing OBS bucket must meet the following requirements:

    +
    • Storage Class is Standard or Warm.
    • Region must be the same as that of the created cluster.
    +

    Backup Path

    +

    Storage path of the snapshot in the OBS bucket.

    +
    The backup path configuration rules are as follows:
    • The backup path cannot contain the following characters: \:*?"<>|
    • The backup path cannot start with a slash (/).
    • The backup path cannot start or end with a period (.).
    • The backup path cannot contain more than 1,023 characters.
    +
    +

    IAM Agency

    +

    IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

    +

    The created or existing IAM agency must meet the following requirements:

    +
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
    +

    Snapshot Encryption

    +

    Whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

    +

    After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    +
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
    • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
    • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
    +
    +
    +
    Figure 1 Editing basic configurations
    +
  6. Enable the automatic snapshot creation function. The Configure Automatic Snapshot Creation dialog box is displayed. If the automatic snapshot creation function is enabled, you can click on the right of Automatic Snapshot Creation to modify the snapshot policy.
    • Snapshot Name Prefix: Enter a maximum of 32 characters starting with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. A snapshot name consists of a snapshot name prefix and a timestamp, for example, snapshot-2018022405925.
    • Time Zone: indicates the time zone for the backup time. Specify backup start time based on the time zone.
    • Index: Enter an index name. You can select an index for backup. Use commas (,) to separate multiple indexes. Uppercase letters, spaces, and the following special characters are not allowed: "\<|>/? If you do not specify this parameter, data of all indexes in the cluster is backed up by default. You can use the asterisk (*) to back up data of certain indexes. For example, if you enter index*, then data of indices with the name prefix of index will be backed up.

      Run the GET /_cat/indices command in Kibana to query the names of all indexes in the cluster.

      +
    • Backup Started: indicates the time when the backup starts automatically every day. You can specify this parameter only in hours and not minutes, for example, 00:00 or 01:00. The value ranges from 00:00 to 23:00. Select the backup time from the drop-down list box.
    • Retention Period (days): indicates the duration when snapshots are retained in the OBS bucket, in days. The value ranges from 1 to 90. You can specify this parameter as required. The system automatically deletes snapshots that are retained over the specified retention period on the half hour. For example, if you set the snapshot policy as shown in Figure 2, the system will automatically delete in 35 days at 00:30 the automated snapshots that were created 35 days earlier at 00:00.
    +
    Figure 2 Automatic snapshot creation
    +
  7. Click OK to save the snapshot policy.

    Snapshots that are automatically created according to the snapshot policy are displayed in the snapshot list, along with manually created snapshots. You can distinguish them by the Snapshot Type setting. In the upper right corner of the snapshot list, enter the keyword of the snapshot name or snapshot ID to search for the desired snapshots.

    +
    Figure 3 Automatic snapshot creation
    +
  8. (Optional) Disable the automatic snapshot creation function.

    After you disable the automatic snapshot creation function, the system stops automatic creation of snapshots. If the system is creating a snapshot based on the automatic snapshot creation policy and the snapshot is not yet displayed in the snapshot list, you cannot disable the automatic snapshot creation function. In this case, if you click the button next to Automatic Snapshot Creation, a message is displayed, indicating that you cannot disable the function. You are advised to disable the function after the system completes automatic creation of the snapshot, and the created snapshot is displayed in the snapshot list.

    +

    When disabling the automatic snapshot creation function, you can choose whether to delete the snapshots that have been automatically created by selecting Delete automated snapshots in the displayed dialog box. By default, automatically created snapshots are not deleted.

    +
    • If you do not select Delete automated snapshots, automatically created snapshots are not deleted when you disable the automatic snapshot creation function. You can manually delete them later. For details, see Deleting a Snapshot. If you retain the automatically created snapshots and enable automatic snapshot creation again, then all snapshots whose Snapshot Type is Automated can only be automatically deleted by the system. Specifically, the system automatically deletes snapshots based on the snapshot policy configured when you enable the automatic snapshot creation function again. For example, if you set Retention Period (days) to 10, the system will automatically delete the snapshots that have been retained for more than 10 days.
    • If you select Delete automated snapshots, all snapshots with Snapshot Type set to Automated in the snapshot list will be deleted when you disable the automatic snapshot creation function.
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001590972372.html b/docs/css/umn/en-us_topic_0000001590972372.html new file mode 100644 index 00000000..11a6bc1f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001590972372.html @@ -0,0 +1,84 @@ + + +

Scaling in a Cluster

+

If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs. You are advised to scale in clusters during off-peak hours.

+

Prerequisites

The target cluster is available and has no tasks in progress.

+
+

Constraints

  • Only the number of nodes can be modified during cluster scale-in. The node specifications and node storage capacity cannot be modified. You can modify node specifications by referring to Changing Specifications. You can modify node storage capacity by referring to Scaling Out a Cluster.
  • If you change the number and storage capacity of a specified type of node, nodes in other types will not be changed.
  • Ensure that the disk usage after scale-in is less than 80% and each AZ of each node type has at least one node.
  • When scaling in a cluster, the data in the node to be deleted is migrated to other nodes. The timeout threshold for data migration is five hours. If data migration is not complete within 5 hours, the cluster scale-in fails. You are advised to perform scale-in for multiple times when the cluster has huge amounts of data.
  • For a cluster without master nodes, the number of remaining data nodes (including cold data nodes and other types of nodes) after scale-in must be greater than half of the original node number, and greater than the maximum number of index replicas.
  • For a cluster with master nodes, the number of removed master nodes in a scale-in must be fewer than half of the original master node number. After scale-in, there has to be an odd number of master nodes, and there has to be at least three of them.
  • A cluster with two nodes cannot be scaled in. You can create a cluster using a single node.
  • The quota of nodes in different types varies. For details, see Table 1. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Number of nodes in different types

    Node Type

    +

    Number

    +

    ess

    +

    ess: 1-32

    +

    ess, ess-master

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess, ess-client

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess, ess-cold

    +

    ess: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess, ess-master, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-cold: 1-32

    +

    ess, ess-client, ess-cold

    +

    ess: 1-32

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +

    ess, ess-master, ess-client, ess-cold

    +

    ess: 1-200

    +

    ess-master: an odd number ranging from 3 to 9

    +

    ess-client: 1-32

    +

    ess-cold: 1-32

    +
    Details about the four node types:
    • ess: the default node type that is mandatory for cluster creation. The other three node types are optional.
    • ess-master: master node
    • ess-client: client node
    • ess-cold: cold data node
    +
    +
    +
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Scale in to set parameters.
    • Action: Select Scale in.
    • Resources: The changed amount of resources.
    • Nodes: The number of the default data nodes. For details about the value range that can be changed, see Table 1.
    +
  5. Click Next.
  6. Confirm the information and click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Scaling in. When Cluster Status changes to Available, the cluster has been successfully scaled in.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001591285452.html b/docs/css/umn/en-us_topic_0000001591285452.html new file mode 100644 index 00000000..22f71692 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591285452.html @@ -0,0 +1,20 @@ + + +

(Optional) Interconnecting with a Dedicated Load Balancer

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001591285456.html b/docs/css/umn/en-us_topic_0000001591285456.html new file mode 100644 index 00000000..3e25b34a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591285456.html @@ -0,0 +1,28 @@ + + +

Restoring Data

+

You can use existing snapshots to restore the backup index data to a specified cluster.

+

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

+
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
+
+

Precautions

  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, then enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • Cluster data cannot be queried during snapshot restoration.
  • If you restore a CSS cluster snapshot to another cluster, indexes with the same name in the destination cluster will be overwritten. If the snapshot and the destination cluster use different shards, the indexes with the same name will not be overwritten.
  • The version of the destination cluster used for restoration must be the same as or higher than that of the source cluster.
+
+

Restoring Data

You can use snapshots whose Snapshot Status is Available to restore cluster data. The stored snapshot data can be restored to other clusters.

+

Restoring data will overwrite current data in clusters. Therefore, exercise caution when restoring data.

+
  1. In the Snapshots area, locate the row that contains the snapshot you want to restore and click Restore in the Operation column.
  2. On the Restore page, set restoration parameters.

    Index: Enter the name of the index you want to restore. If you do not specify any index name, data of all indexes will be restored. The value can contain 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?) are not allowed. You can use the asterisk (*) to match multiple indexes. For example, index* indicates that all indexes with the prefix index in snapshots are restored.

    +

    Rename Pattern: Enter a regular expression. Indexes that match the regular expression are restored. The default value index_(.+) indicates restoring data of all indexes. The value contains 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed.

    +

    Rename Replacement: Enter the index renaming rule. The default value restored_index_$1 indicates that restored_ is added in front of the names of all restored indexes. The value contains 0 to 1,024 characters. Uppercase letters, spaces, and certain special characters (including "\<|>/?,) are not allowed.

    +

    The Rename Pattern and Rename Replacement take effect only when they are configured at the same time.

    +
    +

    Cluster: Select the name of the cluster to be restored. You can select the cluster of the current version. However, you can only restore the snapshot to clusters whose status is Available. If the status of the current cluster is Unavailable, you cannot restore the snapshot to the current cluster. If the target cluster you selected has an index with the same name as the original cluster, data in the index will be overwritten after the restoration. Exercise caution when performing this operation.

    +
    Figure 1 Restoring a snapshot
    +
  3. Click OK. If restoration succeeds, Task Status of the snapshot in the snapshot list will change to Restoration succeeded, and the index data is generated again according to the snapshot information.
    Figure 2 Successful restoration
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001591294758.html b/docs/css/umn/en-us_topic_0000001591294758.html new file mode 100644 index 00000000..c46d5333 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591294758.html @@ -0,0 +1,79 @@ + + +

Changing the Security Mode

+
+

Context

You can create clusters in multiple security modes. For details about the differences between security modes, see Table 1. +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Cluster security modes

Security Mode

+

Scenario

+

Advantage

+

Disadvantage

+

Non-Security Mode

+

Intranet services and test scenarios

+

Simple. Easy to access.

+

Poor security. Anyone can access such clusters.

+

Security Mode + HTTP Protocol

+

User permissions can be isolated, which is applicable to scenarios sensitive to cluster performance.

+

Security authentication is required for accessing such clusters, which improves cluster security. Accessing a cluster through HTTP protocol can retain the high performance of the cluster.

+

Cannot be accessed from the public network.

+

Security Mode + HTTPS Protocol

+

Scenarios that require high security and public network access.

+

Security authentication is required for accessing such clusters, which improves cluster security. HTTPS protocol allows public network to access such clusters.

+

The performance of clusters using HTTPS is 20% lower than that of using HTTP.

+
+
+
+
+

Prerequisites

  • You are advised to back up data before changing the cluster security mode.
  • The target cluster is available and has no tasks in progress.
+
+

Constraints

  • A cluster automatically restarts when its security mode is being changed. Services are interrupted during the restart. The authentication mode for calling the cluster will change after the restart, and client configurations need to be adjusted accordingly.
  • If a cluster has already opened the Kibana session box, a session error message will be displayed after you change the cluster security mode. In this case, clear the cache and open Kibana again.
+
+

Switching from the Non-Security Mode to Security Mode

You can change a non-security cluster to a security cluster that uses HTTP or HTTPS. After a cluster's security mode is enabled, security authentication is required for accessing the cluster.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. Choose the Configure Security Mode tab.
  5. Enable the security mode. Enter and confirm the administrator password of the cluster.
  6. Enable or disable HTTPS Access.
    • If you enable HTTPS Access: The HTTPS protocol is used to encrypt cluster communication and you can configure public networks to access the cluster.
    • If you disable HTTPS Access: The HTTP protocol is used and you cannot configure public networks to access the cluster.
    +
  7. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    +
+
+

Switching from the Security to Non-Security Mode

You can change a security cluster that uses HTTP or HTTPS to a non-security cluster. After a cluster's security mode is disabled, security authentication is no longer required for accessing the cluster.

+
  • Clusters in non-security mode can be accessed without security authentication, and HTTP protocol is used to transmit data. Ensure the security of the cluster access environment and do not expose the access interface to the public network.
  • During the switchover from the security mode to the non-security mode, the indexes of the original security cluster will be deleted. Back up data before disabling the security mode.
  • If a security cluster has been bound to a public IP address, unbind it before changing the security mode.
  • If a security cluster has enabled Kibana public network access, disable it before changing the security mode.
+
+
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the displayed Clusters page, locate the target cluster and choose More > Modify Configuration in the Operation column.
  3. Choose the Configure Security Mode tab.
  4. Disable the security mode.
  5. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    +
+
+

Switching the Protocol of Security Clusters

You can change the protocol of a security cluster.

+

If a security cluster has been bound to a public IP address, you need to unbind it before changing HTTPS protocol to HTTP.

+
+
  1. Log in to the CSS management console.
  2. In the navigation pane on the left, choose Clusters. On the displayed Clusters page, locate the target cluster and choose More > Modify Configuration in the Operation column.
  3. Choose the Configure Security Mode tab.
  4. Enable or disable HTTPS Access.
    • If you enable HTTPS Access:

      HTTPS protocol is used to encrypt cluster communication and you can configure public network access.

      +
    • If you disable HTTPS Access: An alarm message is displayed. Click OK to disable the function.

      When the HTTP protocol is used, cluster communication is no longer encrypted and the public network access function cannot be enabled.

      +
    +
  5. Click Submit. Confirm the information and the cluster list page is displayed.

    The Task Status of the cluster is The security mode is changing. When the cluster status changes to Available, the security mode has been successfully changed.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001591298678.html b/docs/css/umn/en-us_topic_0000001591298678.html new file mode 100644 index 00000000..df846443 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591298678.html @@ -0,0 +1,36 @@ + + +

Creating and Managing Index Policies

+

You can manage the indexes of OpenSearch clusters. ISM is a plugin that allows you to automate periodic and administrative operations based on changes on the index age, index size, or number of documents. When using the ISM plug-in, you can define policies that automatically handle index rollovers or deletions based on your needs.

+

Creating an Index Policy

  1. Log in to Kibana and choose or Index Management on the left. The index management page is displayed.
  2. Click Create policy to create an index policy.
  3. In the Configuration method dialog box, select JSON editor and click Continue. The page for creating an index policy is displayed.
  4. Enter a policy ID in the Policy ID text box and enter your policy in the Define policy text box.
    Figure 1 Configuring a policy
    +
  5. Click Create.
+
+

Attaching a Policy to an Index

You can attach a policy to one or more indexes and add the policy ID to an index template. When you create indexes using that index template pattern, the policy will be attached to all created indexes.

+
  • Method 1: OpenSearch Dashboard CLI

    On the Dev Tools page of the OpenSearch Dashboards, run the following command to associate the policy ID with the index template:

    +
    PUT _template/<template_name> 
    +{
    +    "index_patterns": ["index_name-*"],
    +    "settings": {
    +        "opendistro.index_state_management.policy_id": "policy_id"
    +    }
    +}
    +
    • <template_name>: Replace it with the name of a created index template.
    • policy_id: Replace it with a custom policy ID.
    +

    For details about how to create an index template, see Index Templates.

    +
  • Method 2: OpenSearch Dashboards Console
    1. On the Index Management page of the OpenSearch Dashboards, choose Indices.
      Figure 2 Choosing Indices
      +
    2. In the Indices list, select the target index to which you want to attach a policy.
    3. Click Apply policy in the upper right corner.
      Figure 3 Adding a policy
      +
    4. Select the policy you created from the Policy ID drop-down list.
      Figure 4 Selecting an index policy
      +
    5. Click Apply.

      After you attach a policy to an index, ISM creates a job that runs every 5 minutes by default, to execute the policy, check conditions, and convert the index to different statuses.

      +
    +
+
+

Managing Index Policies

  1. On the Index Management page of the OpenSearch Dashboards, choose Managed Indices.
  2. If you want to change the policy, click Change policy. For details, see Changing Policies.
    Figure 5 Changing policies
    +
  3. To delete a policy, select your policy, and click Remove policy.
  4. To retry a policy, select your policy, and click Retry policy.
+

For details, see Index State Management.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001591298682.html b/docs/css/umn/en-us_topic_0000001591298682.html new file mode 100644 index 00000000..598a1def --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591298682.html @@ -0,0 +1,74 @@ + + +

Creating and Authorizing a User on the OpenSearch Dashboards

+

Prerequisites

The security mode has been enabled for the OpenSearch cluster.

+
+

Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + +
Table 1 Parameters for creating and authorizing a user on Kibana

Parameter

+

Description

+

Permission

+

Single permission, for example, creating an index (for example, indices:admin/create)

+

Action group

+

A group of permissions. For example, the predefined SEARCH action group grants roles permissions to use _search and _msearchAPI.

+

Role

+

A role is a combination of permissions and action groups, including operation permissions on clusters, indexes, documents, or fields.

+

Backend role

+

(Optional) Other external roles from the backend such as LDAP/Active Directory

+

User

+

A user can send operation requests to Elasticsearch clusters. The user has credentials such as username and password, and zero or multiple backend roles and custom attributes.

+

Role mapping

+

A user will be assigned a role after successful authentication. Role mapping is to map a role to a user (or a backend role). For example, the mapping from kibana_user (role) to jdoe (user) means that John Doe obtains all permissions of kibana_user after being authenticated by kibana_user. Similarly, the mapping from all_access (role) to admin (backend role) means that any user with the backend role admin (from the LDAP/Active Directory server) has all the permissions of role all_access after being authenticated. You can map each role to multiple users or backend roles.

+
+
+

You can customize the username, role name, and tenant name in the OpenSearch Dashboards.

+
+
+

Procedure

  1. Log in to the OpenSearch Dashboards.

    1. Log in to the CSS management console.
    2. In the navigation pane, choose Clusters > OpenSearch.
    3. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
    4. Enter the administrator username and password to log in to the OpenSearch Dashboards.
      • Username: admin (default administrator account name)
      • Password: Enter the administrator password you set when creating the cluster in security mode.
        Figure 1 Logging in to OpenSearch
        +
      +
    +

  2. Creating a user.

    1. On the OpenSearch Dashboards page, choose Security. The Security page is displayed.
      Figure 2 Going to the Security page
      +
    2. Choose Internal users on the left. The user creation page is displayed.
      Figure 3 Creating a user
      +
    3. Click Create internal user. The user information configuration page is displayed.
    4. In the Credentials area, enter the username and password.
      Figure 4 Entering the username and password
      +
    5. Click Create. After the user is created, it is displayed in the user list.
      Figure 5 User information
      +
    +

  3. Create a role and grant permissions to the role.

    1. Select Roles from the Security drop-down list box.
    2. On the Roles page, click Create role. The role creation page is displayed.
    3. In the Name area, set the role name.
      Figure 6 Setting a role name
      +
    4. On the Cluster Permissions page, set the cluster permission. Set cluster permissions based on service requirements. If this parameter is not specified for a role, the role has no cluster-level permissions.
      Figure 7 Assigning cluster-level permissions
      +
    5. In the Index Permissions area, set the index permission.
      Figure 8 Setting index permissions
      +
    6. On the Tenant Permissions page, set role permissions.
      Figure 9 Role permissions
      +

      After the setting is complete, you can view the created role on the Roles page.

      +
    +

  4. Map a user with a role to bind them.

    1. Select Roles from the Security drop-down list box.
    2. On the Roles page, select the role to be mapped. The role mapping page is displayed.

      +
    3. On the Mapped users tab page, click Map users and select the user to be mapped from the users drop-down list box.

      +
    4. Click Map.
    5. After the configuration is complete, you can check whether the configuration takes effect in OpenSearch Dashboards.
    +

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001591456866.html b/docs/css/umn/en-us_topic_0000001591456866.html new file mode 100644 index 00000000..19053c3a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591456866.html @@ -0,0 +1,104 @@ + + +

Managing Logs

+

CSS provides log backup and search functions to help you locate faults. You can back up cluster logs to OBS buckets and download required log files to analyze and locate faults.

+

Log Query

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. In the navigation pane on the left, choose Log Management.
  4. Query logs on the log management page.

    Select the node, log type, and log level you want to query, and then click . The query result is displayed.

    +

    When you search for logs, the latest 10,000 logs are matched. A maximum of 100 logs are displayed.

    +
+
+

Enabling Log Backup

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. Click the Logs tab and toggle on the Log Management switch.
  4. In the Edit Log Backup Configuration dialog box, set the parameters.

    In the displayed dialog box, OBS Bucket and IAM Agency are automatically created for log backup. You can change the default value by referring to Table 1.

    +

    If the Log Management function has been enabled for the cluster, you can click on the right of Log Backup Configuration and modify the configuration in the displayed Edit Log Backup Configuration dialog box. For details, see Table 1.

    + +
    + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for configuring log backup

    Parameter

    +

    Description

    +

    Remarks

    +

    OBS Bucket

    +

    Select an OBS bucket from the drop-down list for storing logs. You can also click Create Bucket on the right to create an OBS bucket.

    +

    The OBS bucket and the cluster must be in the same region.

    +
    NOTE:

    To let an IAM user access an OBS bucket, you need to grant the GetBucketStoragePolicy, GetBucketLocation, ListBucket, and ListAllMyBuckets permissions to the user.

    +
    +

    Backup Path

    +

    Storage path of logs in the OBS bucket

    +
    The backup path configuration rules are as follows:
    • The backup path cannot contain the following characters: \:*?"<>|
    • The backup path cannot start with a slash (/).
    • The backup path cannot start or end with a period (.).
    • The total length of the backup path cannot exceed 1,023 characters.
    +
    +

    IAM Agency

    +

    IAM agency authorized by the current account for CSS to access or maintain data stored in the OBS bucket. You can also click Create IAM Agency on the right to create an IAM agency.

    +

    The IAM agency must meet the following requirements:

    +
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • Mandatory policies: Tenant Administrator
    +
    +
    +
  5. Back up logs.
    • Automatically backing up logs

      Click the icon on the right of Auto Backup to enable the auto backup function.

      +

      After the automatic backup function is enabled, set the backup start time in the Configure Auto Backup dialog box. When the scheduled time arrives, the system will back up logs automatically.

      +

      After the Automatic Snapshot Creation function is enabled, you can click on the right of the parameter to change the backup start time.

      +
    • Manually backing up logs

      On the Log Backup tab page, click Back Up. On the displayed page, click Yes to start backup.

      +

      If Task Status in the log backup list is Successful, the backup is successful.

      +

      All logs in the cluster are copied to a specified OBS path. You can view or download log files from the path of the OBS bucket.

      +
      +
    +
  6. Search for logs.

    On the Log Search page, select the target node, log type, and log level, and click . The search results are displayed.

    +

    When you search for logs, the latest 10,000 logs are matched. A maximum of 100 logs are displayed.

    +
+
+

Viewing Logs

After backing up logs, you can click Backup Path to go to the OBS console and view the logs.

+

Backed up logs mainly include deprecation logs, run logs, index slow logs, and search slow logs. Table 2 lists the storage types of the OBS bucket.

+ +
+ + + + + + + + + + + + + + + + + + + +
Table 2 Log types

Log Name

+

Description

+

clustername_deprecation.log

+

Deprecation log

+

clustername_index_indexing_slowlog.log

+

Search slow log

+

clustername_index_search_slowlog.log

+

Index slow log

+

clustername.log

+

Elasticsearch run log

+

clustername_access.log

+

Access log

+
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001591616594.html b/docs/css/umn/en-us_topic_0000001591616594.html new file mode 100644 index 00000000..0111cbe0 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591616594.html @@ -0,0 +1,44 @@ + + +

Viewing the Default Plugin List

+

CSS clusters have default plug-ins. You can view the default plugin information on the console or Kibana.

+

Viewing Plugins on the Console

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. Click the target cluster name and go to the Cluster Information page of the cluster.
  3. Click the Plugins tab.
  4. On the Default tab page, view default plugins supported by the current version.
+
+

Viewing Plugins on the Kibana

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters. Locate the target cluster and click Access Kibana in the Operation column to log in to OpenSearch Dashboard.
  3. Go to Dev Tools and run the following command to view the cluster plugin information:
    GET _cat/plugins?v
    +

    The following is an example of the response body:

    +
    name                 component                            version
    +css-3657-ess-esn-1-1 analysis-dynamic-synonym             1.3.6
    +css-3657-ess-esn-1-1 analysis-icu                         1.3.6
    +css-3657-ess-esn-1-1 analysis-ik                          1.3.6
    +css-3657-ess-esn-1-1 analysis-kuromoji                    1.3.6
    +css-3657-ess-esn-1-1 analysis-logtxt                      1.0.0
    +css-3657-ess-esn-1-1 analysis-nori                        1.3.6
    +css-3657-ess-esn-1-1 analysis-pinyin                      1.3.6
    +css-3657-ess-esn-1-1 analysis-stconvert                   1.3.6
    +css-3657-ess-esn-1-1 hpack                                2.0.0
    +css-3657-ess-esn-1-1 ingest-attachment                    1.3.6
    +css-3657-ess-esn-1-1 obs-store-plugin                     1.3.6
    +css-3657-ess-esn-1-1 opensearch-alerting                  1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-anomaly-detection         1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-asynchronous-search       1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-cross-cluster-replication 1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-index-management          1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-job-scheduler             1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-knn                       1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-ml                        1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-observability             1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-performance-analyzer      1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-reports-scheduler         1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-security                  1.3.6.0
    +css-3657-ess-esn-1-1 opensearch-sql                       1.3.6.0
    +css-3657-ess-esn-1-1 repository-obs                       1.3.6
    +

    name indicates the cluster node name, component indicates the plugin name, and version indicates the plugin version.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001591776270.html b/docs/css/umn/en-us_topic_0000001591776270.html new file mode 100644 index 00000000..750954bb --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591776270.html @@ -0,0 +1,39 @@ + + +

Switching Hot and Cold Data

+

CSS provides you with cold data nodes. You can store data that requires query response in seconds on hot data nodes with high performance and store historical data that requires query response in minutes on cold data nodes with large capacity and low specifications.

+
  • When creating a cluster, you need to configure data nodes. After cold data nodes are selected, the original data nodes become hot data nodes.
  • You can enable the cold data node, master node, and client node functions at the same time.
  • You can increase nodes and expand storage capacity of cold data nodes. The maximum storage capacity is determined by the node specifications. Local disks do not support storage capacity expansion.
+
+

Switching Between Hot and Cold Data

If you enable cold data nodes when creating a cluster, the cold data nodes are labeled with cold. Other data nodes become hot nodes and are labeled with hot. You can specify indexes to allocate data to cold or hot nodes.

+

You can configure a template to store indexes on the specified cold or hot node.

+

Log in to the Kibana Console page of the cluster, store the indexes starting with myindex on the cold node. In this way, you can use a template to store the myindex* date on the cold data node.

+
Run the following command to create a template:
PUT _template/test
+{
+  "order": 1,
+  "index_patterns": "myindex*",
+  "settings": {
+    "refresh_interval": "30s",
+    "number_of_shards": "3",
+    "number_of_replicas": "1",
+    "routing.allocation.require.box_type": "cold"
+  }
+}
+
+

You can perform operations on the created index.

+
PUT myindex/_settings   
+ { 
+        "index.routing.allocation.require.box_type": "cold"
+    }
+

You can cancel the configurations of hot and cold data nodes.

+
PUT myindex/_settings    
+{ 
+        "index.routing.allocation.require.box_type": null
+    }
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001591776274.html b/docs/css/umn/en-us_topic_0000001591776274.html new file mode 100644 index 00000000..13769738 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001591776274.html @@ -0,0 +1,18 @@ + + +

Logging In to the OpenSearch Dashboards

+

Prerequisites

An OpenSearch cluster has been created.

+
+

Procedure

  • Logging in to the console
    1. Log in to the CSS management console.
    2. In the navigation pane, choose Clusters > OpenSearch.
    3. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column to go to the OpenSearch login page.
      • Non-security cluster: The OpenSearch Dashboards console is displayed.
      • Security cluster: Enter the username and password on the login page and click Log In to go to the OpenSearch console. The default username is admin and the password is the one specified during cluster creation.
        Figure 1 Logging in to OpenSearch
        +
      +
    4. After the login is successful, access the cluster and perform related operations on the OpenSearch Dashboards.
    +
  • Logging in using an EIP

    If you have enabled Kibana public access during cluster creation, you can use the Kibana public IP address to log in to the cluster. For details, see .

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001599872681.html b/docs/css/umn/en-us_topic_0000001599872681.html new file mode 100644 index 00000000..4c982a3d --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001599872681.html @@ -0,0 +1,385 @@ + + +

Monitoring Metrics

+

Function

This topic describes CSS metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can search for the monitoring metrics and alarms generated for CSS by using the Cloud Eye console or calling APIs.

+
+

Namespace

SYS.ES

+
+

Monitoring Metrics

  • Table 1 describes the monitoring metrics of CSS clusters.
  • Monitored object: Cloud service nodes of CSS clusters
  • Monitoring period (original metric): 1 minute
+

Accumulated value: The value is accumulated from the time when a node is started. After the node is restarted, the value is reset to zero and accumulated again.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 CSS metrics

Metric ID

+

Metric

+

Description

+

Value Range

+

Monitored Target

+

Monitoring Interval (Raw Data)

+

jvm_heap_usage

+

JVM Heap Usage

+

JVM heap memory usage of a node.

+

Unit: %

+

0-100%

+

CSS cluster - cloud service node

+

1 minute

+

cpu_usage

+

CPU Usage

+

CPU usage.

+

Unit: %

+

0-100%

+

CSS cluster - cloud service node

+

1 minute

+

load_average

+

Average Load

+

Average number of queuing tasks per minute on a node

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

open_file_descriptors

+

Open File Descriptors

+

Number of opened file descriptors on a node

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

max_file_descriptors

+

Max. Allowed File Descriptors

+

Maximum number of allowed file descriptors

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_write_queue

+

Tasks in Write Queue

+

Number of job queues in a write thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_search_queue

+

Tasks in Search Queue

+

Number of job queues in a search thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_force_merge_queue

+

Tasks in ForceMerge Queue

+

Number of job queues in a force merge thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_write_rejected

+

Rejected Tasks in Write Queue

+

Number of rejected jobs in a write thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_search_rejected

+

Rejected Tasks in Search Queue

+

Number of rejected jobs in a search thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_force_merge_rejected

+

Rejected Tasks in ForceMerge Queue

+

Number of rejected jobs in a force merge thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_write_threads

+

Size of Write Thread Pool

+

Size of a write thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_search_threads

+

Size of Search Thread Pool

+

Size of a search thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

thread_pool_force_merge_threads

+

Size of ForceMerge Thread Pool

+

Size of a force merge thread pool

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

free_fs_size

+

Available Size of File Systems

+

Available size of file systems in a CSS cluster

+

Unit: byte

+

≥ 0 bytes

+

CSS cluster - cloud service node

+

1 minute

+

total_fs_size

+

Total Size of File Systems

+

Total size of file systems in a CSS cluster

+

Unit: byte

+

≥ 0 bytes

+

CSS cluster - cloud service node

+

1 minute

+

jvm_old_gc_count

+

Total GCs of Old-Generation JVM

+

Number of old-generation garbage collection times

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

jvm_old_gc_time

+

Total GC Duration of Old-Generation JVM

+

Old-generation garbage collection duration.

+

Unit: ms

+

≥ 0 ms

+

CSS cluster - cloud service node

+

1 minute

+

jvm_young_gc_count

+

Total GCs of Young-Generation JVM

+

Number of young-generation garbage collection times

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

jvm_young_gc_time

+

GC Duration of Young-Generation JVM

+

Young-generation garbage collection duration.

+

Unit: ms

+

≥ 0 ms

+

CSS cluster - cloud service node

+

1 minute

+

mem_free_in_bytes

+

Available Memory

+

Unused memory space of a node.

+

Unit: byte

+

≥ 0 bytes

+

CSS cluster - cloud service node

+

1 minute

+

mem_free_percent

+

Available Memory Percentage

+

Percentage of unused memory space on a node.

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

mem_used_in_bytes

+

Used Memory

+

Used memory space of a node.

+

Unit: byte

+

≥ 0 bytes

+

CSS cluster - cloud service node

+

1 minute

+

current_opened_http_count

+

Currently Open HTTP Connections

+

Number of HTTP connections on a node

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+

total_opened_http_count

+

Total Open HTTP Connections

+

Total number of HTTP connections on a node

+

≥ 0

+

CSS cluster - cloud service node

+

1 minute

+
+
+
+

Dimension

+
+ + + + + + + +
Table 2 Dimension description

Key

+

Value

+

cluster_id

+

CSS cluster

+
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001633220693.html b/docs/css/umn/en-us_topic_0000001633220693.html new file mode 100644 index 00000000..0d57b182 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001633220693.html @@ -0,0 +1,54 @@ + + +

Manually Creating a Snapshot

+

You can manually create a snapshot at any time to back up all data or data of specified indexes.

+

Prerequisites

To use the function of creating or restoring snapshots, the account or IAM user logging in to the CSS management console must have both of the following permissions:

+
  • Tenant Administrator for project OBS in region Global service
  • CSS Administrator in the current region
+
+

Precautions

  • When creating a backup for the first time, you are advised to back up data of all indexes.
  • Cluster snapshots will increase the CPU usage and disk I/O. You are advised to take cluster snapshots during off-peak hours.
  • Before creating a snapshot, you need to perform basic configurations, including configuring the OBS bucket for storing snapshots and IAM agency used for security authentication.
  • If there are available snapshots in the snapshot list when you configure the OBS bucket for storing cluster snapshots for the first time, you cannot change the bucket for snapshots that are subsequently created automatically or manually. Exercise caution when you configure the OBS bucket.
  • If snapshots have been stored in the OBS bucket, the OBS bucket cannot be changed. You can disable the snapshot function, enable the snapshot function, and specify a new OBS bucket. After you disable the snapshot function, you cannot use previously created snapshots to restore the cluster.
  • If a cluster is in the Unavailable status, you can use the cluster snapshot function only to restore clusters and view existing snapshot information.
  • During backup and restoration of a cluster, you can perform only certain operations, including scaling out, accessing Kibana, viewing metric, and deleting other snapshots of clusters. However, you cannot perform the following operations: restarting or deleting the cluster, deleting a snapshot that is in the Creating or Restoring status, and creating or restoring another snapshot. If a snapshot is being created or restored for a cluster, any automatic snapshot creation task initiated for the cluster will be canceled.
  • The first snapshot of a cluster is a full snapshot, and subsequent snapshots are incremental snapshots. CSS snapshot files depend on each other.
+
+

Manually Creating a Snapshot

  1. In the CSS navigation pane on the left, click Clusters.
  2. On the Clusters page that is displayed, click the name of the target cluster. In the navigation pane on the left, choose Cluster Snapshots.
  3. On the displayed Cluster Snapshots page, click the icon to the right of Cluster Snapshot to enable the cluster snapshot function.
  4. Enable the cluster snapshot function. OBS buckets and IAM agencies are automatically created to store snapshots. The automatically created OBS bucket and IAM agency are displayed on the page. You can also click on the right of Basic Configuration to edit the configuration. To ensure the security of snapshot data, you can select a key to encrypt the snapshot. +
    + + + + + + + + + + + + + +
    Table 1 Cluster snapshot parameter

    Parameter

    +

    Description

    +

    OBS bucket

    +

    Select an OBS bucket for storing snapshots from the drop-down list box. You can also click Create Bucket on the right to create an OBS bucket. For details, see Creating a Bucket.

    +

    The created or existing OBS bucket must meet the following requirements:

    +
    • Storage Class is Standard or Warm.
    +

    IAM Agency

    +

    IAM agency authorized by the current account for CSS to access or maintain data stored in OBS You can also click Create IAM Agency on the right to create an IAM agency. For details, see Creating an Agency.

    +

    The created or existing IAM agency must meet the following requirements:

    +
    • Agency Type must be Cloud service.
    • Set Cloud Service to CSS.
    • The agency must have the Tenant Administrator permission for the OBS(S3) project in OBS(S3).
    +

    Snapshot Encryption

    +

    Whether to enable the snapshot encryption function. Enabling the snapshot encryption function ensures the security of your snapshot data.

    +

    After the snapshot encryption function is enabled, select a key from the Key Name drop-down list. If no key is available, click Create/View Key to go to the KMS management console and create or modify a key. For details, see Creating a CMK.

    +
    • You cannot use default master keys whose aliases end with /default in KMS to encrypt snapshots.
    • If a snapshot has been stored in the OBS bucket, you cannot modify the parameters used for encrypting the snapshot.
    • If the key used for encryption is in the Pending deletion or disable status, you cannot perform backup and restoration operations on the cluster. Specifically, you cannot create new snapshots for the cluster, or use existing snapshots to restore clusters. In this case, switch to the KMS management console and change the status of the target key to enable so that backup and restore operations are allowed on the cluster.
    • If you delete the key used for encryption, you cannot perform backup and restore operations on the cluster. In addition, you cannot restore the deleted key. Therefore, exercise caution when deleting a key. If the key is deleted or is in the Pending deletion or disable state, automatic snapshot creation is allowed based on the configured snapshot policy. However, all automatic snapshot creation tasks will fail, and the failed tasks are displayed in the failed task list in the Failed Tasks dialog box. In such scenario, you are advised to disable the automatic snapshot creation function.
    +
    +
    +
    Figure 1 Edit Basic configuration
    +
  5. After basic configurations are completed, click Create.
    • Name indicates the name of the manually created snapshot, which can contain 4 to 64 characters and must start with a lowercase letter. Only lowercase letters, digits, hyphens (-), and underscores (_) are allowed. For snapshots you create manually, you can specify the snapshot name. The system will not automatically add the time information to the snapshot name.
    • Index: Enter an index name. You can select an index for backup. Use commas (,) to separate multiple indexes. Uppercase letters, spaces, and the following special characters are not allowed: "\<|>/? If you do not specify this parameter, data of all indexes in the cluster is backed up by default. You can use the asterisk (*) to back up data of certain indices. For example, if you enter index*, then data of indices with the name prefix of index will be backed up.

      Run the GET /_cat/indices command in Kibana to query the names of all indexes in the cluster.

      +
    • Description: indicates the description of the created snapshot. The value contains 0 to 256 characters, and certain special characters (<>) are not allowed.
    +
    Figure 2 Create snapshot
    +
  6. Click OK.

    After the snapshot is created, it will be displayed in the snapshot list. The status Available indicates that the snapshot is created successfully. along with manually created snapshots. You can distinguish them by the Snapshot Type setting. In the upper right corner of the snapshot list, enter the keyword of the snapshot name or snapshot ID to search for the desired snapshots.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001633221741.html b/docs/css/umn/en-us_topic_0000001633221741.html new file mode 100644 index 00000000..abf173df --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001633221741.html @@ -0,0 +1,23 @@ + + +

Index Backup and Restoration

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001633303977.html b/docs/css/umn/en-us_topic_0000001633303977.html new file mode 100644 index 00000000..a2702838 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001633303977.html @@ -0,0 +1,12 @@ + + +

Backup and Restoration Overview

+

You can back up index data in clusters. If data loss occurs or you want to retrieve data of a specified duration, you can restore the index data. Index backup is implemented by creating cluster snapshots. When creating a backup for the first time, you are advised to back up data of all indexes.

+
  • Managing Automatic Snapshot Creation: Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and set the automatic snapshot creation policy.
  • Manually Creating a Snapshot: You can manually create a snapshot at any time to back up all data or data of specified indexes.
  • Restoring Data: You can use existing snapshots to restore the backup index data to a specified cluster.
  • Deleting a Snapshot: Delete snapshots you do not require and release resources.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001633949601.html b/docs/css/umn/en-us_topic_0000001633949601.html new file mode 100644 index 00000000..a41a203a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001633949601.html @@ -0,0 +1,28 @@ + + +

OpenSearch

+

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001637436445.html b/docs/css/umn/en-us_topic_0000001637436445.html new file mode 100644 index 00000000..22aaf0ec --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001637436445.html @@ -0,0 +1,35 @@ + + + +

Scaling In/Out a Cluster

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001640645481.html b/docs/css/umn/en-us_topic_0000001640645481.html new file mode 100644 index 00000000..402199e2 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640645481.html @@ -0,0 +1,226 @@ + + +

Scenario Description

+

CSS integrates shared load balancers and allows you to bind public network access and enable the VPC Endpoint service. Dedicated load balancers provide more functions and higher performance than shared load balancers. This section describes how to connect a cluster to a dedicated load balancer.

+
Advantages of connecting a cluster to a dedicated load balancer:
  • A non-security cluster can also use capabilities of the Elastic Load Balance (ELB) service.
  • You can use customized certificates for HTTPS bidirectional authentication.
  • Seven-layer traffic monitoring and alarm configuration are supported, allowing you to view the cluster status at any time.
+
+

There are eight service forms for clusters in different security modes to connect to dedicated load balancers. Table 1 describes the ELB capabilities for the eight service forms. Table 2 describes the configurations for the eight service forms.

+

You are not advised connecting a load balancer that has been bound to a public IP address to a non-security cluster. Access from the public network using such a load balancer may bring security risks because non-security clusters can be accessed over HTTP without security authentication.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 ELB capabilities for different clusters

Security Mode

+

Service Form Provided by ELB for External Systems

+

ELB Load Balancing

+

ELB Traffic Monitoring

+

ELB Two-way Authentication

+

Non-security

+

No authentication

+

Supported

+

Supported

+

Not supported

+

One-way authentication

+

Two-way authentication

+

Supported

+

Supported

+

Supported

+

Security mode + HTTP

+

Password authentication

+

Supported

+

Supported

+

Not supported

+

One-way authentication + Password authentication

+

Two-way authentication + Password authentication

+

Supported

+

Supported

+

Supported

+

Security mode + HTTPS

+

One-way authentication + Password authentication

+

Two-way authentication + Password authentication

+

Supported

+

Supported

+

Supported

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Configuration for interconnecting different clusters with ELB

Security Mode

+

Service Form Provided by ELB for External Systems

+

ELB Listener

+

Backend Server Group

+

Frontend Protocol

+

Port

+

SSL Parsing Mode

+

Backend Protocol

+

Health Check Port

+

Health Check Path

+

Non-security

+

No authentication

+

HTTP

+

9200

+

No authentication

+

HTTP

+

9200

+

/

+

One-way authentication

+

HTTPS

+

9200

+

One-way authentication

+

HTTP

+

9200

+

Two-way authentication

+

HTTPS

+

9200

+

Two-way authentication

+

HTTP

+

9200

+

Security mode + HTTP

+

Password authentication

+

HTTP

+

9200

+

No authentication

+

HTTP

+

9200

+

/_opendistro/_security/health

+

One-way authentication + Password authentication

+

HTTPS

+

9200

+

One-way authentication

+

HTTP

+

9200

+

Two-way authentication + Password authentication

+

HTTPS

+

9200

+

Two-way authentication

+

HTTP

+

9200

+

Security mode + HTTPS

+

One-way authentication + Password authentication

+

HTTPS

+

9200

+

One-way authentication

+

HTTPS

+

9200

+

Two-way authentication + Password authentication

+

HTTPS

+

9200

+

Two-way authentication

+

HTTPS

+

9200

+
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001640645485.html b/docs/css/umn/en-us_topic_0000001640645485.html new file mode 100644 index 00000000..0a01787a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640645485.html @@ -0,0 +1,14 @@ + + +

Deleting a Snapshot

+

If you no longer need a snapshot, delete it to release storage resources. If the automatic snapshot creation function is enabled, snapshots that are automatically created cannot be deleted manually, and the system automatically deletes these snapshots on the half hour after the time specified by Retention Period (days). If you disable the automatic snapshot creation function while retaining the automated snapshots, then you can manually delete them later. If you do not manually delete the automatically created snapshots and enable the automatic snapshot creation function again, then all snapshots with Snapshot Type set to Automated in the snapshot list of the cluster can only be automatically deleted by the system.

+

After a snapshot is deleted, its data cannot be restored. Exercise caution when deleting a snapshot.

+
+
  1. In the snapshot list, locate the snapshot that you want to delete.
  2. Click Delete in the Operation column. In the dialog box that is displayed, confirm the snapshot information and click OK.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001640654793.html b/docs/css/umn/en-us_topic_0000001640654793.html new file mode 100644 index 00000000..50c4b71e --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640654793.html @@ -0,0 +1,40 @@ + + +

Adding Master/Client Nodes

+

If workloads on the data plane of a cluster increase, you can add master or client nodes as needed. Services are not interrupted while they are added.

+

Prerequisites

The cluster is in the Available state and has no ongoing task.

+
+

Constraints

  • If a cluster already has master and client nodes, the Add Master/Client Node tab is not displayed on the Modify Configuration page. In this case, you need to add the master or client nodes by referring to Scaling Out a Cluster.
  • When you add master or client nodes, the number of nodes that can be configured varies depending on the node type. For details, see Table 1. +
    + + + + + + + + + + +
    Table 1 Number of nodes in different types

    Node Type

    +

    Number

    +

    Master node

    +

    An odd number ranging from 3 to 9

    +

    Client node

    +

    1 to 32

    +
    +
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Add Master/Client Node tab.
  5. Select the target node type and set the node specifications, quantity, and storage.
    • Master and client nodes cannot be added at the same time.
    • If a cluster already has a master or client node, you can only add nodes of the other type.
    +
  6. Click Next.
  7. Confirm the information and click Submit.

    Return to the cluster list page. The Task Status of the cluster is Scaling out.

    +
    • If you added a master node and Cluster Status changed to Available, the master node has been successfully added.
    • If you added a client node and Cluster Status changed to Available, the client node has been added. You can restart data nodes and cold data nodes to shut down Cerebro and Kibana processes on the nodes.
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001640658697.html b/docs/css/umn/en-us_topic_0000001640658697.html new file mode 100644 index 00000000..4d61845e --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640658697.html @@ -0,0 +1,17 @@ + + +

Managing Indexes

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001640658701.html b/docs/css/umn/en-us_topic_0000001640658701.html new file mode 100644 index 00000000..808e83d4 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640658701.html @@ -0,0 +1,86 @@ + + +

Accessing a Cluster from a Kibana Public Network

+

For CSS clusters that have security mode enabled, you can enable Kibana public access. After the configuration is complete, an IP address will be provided to access Kibana of this cluster over the Internet.

+

You can configure Kibana public access during cluster creation, or after a cluster in security mode is created.

+

The whitelist for Kibana public network access depends on the ELB whitelist. After you updated the whitelist, the new settings take effect immediately for new connections. For existing persistent connections using the IP addresses that have been removed from the whitelist, the new settings take effect about 1 minute after these connections are stopped.

+
+

Configuring Kibana Public Access When Creating a Cluster

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner. The Create Cluster page is displayed.
  3. On the Create Cluster page, enable Security Mode.
  4. Set Advanced Settings to Custom, enable Kibana Public Access, and set parameters. +
    + + + + + + + + + + + + + +
    Table 1 Kibana public access parameters

    Parameter

    +

    Description

    +

    Bandwidth

    +

    Bandwidth for accessing Kibana with the public IP address

    +

    Value range: 1 to 100

    +

    Unit: Mbit/s

    +

    Access Control

    +

    If you disable this function, all IP addresses can access Kibana through the public IP address. If you enable this function, only IP addresses or IP address in the whitelist can access Kibana through the public IP address.

    +

    Whitelist

    +

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    +

    You are advised to enable this function.

    +
    +
    +

    After the cluster is created, click the cluster name to go to the Basic Information page. On the Kibana Public Access page, you can view the Kibana public IP address.

    +
+
+

Configuring Kibana Public Access for an Existing Cluster

You can enable, disable, modify, and view Kibana public access for an existing cluster that has security mode enabled.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  4. Click the Kibana Public Access tab. Turn on the Kibana Public Access switch to enable the Kibana public access function.
  5. On the displayed page, set parameters. +
    + + + + + + + + + + + + + +
    Table 2 Kibana public access parameters

    Parameter

    +

    Description

    +

    Bandwidth

    +

    Bandwidth for accessing Kibana with the public IP address

    +

    Value range: 1 to 100

    +

    Unit: Mbit/s

    +

    Access Control

    +

    If you disable this function, all IP addresses can access Kibana through the public IP address. If you enable this function, only IP addresses or IP address in the whitelist can access Kibana through the public IP address.

    +

    Whitelist

    +

    IP address or IP address range allowed to access a cluster. Use commas (,) to separate multiple addresses. This parameter can be configured only when Access Control is enabled.

    +

    You are advised to enable this function.

    +
    +
    +
  6. After you set the parameters, click OK.
+
+

Modifying Kibana Public Access

For clusters configured Kibana public access, you can modify its bandwidth and access control or disable this function.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  4. Click the Kibana Public Access tab to modify the Kibana public access configuration.
    • Modifying bandwidth

      Click Modify on the right of Bandwidth. On the Modify Bandwidth page, modify the bandwidth and click OK.

      +
    • Modifying access control

      Click Modify on the right of Access Control. On the Modify Access Control page, set Access Control and Whitelist, and click OK.

      +
    • Disabling Kibana public access

      Toggle off the Kibana Public Access switch.

      +
    +
+
+

Accessing OpenSearch Dashboard with the Public IP Address

After configuring Kibana public access, you will obtain a public IP address that you can use to access OpenSearch Dashboard of this cluster.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster.
  4. Click the Kibana Public Access tab to obtain the Kibana public IP address.
  5. Use this IP address to access OpenSearch Dashboard of this cluster through the Internet.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001640764229.html b/docs/css/umn/en-us_topic_0000001640764229.html new file mode 100644 index 00000000..8e38c94b --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640764229.html @@ -0,0 +1,393 @@ + + +

Connecting to a Dedicated Load Balancer

+

This section describes how to connect a CSS cluster to a dedicated load balancer.

+

(Optional) Preparing a Self-signed Certificate

If the target ELB listener uses the HTTP protocol, skip this step.

+

Prepare and upload a self-signed certificate.

+

You are advised to use a certificate purchased in Cloud Certificate Manager (CCM) or issued by an authoritative organization.

+
+
  1. Log in to a Linux client where the OpenSSL tool and JDK are installed.
  2. Run the following commands to create a self-signed certificate:
     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
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    mkdir ca
    +mkdir server
    +mkdir client
    +
    +#Use OpenSSL to create a CA certificate.
    +cd ca
    +#Create the OpenSSL configuration file ca_cert.conf for the CA certificate.
    +cat >ca_cert.conf <<EOF
    +[ req ]
    +distinguished_name     = req_distinguished_name
    +prompt                 = no
    +
    +[ req_distinguished_name ]
    + O                      = ELB
    +EOF
    +#Create private key file ca.key for the CA certificate.
    +openssl genrsa -out ca.key 2048
    +#Create the CSR file ca.csr for the CA certificate.
    +openssl req -out ca.csr -key ca.key -new -config ./ca_cert.conf
    +#Create a self-signed CA certificate ca.crt.
    +openssl x509 -req -in ca.csr -out ca.crt -sha1 -days 5000 -signkey ca.key
    +#Convert the CA certificate format to p12.
    +openssl pkcs12 -export -clcerts -in ca.crt -inkey ca.key -out ca.p12
    +#Convert the CA certificate format to JKS.
    +keytool -importkeystore -srckeystore ca.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore ca.jks
    +
    +
    +#Use the CA certificate to issue a server certificate.
    +cd ../server
    +#Create the OpenSSL configuration file server_cert.conf for the server certificate. Change the CN field to the domain name or IP address of the server as required.
    +cat >server_cert.conf <<EOF
    +[ req ]
    +distinguished_name     = req_distinguished_name
    +prompt                 = no
    +
    +[ req_distinguished_name ]
    + O                      = ELB
    + CN                     = 127.0.0.1
    +EOF
    +#Create the private key file server.key for the server certificate.
    +openssl genrsa -out server.key 2048
    +#Create the CSR request file server.csr for the server certificate.
    +openssl req -out server.csr -key server.key -new -config ./server_cert.conf
    +#Use the CA certificate to issue the server certificate server.crt.
    +openssl x509 -req -in server.csr -out server.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key
    +#Convert the server certificate format to p12.
    +openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
    +#Convert the service certificate format to JKS.
    +keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore server.jks
    +
    +
    +#Use the CA certificate to issue a client certificate.
    +cd ../client
    +#Create the OpenSSL configuration file client_cert.conf for the client certificate. Change the CN field to the domain name or IP address of the server as required.
    +cat >client_cert.conf <<EOF
    +[ req ]
    +distinguished_name     = req_distinguished_name
    +prompt                 = no
    +
    +[ req_distinguished_name ]
    +O                      = ELB
    +CN                     = 127.0.0.1
    +EOF
    +#Create private key client.key for the client certificate.
    +openssl genrsa -out client.key 2048
    +#Create the CSR file client.csr for the client certificate.
    +openssl req -out client.csr -key client.key -new -config ./client_cert.conf
    +#Use the CA certificate to issue the client certificate client.crt.
    +openssl x509 -req -in client.csr -out client.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key
    +#Convert the client certificate to a p12 file that can be identified by the browser.
    +openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
    +#Convert the client certificate format to JKS.
    +keytool -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore client.jks
    +
    + +
    +
  3. Upload the self-signed certificate. For details, see .
+
+

Creating a Dedicated Load Balancer

  1. Log in to the ELB management console.
  2. Create a dedicated load balancer. For details, see Creating a Dedicated Load Balancer. Table 1 describes the parameters required for connecting a CSS cluster with a dedicated load balancer. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for interconnecting a CSS cluster with a dedicated load balancer

    Parameter

    +

    Description

    +

    Example

    +

    Type

    +

    Load balancer type. Select Dedicated.

    +

    Dedicated

    +

    Billing Mode

    +

    Billing mode of the dedicated load balancer.

    +

    Pay-per-use

    +

    Region

    +

    Region where the CSS cluster is located.

    +

    -

    +

    IP as Backend Servers

    +

    A CSS cluster can be connected only after the cross-VPC backend is enabled.

    +

    Enabled

    +

    Network Type

    +

    Type of the network used by the load balancer to provide services for external systems.

    +

    Private IPv4 network

    +

    VPC

    +

    VPC where the load balancer works. This parameter is mandatory no matter which network type is selected.

    +

    Select the VPC of the CSS cluster.

    +

    -

    +

    Subnet

    +

    Subnet where the load balancer is to be created. This parameter is mandatory no matter which network type is selected.

    +

    Select the subnet of the CSS cluster.

    +

    -

    +

    Specifications

    +

    You are advised to select Application load balancing (HTTP/HTTPS), which provides better functions and performance.

    +

    Application load balancing (HTTP/HTTPS)

    +

    Small I

    +
    +
    +
+
+

Interconnecting with a Load Balancer

A cluster in security mode with HTTPS access enabled does not support HTTP protocol authentication. If you need to enable HTTP protocol authentication, disable the security mode of the cluster.

+

Before changing the security mode, disable load balancing. After the security mode is changed, enable load balancing.

+
+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. On the Clusters page, select the cluster you want to connect to the load balancer and click the cluster name. The Cluster Information page is displayed.
  4. In the navigation pane, choose Load Balancing. Enable load balancing and configure basic load balancing information.
    • Load Balancer: Select a created load balancer. You can also click Create Load Balancer to create one.
    • Agency: Select an agency name. If no agency is available, click Create Agency to create one. The selected agency must have the ELB Administrator and ELB FullAccess permissions.
    +
  5. Click OK. The listener configuration page is displayed.
  6. In the Listener Configuration area, click to configure listener information. +
    + + + + + + + + + + + + + + + + + + + +
    Table 2 Listener configuration information

    Parameter

    +

    Description

    +

    Frontend Protocol

    +

    The protocol used by the client and listener to distribute traffic.

    +

    Select a protocol as required.

    +

    Frontend Port

    +

    The port used by the client and listener to distribute traffic.

    +

    For example, 9200. You need to specify this parameter as required.

    +

    SSL Authentication

    +

    Authentication mode for the client to access the server.

    +

    Select a parsing mode as required.

    +

    Server Certificate

    +

    The server certificate is used for SSL handshake negotiation. The certificate content and private key must be provided.

    +

    When SSL Authentication is set to Two-way authentication, this parameter is mandatory.

    +

    CA Certificate

    +

    Also called client CA public key certificate. It is used to verify the issuer of a client certificate.

    +

    When the HTTPS two-way authentication is enabled, an HTTPS connection can be established only when the client can provide the certificate issued by a specified CA.

    +

    This parameter is mandatory only when the Frontend Protocol is set to HTTPS.

    +
    +
    +
  7. (Optional) In the Connection Mode area, you can click Settings next to Access Control to configure the IP addresses or network segments that are allowed to access the system. If you do not set the IP addresses or network segments, all IP addresses are allowed to access the system by default.
+
In the Health Check area, you can view the health check result of each node IP address. The following table describes the health check results. +
+ + + + + + + + + + +

Health Check Result

+

Description

+

Normal

+

The IP address of the node is properly connected.

+

Abnormal

+

The node IP address is connected and unavailable.

+
+
+
+
+

Accessing a Cluster Using the Curl Command

Run the following commands to check whether the dedicated load balancer can be connected to a cluster.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Commands for accessing different clusters

Security Mode

+

Service Form Provided by ELB for External Systems

+

Curl Command for Accessing a Cluster

+

Non-security

+

No authentication

+
curl  http://IP:9200
+

One-way authentication

+
curl -k --cert ./client.crt --key ./client.key https://IP:9200
+

Two-way authentication

+
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200
+

Security mode + HTTP

+

Password authentication

+
curl  http://IP:9200 -u user:pwd
+

One-way authentication + Password authentication

+
curl -k --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
+

Two-way authentication + Password authentication

+
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
+

Security mode + HTTPS

+

One-way authentication + Password authentication

+
curl -k --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
+

Two-way authentication + Password authentication

+
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://IP:9200 -u user:pwd
+
+
+ +
+ + + + + + + + + + + + + +
Table 4 Variables

Variable

+

Description

+

IP

+

ELB IP address

+

user

+

Username for accessing the CSS cluster

+

pwd

+

Password of the user

+
+
+

If the Elasticsearch cluster information is returned, the connection is successful. For example, if a security cluster using the HTTPS protocol is connected to a load balancer using two-way authentication, the information shown in Figure 1 is returned.

+
Figure 1 Accessing a cluster
+
+
+ + diff --git a/docs/css/umn/en-us_topic_0000001640773493.html b/docs/css/umn/en-us_topic_0000001640773493.html new file mode 100644 index 00000000..f9871503 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640773493.html @@ -0,0 +1,29 @@ + + +

Overview

+

You can scale in or out a cluster and change cluster specifications. In this way, you can improve cluster efficiency and reduce O&M costs.

+
Scaling Out a Cluster
  • If a data node (ess) processes many data writing and querying requests and responds slowly, you can expand its storage capacity to improve its efficiency. If some nodes turn unavailable due to the excessive data volume or misoperations, you can add new nodes to ensure the cluster availability.
  • Cold data nodes (ess-cold) are used to share the workload of data nodes. To prevent cold data loss, you can expand the storage capacity of the cold data node or add new ones.
+
+
Changing Specifications
  • If the allocation of new indexes or shards takes too long or the node coordination and scheduling are inefficient, you can change the master node (ess-master) specifications.
  • If too many tasks need to be distributed or too many results have been aggregated, you can change the client node (ess-client) specifications.
  • If the speed of data writing and query decreases suddenly, you can change the data node (ess) specifications.
  • If cold data query becomes slow, you can change the cold node (ess-cold) specifications.
+
+
Scaling in a Cluster
  • If a cluster can process existing data without fully using its resources, you can scale in the cluster to reduce costs.
+
+
Removing Specified Nodes
  • If a cluster can process existing data without fully using its nodes, you can remove one or more specified nodes from the cluster to reduce costs.
+
+
Replacing a Specified Node
  • If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.
+
+
Adding Master/Client Nodes
  • If the workloads on the data plane of a cluster increase, you can dynamically scale the cluster by adding master/client nodes.
+
+

Changing the Security Mode

+
After a cluster is created, its security mode can be changed in the following methods:
  • Change a non-security cluster to a security cluster that uses HTTP or HTTPS protocol.
  • Change a security cluster that uses HTTP or HTTPS protocol to a non-security cluster.
  • Change the protocol of a security cluster.
+
+

Changing AZs

+
You can Add AZ or Migrate AZ.
  • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster to improve cluster availability.
  • Migrate AZ: Completely migrate data from the current AZ to another AZ that has sufficient resources.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001640773505.html b/docs/css/umn/en-us_topic_0000001640773505.html new file mode 100644 index 00000000..c6f1e878 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640773505.html @@ -0,0 +1,68 @@ + + +

Changing AZs

+

CSS supports cross-AZ deployment. You can add an AZ to obtain more resources or improve cluster availability, and can migrate your current AZ to one with higher specifications. This section describes how to add or migrate your AZs.

+

Description

You can Add AZ or Migrate AZ.
  • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster to improve cluster availability.
  • Migrate AZ: Completely migrate data from the current AZ to another AZ that has sufficient resources.
+
+
+

Prerequisites

  • Ensure that an AZ with sufficient resources exists.
  • The target cluster is available and has no tasks in progress.
  • Make sure that no non-standard operations have been performed in the cluster. If you have made non-standard modifications, such as modifying return routes, system parameters, and Kibana configurations, these modifications will be lost after the AZ change and your services may be affected.
+
+

Constraints

  • To ensure service continuity, the total number of data nodes and cold data nodes in a cluster must be greater than or equal to 3.
  • During the change, nodes are brought offline one by one and then new nodes are created. Ensure that the disk capacity of other nodes can store all the data of the node after a single node is brought offline.
  • To prevent backup allocation failures after a node is brought offline during the change, ensure that the maximum number of primary and standby index shards of an index can be allocated to the remaining data nodes and cold data nodes. That is, the maximum number of primary and standby shards of an index plus 1 is less than or equal to the total number of data nodes and cold data nodes in the current cluster.
  • You are advised to back up data before the change to prevent data loss caused by upgrade faults.
  • Before a change completes, some nodes may have been moved to a new AZ. In this case, the AZs before and after the change are both displayed. After the change succeeds, the new AZs and their nodes will be displayed properly.
  • When adding AZs, the current AZ must be retained in the change. When adding one or two AZs to a single-AZ cluster, you must change AZs for all nodes at the same time. When adding an AZ to a dual-AZ cluster, you can change AZs for a single type of nodes or all nodes in a cluster at a time. For example, in a cluster using the dual-AZ architecture, you can use the three-AZ architecture for master nodes alone. During HA modification, the nodes with the smallest configurations are modified to rebuild the cluster. After the HA modification is complete, the YML configuration of the nodes that are not modified is also updated. You need to restart the cluster to make the modification take effect.
  • When migrating an AZ, you can select only one target AZ. You can migrate AZs for a single type of nodes or all nodes in a cluster at a time. For example, in a cluster with two AZs, you can migrate the AZ of the master node to the other AZ. After adding AZs, you need to restart the cluster to make the modification take effect.
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. Click the Change AZ tab.
  5. On the Change AZ page, set parameters. +
    + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters for changing AZs

    Parameter

    +

    Description

    +

    Operation Type

    +
    • Add AZ: Add one or two AZs to a single-AZ cluster, or add an AZ to a dual-AZ cluster.

      During HA modification, the nodes with the smallest configurations are modified to rebuild the cluster. After the HA modification is complete, the YML configuration of the nodes that are not modified is also updated. You need to restart the cluster to make the modification take effect.

      +
    • Migrate AZ: Migrate data from one AZ to another.

      After adding AZs, you need to restart the cluster to make the modification take effect.

      +
    +

    Node Type

    +

    Select a type of node or All nodes to change their AZ.

    +
    NOTE:

    When adding one or two AZs to a single-AZ cluster, you can only select All nodes to change AZs for all nodes at a time.

    +
    +

    Current AZ

    +

    Current AZ of a cluster

    +

    Target AZ

    +

    Target AZ.

    +
    • Add AZ: Select up to three AZs, which must include all your current AZs.
    • Migrate AZ: Select only one target AZ, which cannot be your current AZ.
    +

    Agency

    +

    Select an IAM agency to grant the current account the permission to change AZs.

    +

    If no agencies are available, click Create IAM Agency to go to the IAM console and create an agency.

    +
    NOTE:

    The selected agency must be authorized with the Tenant Administrator or VPC Administrator policy.

    +
    +
    +
    +
  6. Click Submit. Determine whether to check for the backup of all indexes and click OK to start the change.
  7. The current AZ change task is displayed in the task list. If the task status is Running, expand the task list and click View Progress to view the progress details.

    If the task status is Failed, you can retry or terminate the task.

    +
    • Retry a task: Click Retry in the Operation column of a task.
    • Terminate a task: Click Terminate in the Operation column of a task.

      If the AZ of the original node is not changed after the task is terminated, you can recover the node by referring to Replacing a Specified Node.

      +

      If the AZ of some nodes have been changed and the AZ form of the cluster has changed, stopping the switchover task may make the deliver of the previous switchover request fail. Exercise caution when stopping the switchover task.

      +
      +
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001640777441.html b/docs/css/umn/en-us_topic_0000001640777441.html new file mode 100644 index 00000000..03f40aae --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640777441.html @@ -0,0 +1,111 @@ + + +

Configuring YML Parameters

+

You can modify the elasticsearch.yml file.

+

Modifying Parameter Configurations

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, click the name of the target cluster. The cluster information page is displayed.
  3. Click Parameter Configurations and click Edit to modify module parameters as required. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Module parameters

    Module Name

    +

    Parameter

    +

    Description

    +

    Cross-domain Access

    +

    http.cors.allow-credentials

    +

    Indicates whether to return the Access-Control-Allow-Credentials of the header during cross-domain access.

    +

    Value: true or false

    +

    Default value: false

    +

    http.cors.allow-origin

    +

    Origin IP address allowed for cross-domain access, for example, 122.122.122.122:9200

    +

    http.cors.max-age

    +

    Default browser cache duration. The cache is automatically cleared after the time range you specified.

    +

    Unit: s

    +

    Default value: 1728000

    +

    http.cors.allow-headers

    +

    Headers allowed for cross-domain access, including X-Requested-With, Content-Type, and Content-Length. Use commas (,) and spaces to separate headers.

    +

    http.cors.enabled

    +

    Indicates whether to allow cross-domain access.

    +

    Value: true or false

    +

    Default value: false

    +

    http.cors.allow-methods

    +

    Methods allowed for cross-domain access, including OPTIONS, HEAD, GET, POST, PUT, and DELETE. Use commas (,) and spaces to separate methods.

    +

    Reindexing

    +

    reindex.remote.whitelist

    +

    Configure this parameter to migrate data from the current cluster to the target cluster through the reindex API. The example value is 122.122.122.122:9200.

    +

    Custom Cache

    +

    indices.queries.cache.size

    +

    Cache size in the query phase

    +

    Value range: 1 to 100.

    +

    Unit: %

    +

    Default value: 10%

    +

    Queue Size in a Thread Pool

    +

    thread_pool.bulk.queue_size

    +

    Queue size in the bulk thread pool. The value is an integer. You need to customize this parameter.

    +

    Default value: 200

    +

    thread_pool.write.queue_size

    +

    Queue size in the write thread pool. The value is an integer. You need to customize this parameter.

    +

    Default value: 200

    +

    thread_pool.force_merge.size

    +

    Queue size in the force merge thread pool. The value is an integer.

    +

    Default value: 1

    +

    Customize

    +

    You can add parameters based on your needs.

    +

    Customized parameters

    +
    NOTE:
    • Enter multiple values in the format of [value1, value2, value3...].
    • Separate values by commas (,) and spaces.
    • Colons (:) are not allowed.
    +
    +
    +
    +
  4. After the modification is complete, click Submit.In the displayed Submit Configuration dialog box, select the box indicating "I understand that the modification will take effect after the cluster is restarted." and click Yes.

    If the Status is Succeeded in the parameter modification list, the modification has been saved. Up to 20 modification records can be displayed.

    +
  5. Return to the cluster list and choose More > Restart in the Operation column to restart the cluster and make the modification take effect.
    • You need to restart the cluster after modification, or Configuration unupdated will be displayed in the Task Status column on the Clusters page.
    • If you restart the cluster after the modification, and Task Status displays Configuration error, the parameter configuration file fails to be modified.
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001640879293.html b/docs/css/umn/en-us_topic_0000001640879293.html new file mode 100644 index 00000000..6db79a05 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640879293.html @@ -0,0 +1,20 @@ + + +

Restarting a Cluster

+

If a cluster becomes faulty, you can restart it to check if it can run normally.

+

Prerequisites

  • The target cluster is not frozen and has no task in progress.
  • If a cluster is available, ensure that it has stopped processing service requests (such as importing data and searching for data). Otherwise, data may be lost when the cluster is restarted. You are advised to perform this operation during off-peak hours.
+
+

Context

CSS supports quick restart and rolling restart.

+
Quick Restart
  • All clusters support this function.
  • If you select a node type for quick restart, all nodes of the selected type will be restarted together.
  • If you select a node name for quick restart, only the specified node will be restarted.
  • The cluster is unavailable during quick restart.
+
+
+

Quick Restart

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. In the Operation column of the target cluster, choose More > Restart.
  4. On the Restart Cluster page, select Quick Restart.

    You can quick restart nodes by Node type or Node name. If you select Node type, then you can select multiple node types and perform quick restart at the time. If you select Node name, you can perform quick restart only on one node at a time.

    +
  5. Refresh the page and check the cluster status. During the restart, the cluster status is Processing, and the task status is Restarting. If the cluster status changes to Available, the cluster has been restarted successfully.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001640883633.html b/docs/css/umn/en-us_topic_0000001640883633.html new file mode 100644 index 00000000..6773e505 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640883633.html @@ -0,0 +1,23 @@ + + +

Index Backup and Restoration

+
+ + diff --git a/docs/css/umn/en-us_topic_0000001640892937.html b/docs/css/umn/en-us_topic_0000001640892937.html new file mode 100644 index 00000000..b8625921 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640892937.html @@ -0,0 +1,19 @@ + + +

Replacing a Specified Node

+

If a node in the cluster is faulty, you can create a new node with the same specifications to replace it.

+

Prerequisites

The target cluster is available and has no tasks in progress.

+
+

Constraints

  • Only one node can be replaced at a time.
  • The ID, IP address, specifications, and AZ of the new node will be the same as those of the original one.
  • The configurations you modified manually will not be retained after node replacement. For example, if you have manually added a return route to the original node, you need to add it to the new node again after the node replacement is complete.
  • If the node you want to replace is a data node (ess) or cold data node (ess-cold), pay attention to the following precautions:
    1. For data node replacement, data from the original node will be migrated to other nodes, and then the node will be rebuilt. Therefore, the total number of replicas and primary shards of each index in the cluster must be less than the total number of data nodes (including ess and ess-cold) in the cluster. The time required for node replacement is closely related to the time required for migrating data to other nodes.
    2. The AZ of the node to be replaced must have two or more data nodes (including ess and ess-cold).
    3. If the cluster of the node to be replaced does not have a master node (ess-master), the number of available data nodes (including ess and ess-cold) in the cluster must be greater than or equal to 3.
    4. The preceding precautions do not apply if you are replacing a master node (ess-master) or client node (ess-client).
    5. The precautions 1 to 4 do not apply if you are replacing a faulty node, regardless of its type. Faulty nodes are not included in _cat/nodes.
    +
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, click the Replace Node tab.
  5. On the Replace Node tab page, set the following parameters:
    • Whether to perform data migration: If this option is selected, data migration is performed. If the target node has disabled indexes or indexes that have no replicas, this option must be selected.
    • Select the node to be replaced in the data node table.
    +
  6. Click Submit.
  7. Click Back to Cluster List to switch to the Clusters page. The Task Status is Upgrading. When Cluster Status changes to Available, the node has been successfully replaced.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001640998693.html b/docs/css/umn/en-us_topic_0000001640998693.html new file mode 100644 index 00000000..7499679c --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001640998693.html @@ -0,0 +1,15 @@ + + +

Deleting a Cluster

+

You can delete clusters that you no longer need.

+
  • If you delete a cluster, the cluster service data will be cleared. Exercise caution when performing this operation.
  • The snapshots of a cluster stored in OBS are not deleted with the cluster. You can restore a deleted cluster using its snapshots stored in the OBS bucket.
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. Locate the target cluster and click More > Delete in the Operation column.
  4. In the displayed dialog box, enter the name of the cluster to be deleted and click OK.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001641003025.html b/docs/css/umn/en-us_topic_0000001641003025.html new file mode 100644 index 00000000..61958331 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001641003025.html @@ -0,0 +1,17 @@ + + +

Quickly Accessing an OpenSearch Cluster

+

OpenSearch clusters have built-in Kibana and Cerebro components. You can quickly access an OpenSearch cluster through Kibana and Cerebro.

+

Accessing a Cluster Through Kibana

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column to go to the OpenSearch Dashboards login page.
    • Non-security cluster: The OpenSearch Dashboards console is displayed.
    • Security cluster: Enter the username and password on the login page and click Log In to go to the Kibana console. The default username is admin and the password is the one specified during cluster creation.
    +
  4. After the login is successful, access the cluster and perform related operations on the OpenSearch Dashboards.
+
+

Accessing a Cluster Through Cerebro

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > OpenSearch.
  3. On the Clusters page, locate the target cluster and click More > Cerebro in the Operation column to go to the Cerebro login page.
    • Non-security cluster: Click the cluster name on the Cerebro login page to go to the Cerebro console.
    • Security cluster: Click the cluster name on the Cerebro login page, enter the username and password, and click Authenticate to go to the Cerebro console. The default username is admin and the password is the one specified during cluster creation.
    +
  4. After the login is successful, you can access clusters through Cerebro.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001641003029.html b/docs/css/umn/en-us_topic_0000001641003029.html new file mode 100644 index 00000000..0ef98b30 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001641003029.html @@ -0,0 +1,12 @@ + + +

Backup and Restoration Overview

+

You can back up index data in clusters. If data loss occurs or you want to retrieve data of a specified duration, you can restore the index data. Index backup is implemented by creating cluster snapshots. When creating a backup for the first time, you are advised to back up data of all indexes.

+
  • Managing Automatic Snapshot Creation: Snapshots are automatically created at a specified time each day according to the rules you create. You can enable or disable the automatic snapshot creation function and set the automatic snapshot creation policy.
  • Manually Creating a Snapshot: You can manually create a snapshot at any time to back up all data or data of specified indexes.
  • Restoring Data: You can use existing snapshots to restore the backup index data to a specified cluster.
  • Deleting a Snapshot: Delete unnecessary snapshots and release resources.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001641012329.html b/docs/css/umn/en-us_topic_0000001641012329.html new file mode 100644 index 00000000..03c5eba4 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001641012329.html @@ -0,0 +1,24 @@ + + +

Changing Specifications

+

If the workloads on the data plane of a cluster change, you can change its node specifications as needed.

+

Prerequisites

  • The target cluster is available and has no tasks in progress.
  • The target cluster has sufficient quotas available.
  • When changing the node specifications, ensure that all service data has copies so the services will not be interrupted.

    Run the GET _cat/indices?v command in Kibana. If the returned rep value is greater than 0, the data has copies. If the returned rep value is 0, the data has no copies. In this case, create snapshot for the cluster by referring to Manually Creating a Snapshot.

    +
  • If the data volume is large, it may take long to modify the node specifications. You are advised to modify specifications during off-peak hours.
+
+

Constraints

  • The number of nodes and the capacity of node storage cannot be changed. You can add nodes and increase the node storage capacity by referring to Scaling Out a Cluster. For details about how to reduce the number of nodes, see Scaling in a Cluster.
  • After decreasing cluster specifications, the cluster performance will deteriorate and service capabilities will be affected. Exercise caution when performing this operation.
  • If a cluster has multiple node types, you can change the specifications of only one type at a time. After the change, nodes in other types still maintain their original specifications.
  • Kibana is unavailable during specification change.
  • During the specification modification, the nodes are stopped and restarted in sequence. It is a rolling process.
+
+

Procedure

  1. Log in to the CSS management console.
  2. In the navigation pane, choose a cluster type. The cluster management page is displayed.
  3. Choose More > Modify Configuration in the Operation column of the target cluster. The Modify Configuration page is displayed.
  4. On the Modify Configuration page, choose the Scale Cluster tab and click Change Specifications to set parameters.
    • Action: select Change specifications.
    • Resources: The changed amount of resources.
    • Nodes: Specifications of the default data nodes. Select the required specifications from the Node Specifications drop-down list and select the node that you want to change the specifications.
    • If a cluster has master nodes, client nodes, or cold data nodes, you can change their specifications.
    +
  5. Click Next.
  6. Confirm the information and click Submit.
  7. In the dialog box that is displayed, confirm whether to select Verify index copies and Cluster status check and click OK to start the specifications change.

    Index copy verification:

    +
    By default, CSS checks for indexes that do not have copies. You can skip this step, but the lack of index copies may affect services during a cluster specifications change.
    • If you selected Verify index copies and the cluster has no master node, indexes must have at least one copy and the cluster must have at least three nodes.
    • If you selected Verify index copies and the cluster has no master node, indexes must have at least one copy.
    +
    +

    Cluster status check:

    +

    The cluster status is checked before the specifications change by default. The specifications of nodes are changed one by one to ensure success and data security. If a cluster is overloaded and services are faulty, the request for a specifications change will not be delivered. In this case, you can disable cluster status check. If you ignore the cluster status check before the specifications change, the cluster may be faulty and services may be interrupted. Exercise caution when performing this operation.

    +
  8. Click Back to Cluster List to switch to the Clusters page. The Cluster Status is Configuration modified. When Cluster Status changes to Available, the cluster specifications have been successfully modified.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001641016221.html b/docs/css/umn/en-us_topic_0000001641016221.html new file mode 100644 index 00000000..b72c8811 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001641016221.html @@ -0,0 +1,42 @@ + + +

Changing an Index Policy

+

You can change any managed index policy. ISM has constraints to ensure that policy changes do not break indexes.

+

If an index is stuck in its current status and you want to update its policy immediately, make sure that the new policy includes the same status (same name, action, and order) as the old policy. In this case, ISM applies the new policy even if the old policy is being executed.

+

If the new policy you use does not include the same status as the old policy, ISM updates the policies only after all actions in the current status are completed. Alternatively, you can select a specific status in the old policy and make the new policy take effect.

+

Perform the following steps to change a policy in the OpenSearch Dashboards:

+
  1. On the Index Management page of the OpenSearch Dashboards, select the index policy you want to change.
  2. Click Change policy in the upper right corner. In the Choose managed indices and Choose new policy areas, select information about the new policy.
    Figure 1 Changing an index policy
    +
    +
    + + + + + + + + + + + + + +
    Table 1 Parameters required for changing a policy

    Parameter

    +

    Description

    +

    Managed indices

    +

    Select the indexes to which you want to attach the new policy. Multiple indexes can be selected.

    +

    State filters

    +

    Select an index status. When a status is selected, the new policy is attached to an index in this status.

    +

    New policy

    +

    Select a new policy.

    +
    +
    +
    +
  3. After configuration is complete, click Change.
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001647464345.html b/docs/css/umn/en-us_topic_0000001647464345.html new file mode 100644 index 00000000..96428324 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001647464345.html @@ -0,0 +1,58 @@ + + +

Managing Tags

+

Tags are cluster identifiers. Adding tags to clusters can help you identify and manage your cluster resources.

+

You can add tags to a cluster when creating the cluster or add them on the details page of the created cluster.

+

If your organization has enabled tag policies for CSS, you must comply with the tag policy rules when creating clusters, otherwise, clusters may fail to be created. Contact the organization administrator to learn more about tag policies.

+

Managing Tags of a New Cluster

  1. Log in to the CSS management console.
  2. Click Create Cluster in the upper right corner. The Create Cluster page is displayed.
  3. On the Create Cluster page, set Advanced Settings to Custom. Add tags for a cluster.

    You can select a predefined tag and set Tag value for the tag. You can click View Predefined Tag to switch to the TMS management console and view existing tags.

    +

    You can also create new tags by specifying Tag key and Tag value.

    +

    You can add a maximum of 20 tags for a CSS cluster. If the entered tag is incorrect, you can click Delete on the right of the tag to delete the tag. If you do not want to add tags, leave this parameter blank.

    + +
    + + + + + + + + + + +
    Table 1 Naming rules for a tag key and value

    Parameter

    +

    Description

    +

    Tag key

    +

    Must be unique in a cluster.

    +

    The value cannot contain more than 64 characters.

    +

    It can contain only numbers, letters, and the following special characters: _.:=+-@/ The value cannot start or end with a space.

    +

    Cannot be left blank.

    +

    Tag value

    +

    The value cannot contain more than 64 characters.

    +

    It can contain only numbers, letters, and the following special characters: _.:=+-@/ The value cannot start or end with a space.

    +

    Cannot be left blank.

    +
    +
    +
+
+

Managing Tags of Existing Clusters

You can modify, delete, or add tags for a cluster.

+
  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > Opensearch.
  3. On the Clusters page, click the name of a cluster for which you want to manage tags.

    The Basic Information page is displayed.

    +
  4. In the navigation pane on the left, choose the Tags tab. You can add, modify, or delete tags.
    • View

      On the Tags page, you can view details about tags of the cluster, including the number of tags and the key and value of each tag.

      +
    • Add

      Click Add in the upper left corner. In the displayed Add Tag dialog box, enter the key and value of the tag to be added, and click OK.

      +
    • Modify

      You can only change the value of an existing tag.

      +

      In the Operation column of a tag, click Edit. In the displayed Edit Tag page, enter a new tag value and click OK.

      +
    • Delete

      In the Operation column of a tag, click Delete. After confirmation, click Yes on the displayed Delete Tag page.

      +
    +
+
+

Searching for Clusters by Tag

  1. Log in to the CSS management console.
  2. In the navigation pane, choose Clusters > Opensearch.
  3. On the Clusters page, click Search by Tag in the upper right corner of the cluster list.
  4. Select or enter the tag key and tag value you want to search for, and click Add to add the tag to the search text box.

    You can select a tag key or tag value from their drop-down lists. The system returns a list of clusters that exactly match the tag key or tag value. If you enter multiple tags, the cluster that meets requirements of all the tags will be filtered.

    +

    You can add a maximum of 10 tags at one time.

    +
  5. Click Search.

    The system searches for the target cluster by tag key and value.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001667545170.html b/docs/css/umn/en-us_topic_0000001667545170.html new file mode 100644 index 00000000..9f712b33 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001667545170.html @@ -0,0 +1,20 @@ + + +

What Is Cloud Search Service?

+

CSS

Cloud Search Service (CSS) is a fully hosted distributed search service based on Elasticsearch. You can use it for structured and unstructured data search, and use AI vectors for combine search, statistics, and reports. CSS is a fully managed cloud service of the ELK Stack and is compatible with open-source Elasticsearch, Kibana, and Cerebro.

+

Elasticsearch is an open-source distributed search engine that can be deployed in standalone or cluster mode. The heart of the ELK Stack, Elasticsearch clusters support multi-condition search, statistical analysis, and create visualized reports of structured and unstructured text. For details about Elasticsearch, see the Elasticsearch: The Definitive Guide.

+

CSS can be automatically deployed, allowing you to quickly create Elasticsearch clusters. It provides the search engine optimization practices and does not require your O&M. Additionally, it has a robust monitoring system to present you key metrics, including clusters and query performance so that you can focus on the business logic.

+
+

Functions

  • Compatible with Elasticsearch

    Freely use native Elasticsearch APIs and other software in the ecosystem, such as Beats and Kibana.

    +
  • Support various data sources

    A few simple configurations can allow you to smoothly connect to multiple data sources, such as FTP, OBS, HBase, and Kafka. No extra coding is required.

    +
  • One-click operation

    One-click cluster application, capacity expansion, and restart from small-scale testing to large-scale rollout

    +
  • User-defined snapshot policies

    Trigger backup snapshots manually or configure an automated schedule.

    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001667545182.html b/docs/css/umn/en-us_topic_0000001667545182.html new file mode 100644 index 00000000..d497299e --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001667545182.html @@ -0,0 +1,12 @@ + + +

Quotas

+

CSS uses the following resources:

+
  • Instance
  • CPU
  • Memory (GB)
  • Disk quantity
  • Disk size (GB)
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001667704882.html b/docs/css/umn/en-us_topic_0000001667704882.html new file mode 100644 index 00000000..5b943cad --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001667704882.html @@ -0,0 +1,19 @@ + + +

Product Components

+

CSS supports Kibana and Cerebro.

+

Kibana

Kibana is an open-source data analytics and visualization platform that works with Elasticsearch. You can use Kibana to search for and view data stored in Elasticsearch indexes and display data in charts and maps. For details about Kibana, visit https://www.elastic.co/guide/en/kibana/current/index.html.

+

By default, the Elasticsearch cluster of CSS provides the access channel to Kibana. You can quickly access Kibana without installing it. CSS is compatible with Kibana visualizations and Elasticsearch statistical and analysis capabilities.

+
  • Over 10 data presentation modes
  • Nearly 20 data statistics methods
  • Classification in various dimensions, such as time and tag
+
+

Cerebro

Cerebro is an open-source Elasticsearch web admin tool built using Scala, Play Framework, AngularJS, and Bootstrap. Cerebro allows you to manage clusters on a visualized page, such as executing REST requests, modifying Elasticsearch configurations, monitoring real-time disks, cluster loads, and memory usage.

+

By default, the Elasticsearch cluster of CSS provides the access channel to Cerebro. You can quickly access Cerebro without installing it. CSS is fully compatible with the open-source Cerebro and adapts to the latest 0.8.4 version.

+
  • Elasticsearch visualized and real-time load monitoring
  • Elasticsearch visualized data management
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001667704890.html b/docs/css/umn/en-us_topic_0000001667704890.html new file mode 100644 index 00000000..f7c9f358 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001667704890.html @@ -0,0 +1,43 @@ + + +

Advantages

+

CSS has the following features and advantages.

+

Efficient and Ease of Use

You can get insights from terabyte-scale data in milliseconds. In addition, you can use the visualized platform for data display and analysis.

+
+

Flexible and Scalable

You can request resources as needed and perform capacity expansion online with zero service interruption.

+
+

Easy O&M

CSS is a fully-managed, out-of-the-box service. You can start using it with several clicks, instead of managing clusters.

+
+

Kernel Enhancement

  • Vector search

    When you search for unstructured data, such as images, videos, and corpuses, the nearest neighbors or approximate nearest neighbors are searched based on feature vectors.

    +
  • Decoupled storage and compute

    CSS provides an API for freezing indexes. Hot data stored on SSD can be dumped to OBS to reduce data storage costs and decouple compute from storage.

    +
  • Flow control

    CSS can control traffic at the node level. You can configure the blacklist and whitelist, the maximum concurrent HTTPS connections, and the maximum HTTP connections for a node. Each function has an independent control switch.

    +
  • Large query isolation

    CSS allows you to separately manage large queries. You can isolate query requests that consume a large amount of memory or take a long period of time.

    +
  • Index monitoring

    CSS monitors various metrics of the running status and change trend of cluster indexes to measure service usage and handle potential risks in a timely manner, ensuring that clusters can run stably.

    +
  • Enhanced monitoring

    CSS supports enhanced cluster monitoring. It can monitor the P99 latency of cluster search requests and the HTTP status codes of clusters.

    +
+
+

High Reliability

You can choose to trigger snapshots manually or on a periodic basis for backup and restore snapshots to the current or other clusters. Snapshots of a cluster can be restored to another cluster to implement cluster data migration.

+
  • Automatic backup using snapshots

    CSS provides the backup function. You can enable the automatic backup function on the CSS management console and set the backup period based on the actual requirements.

    +

    Automatic backup is to back up the index data of a cluster. Index backup is implemented by creating cluster snapshots. For backup of the first time, you are advised to back up all index data.

    +

    CSS allows you to store the snapshot data of Elasticsearch instances to OBS, thereby achieving cross-region backup with the cross-region replication function of OBS.

    +
+
  • Restoring data using snapshots

    If data loss occurs or you want to retrieve data of a certain period, click Restore in the Operation column in the Snapshots area to restore the backup index data to the specified cluster by using existing snapshots.

    +
+
+

High Security

CSS ensures secure running of data and services from the following aspects:

+
  • Network isolation

    The network is divided into two planes, service plane and management plane. The two planes are deployed and isolated physically to ensure the security of the service and management networks.

    +
    • Service plane: refers to the network plane of the cluster. It provides service channels for users and delivers data definition, index, and search capabilities.
    • Management plane: refers to the management console. It is used to manage CSS.
    • VPC security groups or isolated networks ensure the security of hosts.
    +
  • Access control
    • Using the network access control list (ACL), you can permit or deny the network traffic entering and exiting the subnets.
    • Internal security infrastructure (including the network firewall, intrusion detection system, and protection system) can monitor all network traffic that enters or exits the VPC through the IPsec VPN.
    • User authentication and index-level authentication are supported. CSS also supports interconnection with third-party user management systems.
    +
  • Data security
    • In CSS, the multi-replica mechanism is used to ensure user data security.
    • Communication between the client and server can be encrypted using SSL.
    +
  • Operation audit

    Cloud Trace Service (CTS) can be used to perform auditing on key logs and operations.

    +
+
+

High Availability

To prevent data loss and minimize the cluster downtime in case of service interruption, CSS supports cross-AZ cluster deployment. When creating a cluster, you can select two or three AZs in the same region. The system will automatically allocate nodes to these AZs. If an AZ is faulty, the remaining AZs can still run properly, significantly enhancing cluster availability and improving service stability.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001715624649.html b/docs/css/umn/en-us_topic_0000001715624649.html new file mode 100644 index 00000000..8b987fb3 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001715624649.html @@ -0,0 +1,29 @@ + + +

Basic Concepts

+

Cluster

CSS provides functions on a per cluster basis. A cluster represents an independent search service that consists of multiple nodes.

+
+

Index

An index stores Elasticsearch data. It is a logical space in which one or more shards are grouped.

+
+

Shard

An index can potentially store a large amount of data that can exceed the hardware limits of a single node. To solve this problem, Elasticsearch provides the ability to subdivide your index into multiple pieces called shards. When you create an index, you can simply define the number of shards that you want. Each shard is in itself a fully-functional and independent "index" that can be hosted on any node in the cluster.

+

You need to specify the number of shards before creating an index and cannot change the number after the index is successfully created.

+
+

Replica

A replica is a copy of the actual storage index in a shard. It can be understood as a backup of the shard. Replicas help prevent single point of failures (SPOFs). You can increase or decrease the number of replicas based on your service requirements.

+
+

Document

An entity for Elasticsearch storage. Equivalent to the row in the RDB, the document is the basic unit that can be indexed.

+
+

Document Type

Similar to a table in the RDB, type is used to distinguish between different data.

+

In versions earlier than Elasticsearch 7.x, each index can contain multiple document types. Elasticsearch defines a type for each document.

+

Elasticsearch 7.x and later versions only support documents of the .doc type.

+
+

Mapping

A mapping is used to restrict the type of a field and can be automatically created based on data. It is similar to the schema in the database.

+
+

Field

The field is the minimum unit of a document. It is similar to the column in the database.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001715624661.html b/docs/css/umn/en-us_topic_0000001715624661.html new file mode 100644 index 00000000..67df32e1 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001715624661.html @@ -0,0 +1,62 @@ + + +

Related Services

+

Figure 1 shows the relationships between CSS and other services.

+
Figure 1 Relationships between CSS and other services
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Relationships between CSS and other services

Service

+

Description

+

Virtual Private Cloud (VPC)

+

CSS clusters are created in the subnets of a VPC. VPCs provide a secure, isolated, and logical network environment for your clusters.

+

Elastic Cloud Server (ECS)

+

In a CSS cluster, each node represents an ECS. When you create a cluster, ECSs are automatically created.

+

Elastic Volume Service (EVS)

+

CSS uses EVS to store index data. When you create a cluster, EVSs are automatically created for cluster data storage.

+

Object Storage Service (OBS)

+

Snapshots of CSS clusters are stored in OBS buckets.

+

Identity and Access Management (IAM)

+

IAM authenticates access to CSS.

+

Cloud Eye

+

CSS uses Cloud Eye to monitor cluster metrics in real time. The supported CSS metrics include the disk usage and cluster health status. You can learn about the disk usage of the cluster based on the disk usage metric. You can learn about the health status of a cluster based on the cluster health status metric.

+

Cloud Trace Service (CTS)

+

With CTS, you can record operations associated with CSS for query, audit, and backtracking operations.

+

Key Management Service (KMS)

+

If disk encryption is enabled on CSS clusters, you need to obtain the key provided by KMS to encrypt and decrypt the disk data.

+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001715624665.html b/docs/css/umn/en-us_topic_0000001715624665.html new file mode 100644 index 00000000..95ba6223 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001715624665.html @@ -0,0 +1,362 @@ + + +

Permissions Management

+

If you need to assign different permissions to employees in your organization to access your CSS resources, IAM is a good choice for fine-grained permissions management. IAM provides identity authentication, permissions management, and access control.

+

If the current account has met your requirements, you do not need to create an independent IAM user for permission management. Then you can skip this section. This will not affect other functions of CSS.

+

With IAM, you can use your account to create IAM users for your employees and assign permissions to the users to control their access to your resources. IAM is free of charge. You pay only for the resources you purchase.

+

Permissions Management

New IAM users do not have any permissions assigned by default. You need to first add them to one or more groups and attach policies or roles to these groups. The users then inherit permissions from the groups and can perform specified operations on cloud services based on the permissions they have been assigned.

+

CSS is a project-level service deployed in specific physical regions. Therefore, CSS permissions are assigned to projects in specific regions and only take effect in these regions. If you want the permissions to take effect in all regions, you need to assign the permissions to projects in each region. When accessing CSS, the users need to switch to a region where they have been authorized to use cloud services.

+

You can use roles and policies to grant users permissions.

+
  • Roles are a type of coarse-grained authorization mechanism that defines permissions related to user responsibilities. There are only a limited number of service-level roles for granting permissions to users. When using roles to grant permissions, you need to also assign dependency roles. Roles are not ideal for fine-grained authorization and secure access control.
  • Policies are a type of fine-grained authorization mechanism that defines the permissions for performing operations on specific cloud resources under certain conditions. This mechanism allows for more flexible authorization. Policies allow you to meet requirements for more secure access control. For example, CSS administrators can only grant CSS users the permissions needed for managing a particular type of CSS resources.
+

Table 1 lists all the system-defined roles and policies supported by CSS.

+
  • Elasticsearch Administrator depends on the roles of other services to execute its permissions. Therefore, if you assign the Elasticsearch Administrator role to a user, assign its dependency roles at the same time.
  • CSS FullAccess and CSS ReadOnlyAccess can be used to control the resources that users can access. For example, if you want your software developers to use CSS resources but not delete them or perform any high-risk operations, you can create IAM users for these software developers and assign them only the permissions required for using CSS resources.
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 CSS system permission

Role/Policy Name

+

Type

+

Role/Policy Description

+

Dependency

+

Elasticsearch Administrator

+

System-defined role

+

Full permissions for CSS.

+

This role depends on the Tenant Guest and Server Administrator roles in the same project.

+
  • Tenant Guest: A global role, which must be assigned in the global project.
  • Server Administrator: A project-level role, which must be assigned in the same project
+

CSS FullAccess

+

System-defined policy

+

Full CSS permissions granted through policies. Users with these permissions can perform all operations on CSS.

+

Some functions depend on corresponding permissions. To use certain functions, you need to enable the dependent permissions in the same project.

+

The VPCEndpoint Administrator system role is required for accessing a cluster through a VPC endpoint.

+

Some operations depend on the following permissions:

+
  • Automatically create an agency:

    iam:agencies:createAgency

    +
  • View the agency list:

    iam:agencies:listAgencies

    +

    iam:permissions:listRolesForAgencyOnDomain

    +

    iam:permissions:listRolesForAgencyOnProject

    +

    iam:permissions:listRolesForAgency

    +
  • Display enterprise projects and predefined tags on the console:

    eps:enterpriseProjects:list

    +

    tms:predefineTags:list

    +
  • Use the snapshot, word dictionary, and log management functions:

    obs:bucket:Get*

    +

    obs:bucket:List*

    +

    obs:object:List*

    +

    obs:object:Get*

    +

    obs:bucket:HeadBucket

    +

    obs:object:PutObject

    +

    obs:object:DeleteObject

    +
+

CSS ReadOnlyAccess

+

System-defined policy

+

Read-only permissions for CSS. Users with these permissions can only view CSS data.

+

Some functions depend on corresponding permissions. To use certain functions, you need to enable the dependent permissions in global services.

+

Some operations depend on the following permissions:

+
  • View the agency list:

    iam:agencies:listAgencies

    +

    iam:permissions:listRolesForAgencyOnDomain

    +

    iam:permissions:listRolesForAgencyOnProject

    +

    iam:permissions:listRolesForAgency

    +
  • Display enterprise projects and predefined tags on the console:

    eps:enterpriseProjects:list

    +

    tms:predefineTags:list

    +
  • Use the snapshot, word dictionary, and log management functions:

    obs:bucket:Get*

    +

    obs:bucket:List*

    +

    obs:object:List*

    +

    obs:object:Get*

    +

    obs:bucket:HeadBucket

    +
+
+
+

Table 2 lists the common operations supported by each system permission of CSS. Please choose proper system permissions according to this table.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Common operations supported by each system-defined policy

Operation

+

CSS FullAccess

+

CSS ReadOnlyAccess

+

Elasticsearch Administrator

+

Remarks

+

Creating a cluster

+

√

+

x

+

√

+

-

+

Querying a cluster list

+

√

+

√

+

√

+

-

+

Querying cluster details

+

√

+

√

+

√

+

-

+

Deleting a cluster

+

√

+

x

+

√

+

-

+

Restarting a cluster

+

√

+

x

+

√

+

-

+

Expanding cluster capacity

+

√

+

x

+

√

+

-

+

Adding instances and expanding instance storage capacity

+

√

+

x

+

√

+

-

+

Querying tags of a specified cluster

+

√

+

√

+

√

+

-

+

Querying all tags

+

√

+

√

+

√

+

-

+

Loading a custom word dictionary

+

√

+

x

+

√

+

Depends on OBS and IAM permissions

+

Querying the status of a custom word dictionary

+

√

+

√

+

√

+

-

+

Deleting a custom word dictionary

+

√

+

x

+

√

+

-

+

Automatically setting basic configurations of a cluster snapshot

+

√

+

x

+

√

+

Depends on OBS and IAM permissions

+

Modifying basic configurations of a cluster snapshot

+

√

+

x

+

√

+

Depends on OBS and IAM permissions

+

Setting the automatic snapshot creation policy

+

√

+

x

+

√

+

-

+

Querying the automatic snapshot creation policy

+

√

+

√

+

√

+

-

+

Manually creating a snapshot

+

√

+

x

+

√

+

-

+

Querying the snapshot list

+

√

+

√

+

√

+

-

+

Restoring a snapshot

+

√

+

x

+

√

+

-

+

Deleting a snapshot

+

√

+

x

+

√

+

-

+

Disabling the snapshot function

+

√

+

x

+

√

+

-

+

Modifying specifications

+

√

+

x

+

√

+

-

+

Scaling in clusters

+

√

+

x

+

√

+

-

+
+
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001715624677.html b/docs/css/umn/en-us_topic_0000001715624677.html new file mode 100644 index 00000000..f71fb38c --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001715624677.html @@ -0,0 +1,36 @@ + + +

Constraints

+

Restrictions on Clusters and Nodes

The following table describes restrictions on clusters and nodes in CSS.

+ +
+ + + + + + + + + + +
Table 1 Restrictions on Elasticsearch clusters and nodes

Cluster and Node

+

Restriction

+

Maximum number of nodes in a cluster

+

32

+

Minimum number of nodes in a cluster

+

1

+
+
+
+

Restrictions on Browsers

  • You are advised to use the following browsers to access the CSS management console:
    • Google Chrome 36.0 or later
    • Mozilla Firefox 35.0 or later
    +
  • You are advised to use the following browsers to access Kibana integrated in CSS:
    • Google Chrome 36.0 or later
    • Mozilla Firefox 35.0 or later
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001715704493.html b/docs/css/umn/en-us_topic_0000001715704493.html new file mode 100644 index 00000000..0f783c1b --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001715704493.html @@ -0,0 +1,26 @@ + + +

Scenarios

+

CSS can be used to build search boxes for websites and apps to improve user experience. You can also build a log analysis platform with it, facilitating data-driven O&M and business operations. CSS vector search can help you quickly build smart applications, such as AI-based image search, recommendation, and semantic search.

+

Site Search

CSS can be used to search for website content by keyword as well as search for and recommend commodities on e-commerce sites.

+
  • Real-time search: When site content is updated, you can find the updated content in your search within minutes, or even just seconds.
  • Categorized statistics: You can apply search filters to sort products by category.
  • Custom highlight style: You can define how the search results are highlighted.
+
Figure 1 Site search
+
+

All-Scenario Log Analysis

Analyze the logs of Elastic Load Balance (ELB), servers, containers, and applications. In CSS, the Kafka message buffer queue is used to balance loads in peak and off-peak hours. Logstash is used for data extract, transform and load (ETL). Elasticsearch retrieves and analyzes data. The analysis results are visualized by Kibana and presented to you.

+
  • High cost-effectiveness: CSS separates cold and hot storage, and decouples computing and storage resources, achieving high performance and reducing costs by over 30%.
  • Ease of use: Perform queries in a GUI editor. Easily create reports using drag-and-drop components.
  • Powerful processing capability: CSS can import hundreds of terabytes of data per day, and can process petabytes of data.
+
Figure 2 All-scenario log analysis
+
+

Database Query Acceleration

CSS can be used to accelerate database queries. E-commerce and logistics companies have to respond to a huge number of concurrent order queries within a short period of time. Relational databases, although having good transaction atomicity, are weak in transaction processing, and can rely on CSS to enhance OLTP and OLAP capabilities.

+
  • High performance: Retrieve data from hundreds of millions of records within milliseconds. Text, time, numeric, and spatial data types are supported.
  • High scalability: CSS can be scaled to have over 200 data nodes and over 1000 columns.
  • Zero service interruption: The rolling restart and dual-copy mechanisms can avoid service interruption in case of specifications change or configuration update.
+
+

Vector Search

When you search for unstructured data, such as images, videos, and corpuses, the nearest neighbors or approximate nearest neighbors are searched based on feature vectors. This has the following advantages:

+
  • Efficient and reliable: The vector search engine provides optimal search performance and distributed DR capabilities.
  • Abundant indexes: Multiple indexing algorithms and similarity measurement methods are available and can meet diverse needs.
  • Easy learning: CSS is fully compatible with the open-source Elasticsearch ecosystem.
+
Figure 3 Vector search
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001720964408.html b/docs/css/umn/en-us_topic_0000001720964408.html new file mode 100644 index 00000000..658b26b0 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001720964408.html @@ -0,0 +1,25 @@ + + +

Querying Real-Time Traces

+

Scenarios

After you enable CTS and the management tracker is created, CTS starts recording operations on cloud resources. CTS stores operation records generated in the last seven days.

+

This section describes how to query and export operation records of the last seven days on the CTS console.

+ +
+

Viewing Real-Time Traces in the Trace List

  1. Log in to the management console.
  2. Click in the upper left corner and choose Management & Deployment > Cloud Trace Service. The CTS console is displayed.
  3. Choose Trace List in the navigation pane on the left.
  4. Set filters to search for your desired traces, as shown in Figure 1. The following filters are available:
    Figure 1 Filters
    +
    • Trace Type, Trace Source, Resource Type, and Search By: Select a filter from the drop-down list.
      • If you select Resource ID for Search By, specify a resource ID.
      • If you select Trace name for Search By, specify a trace name.
      • If you select Resource name for Search By, specify a resource name.
      +
    • Operator: Select a user.
    • Trace Status: Select All trace statuses, Normal, Warning, or Incident.
    • Time range: You can query traces generated during any time range in the last seven days.
    • Click Export to export all traces in the query result as a CSV file. The file can contain up to 5000 records.
    +
    +
  5. Click Query.
  6. On the Trace List page, you can also export and refresh the trace list.
    • Click Export to export all traces in the query result as a CSV file. The file can contain up to 5000 records.
    • Click to view the latest information about traces.
    +
  7. Click on the left of a trace to expand its details.

    +

    +

    +
  8. Click View Trace in the Operation column. The trace details are displayed.

    +
  9. For details about key fields in the trace structure, see section "Trace References" > "Trace Structure" and section "Trace References" > "Example Traces" in the CTS User Guide.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001814230837.html b/docs/css/umn/en-us_topic_0000001814230837.html new file mode 100644 index 00000000..9becb43a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001814230837.html @@ -0,0 +1,139 @@ + + +

Using PV_GRAPH to Search for Vector Indexes

+

PV_GRAPH deeply optimizes the HNSW algorithm and supports the vector and scalar joint filtering. When the vector and scalar joint filtering is used, the result filling rate and query performance can be greatly improved compared with post-filtering and Boolean query.

+

Prerequisites

An Elasticsearch cluster of version 7.10.2 has been created by referring to Cluster Planning for Vector Retrieval.

+
+

Creating an Index

  1. Log in to the CSS management console.
  2. Choose Clusters in the navigation pane. On the Clusters page, locate the target cluster and click Access Kibana in the Operation column.
  3. Click Dev Tools in the navigation tree on the left and run the following command to create a vector index.

    Create an index named my_index that contains a vector field my_vector and two sub-fields country and category.

    +
    PUT my_index 
    +{
    +  "settings": {
    +    "index": {
    +      "vector": true
    +    }
    +  },
    +  "mappings": {
    +    "properties": {
    +      "my_vector": {
    +        "type": "vector",
    +        "dimension": 2,
    +        "indexing": true,
    +        "algorithm": "PV_GRAPH",
    +        "metric": "euclidean",
    +        "sub_fields": ["country", "category"]
    +      }
    +    }
    +  }
    +}
    +

    For details about the parameters for creating an index, see Table 1.

    +

    The metric parameter of the PV_GRAPH index algorithm can only be set to euclidean or inner_product.

    +
    +
+
+

Importing the Vector and Scalar Data

When algorithm is set to PV_GRPAH and sub_fields is specified, the following data writing grammars are supported. The sub_fields parameter supports only the keyword type and you can specify multiple values for it.

+
# Write a single data record.
+POST my_index/_doc
+{
+  "my_vector": {
+    "data": [1.0, 1.0],
+    "country": "cn",
+    "category": ["1", "2"]
+  }
+}
+
+# Write multiple data records in batches.
+POST my_index/_bulk
+{"index": {}}
+{"my_vector": {"data": [1.0, 2.0], "country": "cn", "category": "1"}}
+{"index": {}}
+{"my_vector": {"data": [2.0, 2.0], "country": "cn", "category": ["1", "2"]}}
+{"index": {}}
+{"my_vector": {"data": [2.0, 3.0], "country": "eu", "category": "2"}}
+
+

Querying a Vector

Based on the existing Elasticsearch APIs, the filter parameter is added to vector to support vector and scalar joint filtering. The values of sub_fields can be used for scalar filtering. Currently, the JSON format is supported. The should, must, must_not, term, and terms queries are supported. The syntax is the same as that of Elasticsearch query. The restrictions are as follows:

+

Currently, up to four layers are supported for filtering nesting.

+
  • must_not cannot be nested or contain nest layers.
  • The first layer can contain only one query keyword (such as must).
+

The fields defined in sub_fields during index creation are the scalar fields used in the joint filtering and take effect only when the algorithm is set to PV_GRAPH. If the specified filtering field does not exist, the filtering request becomes invalid and the query is processed with no filtering conditions.

+
# Example of single-label and single-value matching query
+GET my_index/_search
+{
+  "query": {
+    "vector": {
+      "my_vector": {
+        "vector": [1.0, 1.0],
+        "topk": 10,
+        "filter": {
+          "term": { "country": "cn" }
+        }
+      }
+    }
+  }
+}
+
+# Example of single-label and multi-value matching query
+GET my_index/_search
+{
+  "query": {
+    "vector": {
+      "my_vector": {
+        "vector": [1.0, 1.0],
+        "topk": 10,
+        "filter": {
+          "terms": { "country": ["cn", "eu"] }
+        }
+      }
+    }
+  }
+}
+
+# Example of multi-label matching query
+GET my_index/_search
+{
+  "query": {
+    "vector": {
+      "my_vector": {
+        "vector": [1.0, 1.0],
+        "topk": 10,
+        "filter": {
+          "must": [
+            {
+              "term": {"country": "cn"}
+            },
+            {
+              "terms": {"category": ["1", "2"]}
+            }
+          ]
+        }
+      }
+    }
+  }
+}
+
+# Example of must_not matching query
+GET my_index/_search
+{
+  "query": {
+    "vector": {
+      "my_vector": {
+        "vector": [1.0, 1.0],
+        "topk": 10,
+        "filter": {
+          "must_not": [
+            {
+              "term": {"country": "eu"}
+            }
+          ]
+        }
+      }
+    }
+  }
+}
+

For details about vector query parameters, see Table 1.

+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001815107861.html b/docs/css/umn/en-us_topic_0000001815107861.html new file mode 100644 index 00000000..b8a00f19 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001815107861.html @@ -0,0 +1,198 @@ + + +

Configuring SMN Alarms

+

Scenarios

By default, CSS has installed the open-source alert plugin opensearch-alerting for OpenSearch clusters to send notifications when data meets specific conditions. This plugin consists of three components: Alerts, Monitors, and Destinations. CSS integrates the SMN service in the Destinations component and can send alarm messages only through the SMN service as the destination.

+

This section describes how to configure the SMN alarm function for OpenSearch clusters on OpenSearch Dashboards.

+

For details about the official guide of the plug-in OpenSearch Alerting, visit Alerting - OpenSearch Documentation.

+
+
+

Constraints and Limitations

By default, the open-source alert plug-in opensearch-alerting is installed for OpenSearch clusters of version 1.3.6.

+
+

Prerequisites

+
+

Procedure

  1. Log in to the CSS management console.
  2. Choose Clusters > OpenSearch, select the target cluster and click Access Kibana in the Operation column.
  3. On the OpenSearch Dashboards page, choose OpenSearch Plugins > Alerting in the navigation tree on the left.
  4. Create an SMN destination to send alert messages.
    1. On the Alerting page, click the Destinations tab and click Add destination to configure destination information. +
      + + + + + + + + + + + + + +
      Table 1 Destinations parameters

      Parameter

      +

      Description

      +

      Name

      +

      User-defined destination name

      +

      Type

      +

      Retain the default value SMN.

      +

      Topic

      +

      Select the SMN topic you have created for sending alarm messages.

      +
      +
      +
      Figure 1 Add destination
      +
    2. Click Create to return to the destination list. The created SMN destination is displayed in the list.
      Figure 2 Destination list
      +
    +
  5. Create a monitoring task and configure the alarm triggering condition and monitoring frequency.
    1. Click the Monitors tab on the Alerting page and click Create monitor to configure monitoring information. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Monitor parameters

      Parameter

      +

      Description

      +

      Monitor details

      +

      Monitor name

      +

      User-defined monitor name

      +

      Monitor type

      +

      Monitor type. The value can be Per query monitor (common monitoring), Per bucket monitor (aggregation bucket monitoring), and Per cluster metrics monitor (cluster metric monitoring).

      +

      Monitor defining method

      +

      Monitor defining method. Extraction query editor is recommended.

      +
      • Visual editor
      • Extraction query editor
      • Anomaly detector
      +

      The options of Monitor defining method are determined by the Monitor type you selected.

      +

      Detector

      +

      If Monitor defining method is set to Anomaly detector, select an exception detection task.

      +

      Frequency

      +

      Select the monitoring frequency and set the monitoring interval. The options include:

      +
      • By interval
      • Daily
      • Weekly
      • Monthly
      • Custom cron expression
      +

      Data source

      +

      Index

      +

      When Monitor defining method is set to Visual editor or Extraction query editor, you need to specify the index to be monitored.

      +

      Time field

      +

      When Monitor defining method is set to Visual editor, you need to specify the time field to define counting parameters such as count.

      +

      Query

      +

      Metrics

      +

      When Monitor defining method is set to Visual editor, you need to set the metrics range for extracting statistics.

      +

      Time range for the last

      +

      When Monitor defining method is set to Visual editor, you need to set the monitoring time range for plug-ins.

      +

      Data filter

      +

      When Monitor defining method is set to Visual editor, you need to set filters for data search.

      +

      Group by

      +

      When Monitor defining method is set to Visual editor, you need to specify a field so that each value of the field triggers an alarm.

      +

      Define extraction query

      +

      When Monitor defining method is set to Extraction query editor, you need to enter the query statement to define the monitoring.

      +

      Request type

      +

      When Monitor type is set to Per cluster metrics monitor, you need to specify the request type to monitor cluster metrics, such as the running status and CPU usage.

      +
      +
      +
    2. Click Add trigger to add triggers and specify the alarm triggering conditions and actions to be triggered when an alarm is reported.
    3. On the Triggers page, set the alarm triggering sensitivity and message release on the destination end. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 Trigger parameters

      Parameter

      +

      Description

      +

      Trigger name

      +

      User-defined trigger name

      +

      Severity level

      +

      Sensitivity of a trigger, that is, the number of alarms that are triggered before an alarm message is sent. 1 indicates the highest sensitivity.

      +

      Trigger condition

      +

      Trigger condition. An alarm is triggered when the trigger condition is hit.

      +

      Action name

      +

      Trigger action name

      +

      Destination

      +

      Select the SMN destination created in section 4.

      +

      Message

      +

      Alarm message body By default, the subject and body are defined when the destination is an email.

      +

      Perform action

      +

      When Monitor type is set to Per bucket monitor, you need to set whether to send alarms in combination. The value can be:

      +
      • Per execution: A combination alarm is sent when multiple alarm triggering conditions are hit.
      • Per alert: Alarms are sent separately when multiple alarm triggering conditions are hit.
      +

      Actionable alerts

      +

      When Monitor type is set to Per bucket monitor, set this parameter to Per alert. You need to set the alarms that can be executed after alarm triggering conditions are hit.

      +
      • De-duplicated: Alarms that have been triggered. OpenSearch retains the existing alarms to prevent the plugin from creating duplicate alarms.
      • New: Newly created alarms.
      • Completed: Alarms that are no longer ongoing.
      +

      Throttling

      +

      Message sending frequency. It limits the number of notification messages can be received in a specified period.

      +

      For example, if this parameter is set to 10 minutes, SMN sends only one alarm notification in the next 10 minutes even if the trigger condition is hit for multiple times. After 10 minutes, SMN sends another alarm notification if the alarm condition is met.

      +
      +
      +
      Figure 3 Setting the destination of a trigger action
      +
    4. Click Send test message. If a subscriber receives an email, as shown in Figure 5, the trigger is configured successfully.
      Figure 4 Sending a test message
      +
      Figure 5 Email notification
      +
    5. Click Create to return to the monitor details page. The detector is successfully created.
    +
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001832788405.html b/docs/css/umn/en-us_topic_0000001832788405.html new file mode 100644 index 00000000..301f1c9a --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001832788405.html @@ -0,0 +1,39 @@ + + +

Recording Access Logs in Files

+
The traffic control function can record cluster access logs and write the logs to background log files. You can back up the logs to OBS for viewing. You can run the following command to enable the function of recording access logs to files:
PUT /_cluster/settings
+{
+  "persistent": {
+    "flowcontrol.log.file.enabled": true
+  }
+}
+ +
+ + + + + + + + + +
Table 1 Parameters

Parameter

+

Type

+

Description

+

flowcontrol.log.file.enabled

+

Boolean

+

Indicates whether to record the log details of each request to the background log file. The value can be:

+
  • true
  • false (default value)
+
+
+
+
  • After the function of recording access logs to files is enabled, access from a client to a cluster node is recorded in the {Cluster name_access_log.log} file. You can use the log backup function to view detailed access logs.
  • After the fault is located, you are advised to disable this function.
+
+
+
+ +
+ diff --git a/docs/css/umn/en-us_topic_0000001866261281.html b/docs/css/umn/en-us_topic_0000001866261281.html new file mode 100644 index 00000000..cfdb6260 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001866261281.html @@ -0,0 +1,21 @@ + + + +

Using the Open Distro Alarm Plug-in to Configure SMN Alarms

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001876048066.html b/docs/css/umn/en-us_topic_0000001876048066.html new file mode 100644 index 00000000..b9d00775 --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001876048066.html @@ -0,0 +1,29 @@ + + + +

FAQs

+ +

+
+ + + diff --git a/docs/css/umn/en-us_topic_0000001921967557.html b/docs/css/umn/en-us_topic_0000001921967557.html new file mode 100644 index 00000000..3279635f --- /dev/null +++ b/docs/css/umn/en-us_topic_0000001921967557.html @@ -0,0 +1,31 @@ + + + +

Product Overview

+ +

+
+ + +