{"id":361,"date":"2026-06-02T17:17:12","date_gmt":"2026-06-02T09:17:12","guid":{"rendered":"https:\/\/larkdrop.cafe\/?p=361"},"modified":"2026-06-02T17:17:13","modified_gmt":"2026-06-02T09:17:13","slug":"elasticsearch","status":"publish","type":"post","link":"https:\/\/larkdrop.cafe\/index.php\/2026\/06\/02\/elasticsearch\/","title":{"rendered":"Elasticsearch"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u73b0\u5728\u5047\u8bbe\u6211\u4eec\u6709\u5982\u4e0b\u7684\u4e00\u5f20\u6570\u636e\u5e93\u8868<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-43.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"786\" height=\"120\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-43.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-362\"  sizes=\"auto, (max-width: 786px) 100vw, 786px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u73b0\u5728\u5047\u8bbe\u6211\u4eec\u6709\u4e00\u4e2a\u9700\u6c42\u662f\u4ece\u8fd9\u5f20\u8868\u4e2d\u641c\u7d22\u201c\u624b\u673a\u201d\u6216\u8005\u201c\u534e\u4e3a\u624b\u673a\u201d\u7684\u76f8\u5173\u4fe1\u606f\uff0c\u6211\u4eec\u4f1a\u600e\u4e48\u505a\uff1f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>select * from product where name like \"%\u624b\u673a%\";\nselect * from product where name like \"%\u534e\u4e3a\u624b\u673a%\";<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u662f\u9488\u5bf9\u8fd9\u5f20\u8868\uff0c\u6211\u4eec\u5982\u679c\u76f4\u63a5\u901a\u8fc7\u4ee5\u4e0aSQL\u8bed\u53e5\u6765\u67e5\u8be2\uff0c\u4f1a\u5b58\u5728\u4e24\u4e2a\u95ee\u9898:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9488\u5bf9\u5355\u8868\u7684\u5168\u8868\u626b\u63cf\u6548\u7387\u4f4e<\/li>\n\n\n\n<li>\u5173\u7cfb\u6570\u636e\u5e93\u4e2d\u63d0\u4f9b\u7684\u67e5\u8be2\u529f\u80fd\u5f31<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u601d\u8003\u4e00\u4e0b\uff0c\u6211\u4eec\u7684\u4e00\u4e2a\u7535\u5546\u7f51\u7ad9\u4e2d\uff0c\u6709\u4e0a\u767e\u4e07\u5546\u54c1\u6570\u636e\uff0c\u5982\u679c\u6211\u4eec\u91c7\u7528like\u7684\u65b9\u5f0f\uff0c\u53bb\u5b9e\u73b0\u5546\u54c1\u641c\u7d22\u7684\u529f\u80fd\uff0c\u5176\u6548\u7387\u662f\u975e\u5e38\u4f4e\u4e0b\u7684\uff0c\u540c\u65f6\u7531\u4e8e\u7528\u6237\u8f93\u5165\u7684\u5546\u54c1\u5173\u952e\u5b57\u662f\u6bd4\u8f83\u968f\u610f\u7684\uff0c\u4f7f\u7528like\u7684\u65b9\u5f0f\u5f80\u5f80\u4e5f\u5f88\u96be\u771f\u6b63\u67e5\u8be2\u5230\u7528\u6237\u60f3\u8981\u7684\u5546\u54c1\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ES\u4ecb\u7ecd\u53ca\u57fa\u672c\u6982\u5ff5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u5f88\u591a\u573a\u666f\u4e0b\uff0c\u6bd4\u5982\u7535\u5546\u7f51\u7ad9\u7684\u5546\u54c1\u641c\u7d22\uff0c\u6211\u4eec\u90fd\u9700\u8981\u4f7f\u7528\u5168\u6587\u68c0\u7d22\u7684\u529f\u80fd\u67e5\u8be2\u6240\u9700\u7684\u5185\u5bb9\uff0c\u90a3\u4e48\u5982\u4f55\u9ad8\u6548\u7684\u5b9e\u73b0\u5168\u6587\u68c0\u7d22\u7684\u529f\u80fd\u5462\uff1f\u89e3\u51b3\u4e4b\u9053\u5c31\u5728\u4e8eElastic Search\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ElasticSearch\u662f\u4e00\u4e2a\u57fa\u4e8eLucene\u7684\u5206\u5e03\u5f0f\u3001\u9ad8\u6269\u5c55\u3001\u9ad8\u5b9e\u65f6\u7684\u57fa\u4e8eRESTful \u98ce\u683cAPI\u7684\u641c\u7d22\u4e0e\u6570\u636e\u5206\u6790\u5f15\u64ce<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u4ec0\u4e48Elastic Search\u80fd\u591f\u5b9e\u73b0\u5927\u89c4\u6a21\u6570\u636e\u573a\u666f\u4e0b\u7684\u9ad8\u6548\u5168\u6587\u68c0\u7d22\u5462\uff1f\u4e3b\u8981\u662f\u56e0\u4e3a\u5728ES\u4e2d\uff0c\u6570\u636e\u7684\u5b58\u50a8\u548c\u7ec4\u7ec7\u65b9\u5f0f\u4e0e\u5173\u7cfb\u6570\u636e\u5e93\u4e0d\u540c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u9996\u5148\u9700\u8981\u4e86\u89e3ES\u4e2d\u7684\u57fa\u672c\u6982\u5ff5\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b57\u6bb5(Field): \u4e00\u4e2a\u5b57\u6bb5\u8868\u793a\u4e00\u4e2a\u5c5e\u6027\uff0c\u7c7b\u6bd4\u4e8e\u6570\u636e\u5e93\u8868\u4e2d\u7684\u5c5e\u6027\uff0c\u6570\u636e\u5e93\u4e2d\u7684\u4e00\u884c\u6570\u636e\u901a\u5e38\u662f\u591a\u4e2a\u5c5e\u6027\u503c\u7ec4\u6210<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6587\u6863(document)\uff1a\u5728ES\u4e2d\u6570\u636e\u7684\u5b58\u50a8\u548c\u5173\u7cfb\u6570\u636e\u5e93\u4e0d\u540c\uff0c\u6240\u6709\u7684\u6570\u636e\u90fd\u662f\u4ee5\u6587\u6863\u7684JSON document\u7684\u5f62\u5f0f\u5b58\u5728\uff0cdocument\u662fES\u4e2d<strong>\u7d22\u5f15<\/strong>\u548c<strong>\u641c\u7d22<\/strong>\u7684\u6700\u5c0f\u7684\u6570\u636e\u5355\u4f4d\uff0c\u7c7b\u6bd4\u4e8e\u6570\u636e\u5e93\u4e2d\u7684\u4e00\u884c\u6570\u636e\uff0c\u901a\u5e38\u6709\u591a\u4e2a\u5b57\u6bb5\u503c\u7ec4\u6210<\/li>\n\n\n\n<li>\u6620\u5c04(mapping): mapping\u5b9a\u4e49\u4e86document\u4e2d\u6bcf\u4e2a\u5b57\u6bb5\u7684\u7c7b\u578b\u3001\u5b57\u6bb5\u6240\u4f7f\u7528\u7684\u5206\u8bcd\u5668\u7b49\u3002\u76f8\u5f53\u4e8e\u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\u7684\u8868\u7ed3\u6784\u3002<\/li>\n\n\n\n<li>\u7d22\u5f15\uff08index): ElasticSearch\u5b58\u50a8\u6570\u636e\u7684\u5730\u65b9\uff0c\u53ef\u4ee5\u7406\u89e3\u6210\u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\u7684\u6570\u636e\u5e93\u6982\u5ff5\uff0c\u5b58\u653e\u4e00\u7c7b\u76f8\u540c\u6216\u8005\u7c7b\u4f3c\u7684document\uff0c\u6bd4\u5982\u4e00\u4e2a\u5458\u5de5\u7d22\u5f15\uff0c\u5546\u54c1\u7d22\u5f15\u3002<\/li>\n\n\n\n<li>\u7c7b\u578b(Type)\uff1a\u903b\u8f91\u4e0a\u7684\u6570\u636e\u5206\u7c7b\uff0c\u4e00\u79cdtype\u5c31\u50cf\u4e00\u5f20\u8868\u3002\u5982\u7528\u6237\u8868\u3001\u89d2\u8272\u8868\u7b49\u3002\u5728Elasticsearch6.X\u9ed8\u8ba4type\u4e3a_doc\uff0ces 7.x\u4e2d\u5220\u9664\u4e86type\u7684\u6982\u5ff5<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u4e86\u89e3\u4e86ES\u7684\u57fa\u672c\u6982\u5ff5\u4e4b\u540e\uff0c\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u53ef\u4ee5\u5927\u81f4\u89e3\u91ca\u4e0b\uff0c\u4e3a\u4f55ES\u53ef\u4ee5\u5b9e\u73b0\u9ad8\u6548\u7684\u5168\u6587\u68c0\u7d22\u529f\u80fd\uff0c\u5176\u4e2d\u4e00\u4e2a\u5f88\u91cd\u8981\u7684\u539f\u56e0\u662fES\u4f7f\u7528\u4e86\u5012\u6392\u7d22\u5f15(<strong>\u8fd9\u91cc\u8981\u6ce8\u610f\u7684\u4e00\u70b9\u662f\uff0c\u5012\u6392\u7d22\u5f15\u548c\u6587\u6863\u7684\u5b58\u50a8\u672c\u8eab\u6ca1\u6709\u5173\u7cfb\uff0c\u53ea\u662f\u4e3a\u4e86\u5feb\u901f\u7684\u5168\u6587\u68c0\u7d22\uff0c\u9488\u5bf9document\u7684\u4e00\u4e2a\u6216\u8005\u591a\u4e2a\u5b57\u6bb5\uff0c\u6240\u521b\u5efa\u7684\u7d22\u5f15)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u90a3\u4e48\u4ec0\u4e48\u662f\u5012\u6392\u7d22\u5f15\u5462\uff1f\u4e3a\u4e86\u7406\u89e3\u4ec0\u4e48\u662f\u5012\u6392\u7d22\u5f15\uff0c\u6211\u4eec\u5148\u6765\u7406\u89e3\u6b63\u6392\u7d22\u5f15\u3002\u9488\u5bf9\u4ee5\u4e0b3\u6761document\u6587\u6863\u6570\u636e\u6240\u521b\u5efa\u7684\u6b63\u6392\u7d22\u5f15\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u200b \u5173\u952e\u8bcd: \u534e\u4e3a\u624b\u673a \u2014\u2014&gt; \u534e\u4e3a \u624b\u673a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-44.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"456\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-44.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-363\"  sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><\/div><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u51e1\u662f\u7d22\u5f15\u5176\u672c\u8d28\u90fd\u662f\u5728\u5efa\u7acb\u4e00\u79cd\u6620\u5c04\u5173\u7cfb<\/li>\n\n\n\n<li>\u65e0\u8bba\u662f\u6b63\u6392\u7d22\u5f15\u8fd8\u662f\u5012\u6392\u7d22\u5f15\uff0c\u5728\u521b\u5efa\u7d22\u5f15\u65f6\u90fd\u662f\u8981\u5bf9\u76ee\u6807\u5b57\u6bb5\u7684\u503c\u8fdb\u884c\u5206\u8bcd\u7684\u3002<\/li>\n\n\n\n<li>\u6b63\u6392\u7d22\u5f15\uff0c\u5efa\u7acb\u7684\u662f\u6587\u6863\u7684\u552f\u4e00\u6807\u8bc6Id(\u5185\u5bb9\u6240\u5728\u4f4d\u7f6e) \u2014\u2014> \u6587\u6863\u76ee\u6807\u5b57\u6bb5\u5185\u5bb9\u7684\u6620\u5c04<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u6211\u4eec\u662f\u57fa\u4e8e\u6b63\u5411\u7d22\u5f15\u6765\u67e5\u627e\u548c\u201c\u534e\u4e3a\u624b\u673a\u201d\u76f8\u5173\u7684\u5546\u54c1\u4fe1\u606f(\u6839\u636e\u5546\u54c1\u7684title\u5b57\u6bb5\u7684\u503c\u6765\u5339\u914d)\uff0c\u9996\u5148\u5bf9\u641c\u7d22\u7684\u5173\u952e\u5b57\u4e5f\u4f1a\u505a\u5206\u8bcd\u5904\u7406\uff0c\u6bd4\u5982\u5206\u89e3\u4e3a&#8221;\u534e\u4e3a&#8221;\u548c&#8221;\u624b\u673a&#8221;\u4e24\u4e2a\u5173\u952e\u8bcd\uff0c\u7136\u540e\u904d\u5386\uff0c\u6bcf\u4e00\u4e2a\u6587\u6863\uff0c\u548c\u5c06\u5173\u952e\u8bcd\u548c\u6587\u6863\u4e2d\u7684\u5206\u8bcd\u5185\u5bb9\u8fdb\u884c\u5339\u914d\uff0c\u6b64\u65f6\uff0c\u6211\u4eec\u53ef\u4ee5\u67e5\u627e\u5230\u6211\u4eec\u6240\u9700\u8981\u7684\u534e\u4e3a\u624b\u673a\u7684\u76f8\u5173\u5546\u54c1\u4fe1\u606f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u662f\uff0c\u4f7f\u7528\u6b63\u5411\u7d22\u5f15\u6211\u4eec\u4ecd\u7136\u65e0\u6cd5\u907f\u514d\uff0c\u904d\u5386\u6bcf\u4e00\u4e2a\u5546\u54c1\u5bf9\u5e94\u7684\u6587\u6863(&#8220;\u7c7b\u4f3c\u5168\u8868\u626b\u63cf&#8221;)\uff0c\u8fd9\u79cd\u5339\u914d\u65b9\u5f0f\uff0c\u6548\u7387\u6bd4\u8f83\u4f4e\u4e0b\u3002\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u6362\u79cd\u65b9\u5f0f\uff0c\u57fa\u4e8e\u5012\u6392\u7d22\u5f15\uff0c\u6765\u5b9e\u73b0\u641c\u7d22\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-45.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"919\" height=\"535\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-45.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-364\"  sizes=\"auto, (max-width: 919px) 100vw, 919px\" \/><\/div><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53cd\u5411\u7d22\u5f15\u662f\u4ee5\u6587\u6bb5\u76ee\u6807\u5b57\u6bb5\u6240\u6709\u53ef\u80fd\u7684\u5206\u8bcd\u7ed3\u679c\u4e3akey\uff0c\u5176value\u8868\u8fbe\u7684\u662f\u5305\u542b\u6539\u8bcd\u7684\u6587\u6863Id(\u5373\u6587\u6863\u4f4d\u7f6e)<\/li>\n\n\n\n<li>\u901a\u8fc7\u5bf9\u6bd4\u53ef\u77e5\uff0c\u53cd\u5411\u7d22\u5f15\u8868\u8fbe\u7684\u662f\u6587\u6863\u5b57\u6bb5\u5185\u5bb9 \u2014\u2014> \u5305\u542b\u8be5\u5185\u5bb9\u7684\u6587\u6863\u4f4d\u7f6e(\u6587\u6863Id)\u7684\u6620\u5c04<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u6211\u4eec\uff0c\u57fa\u4e8e\u5012\u6392\u7d22\u5f15\uff0c\u6765\u67e5\u627e\u548c\u5173\u952e\u5b57\u201c\u534e\u4e3a\u624b\u673a\u201d\u76f8\u5173\u7684\u5546\u54c1\uff0c\u90a3\u4e48\u5f88\u663e\u7136\uff0c\u6211\u4eec\u5f88\u5bb9\u6613\u5c31\u53ef\u4ee5\u67e5\u8be2\u51fa\u60f3\u8981\u7684\u7ed3\u679c\uff0c\u5e76\u4e14\u8fd8\u4e0d\u9700\u8981\uff0c\u904d\u5386\u6bcf\u4e00\u4e2a\u5546\u54c1\u4fe1\u606f\u3002\u540c\u7406\uff0cES\u5728\u641c\u7d22\u65f6\u5c31\u662f\u57fa\u4e8e\u5012\u6392\u7d22\u5f15\uff0c\u6240\u4ee5\u5b83\u7684\u641c\u7d22\u6027\u80fd\u5f88\u597d\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-46-1024x856.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"856\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-46-1024x856.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-365\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ES\u53ca\u53ef\u89c6\u5316\u5ba2\u6237\u7aef\u5b89\u88c5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be6\u60c5\u53c2\u89c1\u9879\u76ee\u4ecb\u7ecd\u4e2d\u7684\u73af\u5883\u642d\u5efa<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Restful API\u64cd\u4f5cES<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ES\u867d\u7136\u662f\u57fa\u4e8eJava\u8bed\u8a00\u5f00\u53d1\u7684\uff0c\u4f46\u5b83\u7684\u4f7f\u7528\u5374\u4e0d\u4ec5\u4ec5\u5c40\u9650\u4e8eJava\u8bed\u8a00\uff0c\u56e0\u4e3aES\u5bf9\u5916\u63d0\u4f9b\u4e86Restful\u98ce\u683c\u7684API\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e9bRestful\u98ce\u683c\u7684API\u5411ES\u53d1\u9001\u8bf7\u6c42\uff0c\u4ece\u800c\u64cd\u4f5cES\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u64cd\u4f5c\u7d22\u5f15<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u521b\u5efa\u7d22\u5f15<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>PUT http:\/\/ip:\u7aef\u53e3\/\u7d22\u5f15\u540d\u79f0<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u67e5\u8be2\u7d22\u5f15<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>GET http:\/\/ip:\u7aef\u53e3\/\u7d22\u5f15\u540d\u79f0  # \u67e5\u8be2\u5355\u4e2a\u7d22\u5f15\u4fe1\u606f\nGET http:\/\/ip:\u7aef\u53e3\/\u7d22\u5f15\u540d\u79f01,\u7d22\u5f15\u540d\u79f02...  # \u67e5\u8be2\u591a\u4e2a\u7d22\u5f15\u4fe1\u606f\nGET http:\/\/ip:\u7aef\u53e3\/_all  # \u67e5\u8be2\u6240\u6709\u7d22\u5f15\u4fe1\u606f<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5220\u9664\u7d22\u5f15<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>DELETE http:\/\/ip:\u7aef\u53e3\/\u7d22\u5f15\u540d\u79f0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u5173\u95ed\u3001\u6253\u5f00\u7d22\u5f15<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST http:\/\/ip:\u7aef\u53e3\/\u7d22\u5f15\u540d\u79f0\/_close  \nPOST http:\/\/ip:\u7aef\u53e3\/\u7d22\u5f15\u540d\u79f0\/_open<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6570\u636e\u7c7b\u578b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u7b80\u5355\u6570\u636e\u7c7b\u578b<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u5148\u6765\u770b\u4e00\u4e2a\u7b80\u5355\u7684\u6620\u5c04\u5b9a\u4e49\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PUT teacher\/_mapping\n{\n    \"properties\": {\n      \"id\": {\n        \"type\": \"integer\"  \n      },\n      \"name\": {\n        \"type\": \"text\"\n      },\n      \"isMale\": {\n        \"type\": \"boolean\"\n      }\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u5b9a\u4e49\u6620\u5c04\u7684\u65f6\u5019\uff0c\u7c7b\u6bd4\u4e8e\u5b9a\u4e49\u6570\u636e\u5e93\u4e2d\u7684\u8868\u7ed3\u6784\uff0c\u6211\u4eec\u9700\u8981\u6307\u660e\u6bcf\u4e00\u4e2a\u5b57\u6bb5\u7684\u540d\u79f0\uff0c\u6570\u636e\u7c7b\u578b\u7b49\u7b49\u4fe1\u606f\uff0c\u6240\u4ee5\u6211\u4eec\u5148\u5f97\u4e86\u89e3\u6620\u5c04\u4e2d\u5305\u542b\u7684\u6570\u636e\u7c7b\u578b\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b57\u7b26\u4e32<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>text\uff1a\u4f1a\u5206\u8bcd\uff0c\u4e0d\u652f\u6301\u805a\u5408\nkeyword\uff1a\u4e0d\u4f1a\u5206\u8bcd\uff0c\u5c06\u5168\u90e8\u5185\u5bb9\u4f5c\u4e3a\u4e00\u4e2a\u8bcd\u6761\uff0c\u652f\u6301\u805a\u5408<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6570\u503c\uff1along, integer, short, byte, double, float, half_float, scaled_float<\/li>\n\n\n\n<li>\u5e03\u5c14\uff1aboolean<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e8c\u8fdb\u5236\uff1abinary<\/li>\n\n\n\n<li>\u8303\u56f4\u7c7b\u578b<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>integer_range, float_range, long_range, double_range, date_range <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u65e5\u671f:date<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u590d\u6742\u6570\u636e\u7c7b\u578b<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u6570\u7ec4\uff1a[ ] \u6ca1\u6709\u4e13\u95e8\u7684\u6570\u7ec4\u7c7b\u578b\uff0cES\u4f1a\u81ea\u52a8\u5904\u7406\u6570\u7ec4\u7c7b\u578b\u6570\u636e<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u5bf9\u8c61\uff1a{ } Object: object(for single JSON objects \u5355\u4e2aJSON\u5bf9\u8c61)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u64cd\u4f5c\u6620\u5c04<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6dfb\u52a0\u6620\u5c04<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> #\u6dfb\u52a0\u6620\u5c04\n PUT student\/_mapping\n {\n   \"properties\":{\n     \"name\":{\n       \"type\":\"text\"\n     },\n     \"age\":{\n       \"type\":\"integer\"\n     }\n   }\n }\n \n#\u67e5\u8be2\u6620\u5c04\n GET studnt\/_mapping<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u521b\u5efa\u7d22\u5f15\u5e76\u6dfb\u52a0\u6620\u5c04<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> #\u521b\u5efa\u7d22\u5f15\u5e76\u6dfb\u52a0\u6620\u5c04\n PUT teacher\n{\n  \"mappings\": {\n    \"properties\": {\n      \"name\": {\n        \"type\": \"text\"\n      },\n      \"age\": {\n        \"type\": \"integer\"\n      }\n    }\n  }\n}\n\n# \u67e5\u8be2\u6620\u5c04\nGET teacher\/_mapping<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6dfb\u52a0\u5b57\u6bb5<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u6dfb\u52a0\u5b57\u6bb5\nPUT teacher\/_mapping\n{\n  \"properties\": {\n      \"name\": {\n        \"type\": \"text\"\n      },\n      \"age\": {\n        \"type\": \"integer\"\n      }\n    }\n}\n\n# \u67e5\u8be2\u6620\u5c04\nGET teacher\/_mapping<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u64cd\u4f5c\u6587\u6863<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u6dfb\u52a0\u6587\u6863\uff0c\u6307\u5b9aid<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST teacher\/_doc\/2\n{\n  \"name\":\"\u5f20\u4e09\",\n  \"age\":18,\n  \"address\":\"\u5317\u4eac\"\n}\n\nGET \/teacher\/_doc\/2\n\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u6dfb\u52a0\u6587\u6863\uff0c\u4e0d\u6307\u5b9aid<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u6dfb\u52a0\u6587\u6863\uff0c\u4e0d\u6307\u5b9aid\uff0c\u81ea\u52a8\u751f\u6210\nPOST teacher\/_doc\/\n{\n  \"name\":\"\u5f20\u4e09\",\n  \"age\":18,\n  \"address\":\"\u5317\u4eac\"\n}\n\n#\u67e5\u8be2\u6240\u6709\u6587\u6863\nGET \/teacher\/_search<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4fee\u6539\u6587\u6863(\u53ef\u4ee5\u53ea\u4fee\u6539\u90e8\u5206)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  POST teacher\/_update\/2\n  {\n    \"doc\": {\n      \"name\": \"\u674e\u56db\"\n    }\n  }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5220\u9664\u6587\u6863<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u5220\u9664\u6307\u5b9aid\u6587\u6863\nDELETE teacher\/_doc\/1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5206\u8bcd\u5668<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8eElastic Search\u800c\u8a00\uff0c\u5728\u751f\u6210\u5012\u6392\u7d22\u5f15\u65f6\uff0c\u9700\u8981\u5bf9\u6587\u6863\u5b57\u6bb5\u5206\u8bcd\uff0c\u5728\u641c\u7d22\u65f6\uff0c\u8fd8\u9700\u8981\u5bf9\u641c\u7d22\u5173\u952e\u5b57\u8fdb\u884c\u5206\u8bcd\uff0c\u5206\u8bcd\u7684\u5de5\u4f5c\u662f\u7531\u5206\u8bcd\u5668\u6765\u5b8c\u6210\u7684\uff0c\u4f46\u662f\u5f88\u9057\u61be\uff0cES\u4e2d\u9ed8\u8ba4\u4f7f\u7528\u7684\u5206\u8bcd\u5668\uff0c\u5bf9\u4e2d\u6587\u652f\u6301\u7684\u5e76\u4e0d\u597d\uff0c\u4f1a\u5bf9\u4e2d\u6587\u9010\u5b57\u62c6\u5206\u3002\u6240\u4ee5\u5bf9\u4e8e\u4e2d\u6587\u5185\u5bb9\u7684\u5206\u8bcd\uff0c\u6211\u4eec\u901a\u5e38\u4f1a\u91c7\u7528\uff0c\u5bf9\u4e2d\u6587\u652f\u6301\u6bd4\u8f83\u597d\u7684IK\u5206\u8bcd\u5668\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">IKAnalyzer\u662f\u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u57fa\u4e8ejava\u8bed\u8a00\u5f00\u53d1\u7684\u8f7b\u91cf\u7ea7\u7684\u4e2d\u6587\u5206\u8bcd\u5de5\u5177\u5305\uff0c\u57fa\u4e8eMaven\u6784\u5efa\uff0c\u5177\u670960\u4e07\u5b57\/\u79d2\u7684\u9ad8\u901f\u5904\u7406\u80fd\u529b\uff0c\u5e76\u4e14\u652f\u6301\u7528\u6237\u8bcd\u5178\u6269\u5c55\u5b9a\u4e49\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">IK\u5206\u8bcd\u5668\u7684\u4f7f\u7528<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">IK\u5206\u8bcd\u5668\u6709\u4e24\u79cd\u5206\u8bcd\u6a21\u5f0f\uff1aik_max_word\u548cik_smart\u6a21\u5f0f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001<strong>ik_max_word<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f1a\u5c06\u6587\u672c\u505a\u6700\u7ec6\u7c92\u5ea6\u7684\u62c6\u5206\uff0c\u6bd4\u5982\u4f1a\u5c06\u201c\u597d\u597d\u5b66\u4e60, \u5929\u5929\u5411\u4e0a\u201d\u62c6\u5206\u4e3a\u201c\u597d\u597d\u5b66\u4e60\uff0c\u597d\u597d\u5b66\u3001\u597d\u597d\u3001\u597d\u5b66\u3001\u5b66\u4e60\u3001\u5929\u5929\u5411\u4e0a\u3001\u5929\u5929\uff0c\u5411\u4e0a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u65b9\u5f0f\u4e00ik_max_word\nGET _analyze\n{\n  \"analyzer\": \"ik_max_word\",\n  \"text\": \"\u597d\u597d\u5b66\u4e60, \u5929\u5929\u5411\u4e0a\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ik_max_word\u5206\u8bcd\u5668\u6267\u884c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"tokens\" : &#91;\n    {\n      \"token\" : \"\u597d\u597d\u5b66\u4e60\",\n      \"start_offset\" : 0,\n      \"end_offset\" : 4,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 0\n    },\n    {\n      \"token\" : \"\u597d\u597d\u5b66\",\n      \"start_offset\" : 0,\n      \"end_offset\" : 3,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 1\n    },\n    {\n      \"token\" : \"\u597d\u597d\",\n      \"start_offset\" : 0,\n      \"end_offset\" : 2,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 2\n    },\n    {\n      \"token\" : \"\u597d\u5b66\",\n      \"start_offset\" : 1,\n      \"end_offset\" : 3,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 3\n    },\n    {\n      \"token\" : \"\u5b66\u4e60\",\n      \"start_offset\" : 2,\n      \"end_offset\" : 4,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 4\n    },\n    {\n      \"token\" : \"\u5929\u5929\u5411\u4e0a\",\n      \"start_offset\" : 6,\n      \"end_offset\" : 10,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 5\n    },\n    {\n      \"token\" : \"\u5929\u5929\",\n      \"start_offset\" : 6,\n      \"end_offset\" : 8,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 6\n    },\n    {\n      \"token\" : \"\u5411\u4e0a\",\n      \"start_offset\" : 8,\n      \"end_offset\" : 10,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 7\n    }\n  ]\n}\n\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001<strong>ik_smart<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f1a\u505a\u6700\u7c97\u7c92\u5ea6\u7684\u62c6\u5206\uff0c\u6bd4\u5982\u4f1a\u5c06\u201c\u597d\u597d\u5b66\u4e60, \u5929\u5929\u5411\u4e0a\u201d\u62c6\u5206\u4e3a\u597d\u597d\u5b66\u4e60\u3001\u5929\u5929\u5411\u4e0a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u65b9\u5f0f\u4e8cik_smart\nGET _analyze\n{\n  \"analyzer\": \"ik_smart\",\n  \"text\": \"\u597d\u597d\u5b66\u4e60, \u5929\u5929\u5411\u4e0a\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ik_smart\u5206\u8bcd\u5668\u6267\u884c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"tokens\" : &#91;\n    {\n      \"token\" : \"\u597d\u597d\u5b66\u4e60\",\n      \"start_offset\" : 0,\n      \"end_offset\" : 4,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 0\n    },\n    {\n      \"token\" : \"\u5929\u5929\u5411\u4e0a\",\n      \"start_offset\" : 5,\n      \"end_offset\" : 9,\n      \"type\" : \"CN_WORD\",\n      \"position\" : 1\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6307\u5b9a\u5206\u8bcd\u5668\u67e5\u8be2\u6587\u6863<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6587\u6863\u7684\u67e5\u8be2\u53ef\u4ee5\u5206\u4e3a\u4e24\u79cd\u67e5\u8be2\u65b9\u5f0f: \u534e\u4e3a\u624b\u673a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u8bcd\u6761\u67e5\u8be2\uff08term\uff09\uff1a\u8bcd\u6761\u67e5\u8be2\u4e0d\u4f1a\u5206\u6790\u67e5\u8be2\u6761\u4ef6\uff0c\u53ea\u6709\u5f53\u8bcd\u6761\u548c\u67e5\u8be2\u5b57\u7b26\u4e32\u5b8c\u5168\u5339\u914d\u65f6\u624d\u5339\u914d\u641c\u7d22<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u5168\u6587\u67e5\u8be2\uff08match\uff09\uff1a\u5168\u6587\u67e5\u8be2\u4f1a\u5206\u6790\u67e5\u8be2\u6761\u4ef6\uff0c\u5148\u5c06\u67e5\u8be2\u6761\u4ef6\u8fdb\u884c\u5206\u8bcd\uff0c\u7136\u540e\u67e5\u8be2\uff0c\u6c42\u5e76\u96c6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u51c6\u5907\u5de5\u4f5c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u521b\u5efa\u7d22\u5f15\uff0c\u6dfb\u52a0\u6620\u5c04\uff0c\u5e76\u6307\u5b9a\u5206\u8bcd\u5668\u4e3aik\u5206\u8bcd\u5668<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>PUT member\n{\n  \"mappings\": {\n    \"properties\": {\n      \"name\": {\n        \"type\": \"keyword\"\n      },\n      \"address\": {\n        \"type\": \"text\",\n        \"analyzer\": \"ik_max_word\"\uff0c\n        \"search_analyzer\": \"ik_smart\"\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6dfb\u52a0\u6587\u6863<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>POST member\/_doc\/1\n{\n  \"name\":\"zs\",\n  \"age\":18,\n  \"address\":\"\u6b66\u6c49\u5e02\u6d2a\u5c71\u533a\"\n}\n\nPOST member\/_doc\/2\n{\n  \"name\":\"lisi\",\n  \"age\":18,\n  \"address\":\"\u6b66\u6c49\u5e02\"\n}\n\nPOST \/member\/_doc\/3\n{\n  \"name\":\"ww\",\n  \"age\":18,\n  \"address\":\"\u6b66\u6c49\u9ec4\u9642\"\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u67e5\u8be2\u6620\u5c04<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>GET member\/_search<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4.\u67e5\u770b\u5206\u8bcd\u6548\u679c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET _analyze\n{\n  \"analyzer\": \"ik_max_word\",\n  \"text\": \"\u6b66\u6c49\u5e02\u6d2a\u5c71\u533a\"\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u5206\u522b\u91c7\u7528\u4e24\u79cd\u65b9\u5f0f\u67e5\u8be2\uff0c\u5206\u8bcd\u90fd\u662f\u7528IK\u5206\u8bcd\u5668\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8bcd\u6761\u67e5\u8be2(term)\uff1a\u53ea\u4f1a\u628a\u67e5\u8be2\u7684\u5173\u952e\u5b57\u5f53\u505a\u4e00\u4e2a\u8bcd\u67e5\u8be2<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u8be2member\u4e2d\u5339\u914d\u5230&#8221;\u6b66\u6c49&#8221;\u4e24\u5b57\u7684\u8bcd\u6761<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET member\/_search\n{\n  \"query\": {\n    \"term\": {\n      \"address\": {\n        \"value\": \"\u6b66\u6c49\u5e02\"\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5168\u6587\u67e5\u8be2(match)\uff1a\u4f1a\u5bf9\u67e5\u8be2\u7684\u5173\u952e\u5b57\u5206\u8bcd<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5168\u6587\u67e5\u8be2\u4f1a\u5206\u6790\u67e5\u8be2\u6761\u4ef6\uff0c\u5148\u5c06\u67e5\u8be2\u6761\u4ef6\u8fdb\u884c\u5206\u8bcd\uff0c\u7136\u540e\u67e5\u8be2\uff0c\u6c42\u5e76\u96c6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET member\/_search\n{\n  \"query\": {\n    \"match\": {\n      \"address\":\"\u6b66\u6c49\u9ec4\u9642\"\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Java \u64cd\u4f5cES<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u4ecd\u7136\u57fa\u4e8eSpringBoot\u5de5\u7a0b\uff0c\u9996\u5148\u5f15\u5165\u4f9d\u8d56<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- Elasticsearch 8 Java API Client --&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;co.elastic.clients&lt;\/groupId&gt;\n    &lt;artifactId&gt;elasticsearch-java&lt;\/artifactId&gt;\n    &lt;version&gt;8.15.5&lt;\/version&gt;\n&lt;\/dependency&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;com.fasterxml.jackson.core&lt;\/groupId&gt;\n    &lt;artifactId&gt;jackson-databind&lt;\/artifactId&gt;\n&lt;\/dependency&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9a\u4e49ES\u914d\u7f6e\u7c7b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Configuration\npublic class ElasticSearchConfig {\n\n    @Value(\"${elasticsearch.host}\")\n    String host;\n\n    @Value(\"${elasticsearch.port}\")\n    String port;\n\n    @Bean\n    public RestClient restClient() {\n        int intPort = Integer.parseInt(port);\n        return RestClient.builder(new HttpHost(host, intPort, \"http\")).build();\n    }\n\n    @Bean\n    public ElasticsearchTransport elasticsearchTransport(RestClient restClient) {\n        return new RestClientTransport(restClient, new JacksonJsonpMapper());\n    }\n\n    @Bean\n    public ElasticsearchClient elasticsearchClient(ElasticsearchTransport elasticsearchTransport) {\n        return new ElasticsearchClient(elasticsearchTransport);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u51c6\u5907\u597d\u6d4b\u8bd5\u7c7b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@SpringBootTest\nclass ElasticsearchDay01ApplicationTests {\n    \n@Autowired\nElasticsearchClient elasticsearchClient;\n\n    @Test\n    public void test() {\n        System.out.println(client);\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u521b\u5efa\u7d22\u5f15<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1.\u6dfb\u52a0\u7d22\u5f15<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * \u6dfb\u52a0\u7d22\u5f15\n     * @throws IOException\n     *\/\n    @Test\n    public void addIndex() throws IOException {\n        \/\/ 1. \u83b7\u53d6\u4e13\u95e8\u64cd\u4f5c\u7d22\u5f15\u7684\u5ba2\u6237\u7aef\n        ElasticsearchIndicesClient indices = elasticsearchClient.indices();\n        \/\/ 2. \u8c03\u7528create\u65b9\u6cd5\u53d1\u8d77\u8c03\u7528\n        CreateIndexResponse indexResponse = indices.create(request -&gt; request.index(\"member\"));\n        \/\/ 3. \u83b7\u53d6\u64cd\u4f5c\u7ed3\u679c\n        boolean acknowledged = indexResponse.acknowledged();\n        \n        System.out.println(acknowledged);\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2.\u6dfb\u52a0\u7d22\u5f15\uff0c\u5e76\u6dfb\u52a0\u6620\u5c04<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**\n     * \u6dfb\u52a0\u7d22\u5f15\uff0c\u5e76\u6dfb\u52a0\u6620\u5c04\n     *\/\n    @Test\n    public void addIndexAndMapping() throws IOException {\n       \/\/ 1. \u83b7\u53d6\u4e13\u95e8\u64cd\u4f5c\u7d22\u5f15\u7684\u5ba2\u6237\u7aef\n        ElasticsearchIndicesClient indices = elasticsearchClient.indices();\n\n        \/\/ 2. \u5b9a\u4e49mapping\n        String mappingStr = \"\"\"\n                {\n                    \"properties\": {\n                      \"id\": {\n                        \"type\": \"long\"\n                      },\n                      \"name\": {\n                        \"type\": \"text\"\n                      },\n                      \"address\": {\n                        \"type\": \"text\",\n                        \"analyzer\": \"ik_max_word\",\n                        \"search_analyzer\": \"ik_max_word\"\n                      }\n                    }\n                }\n                \"\"\";\n        \/\/ 3. \u53d1\u8d77\u521b\u5efa\u7d22\u5f15\u7684\u8bf7\u6c42\n        CreateIndexResponse createIndexResponse = indices.create(request -&gt; request\n                \/\/ \u6307\u5b9a\u7d22\u5f15\n                .index(\"member\")\n                \/\/ \u8bbe\u7f6e\u8bf7\u6c42\u4e2d\u7684mapping\u53c2\u6570\n                .mappings(mapping -&gt; mapping.withJson(new StringReader(mappingStr))));\n\n        \/\/ 4. \u83b7\u53d6\u7d22\u5f15\u521b\u5efa\u7ed3\u679c\n        Boolean acknowledged = createIndexResponse.acknowledged();\n\n        System.out.println(acknowledged);\n    }\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u67e5\u8be2\u3001\u5220\u9664\u3001\u5224\u65ad\u7d22\u5f15<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u8be2\u7d22\u5f15<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   \n\n    \/**\n     * \u67e5\u8be2\u7d22\u5f15\n     *\/\n    @Test\n    public void queryIndex() throws IOException {\n       \/\/ 1. \u83b7\u53d6\u4e13\u95e8\u64cd\u4f5c\u7d22\u5f15\u7684\u5ba2\u6237\u7aef\n        ElasticsearchIndicesClient indices = elasticsearchClient.indices();\n        \/\/ 2. \u53d1\u8d77\u83b7\u53d6\u7d22\u5f15\u7684\u8bf7\u6c42\n        GetIndexResponse getIndexResponse = indices.get(request -&gt; request.index(\"member\"));\n\n        \/\/ 3. \u83b7\u53d6\u67e5\u8be2\u7d22\u5f15\u7684\u7ed3\u679c\n        Map&lt;String, IndexState&gt; result = getIndexResponse.result();\n        for (String key : result.keySet()) {\n            System.out.println(key + \": \" + result.get(key).mappings().properties());\n        }\n    }\n\n   \n   <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5220\u9664\u7d22\u5f15<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**\n     * \u5220\u9664\u7d22\u5f15\n     *\/\n    @Test\n    public void deleteIndex() throws IOException {\n      \/\/ 1. \u83b7\u53d6\u4e13\u95e8\u64cd\u4f5c\u7d22\u5f15\u7684\u5ba2\u6237\u7aef\n        ElasticsearchIndicesClient indices = elasticsearchClient.indices();\n        \/\/ 2. \u53d1\u8d77\u5220\u9664\u7d22\u5f15\u7684\u8bf7\u6c42\n        DeleteIndexResponse deleteIndexResponse = indices\n                \/\/ \u5220\u9664\u7d22\u5f15\n                .delete(request -&gt; request.index(\"member\"));\n\n        \/\/ 3. \u83b7\u53d6\u5220\u9664\u7d22\u5f15\u7684\u7ed3\u679c\n        Boolean acknowledged = deleteIndexResponse.acknowledged();\n\n        System.out.println(acknowledged);\n\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7d22\u5f15\u662f\u5426\u5b58\u5728<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**\n     * \u7d22\u5f15\u662f\u5426\u5b58\u5728\n     *\/\n    @Test\n    public void existIndex() throws IOException {\n boolean exists = elasticsearchClient.indices()\n                \/\/ \u5224\u65ad\u7d22\u5f15\u662f\u5426\u5b58\u5728\n                .exists(request -&gt; request.index(\"member\"))\n                .value();\n\n        System.out.println(exists);\n\n    }\n    <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6dfb\u52a0\u6587\u6863<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1.\u6dfb\u52a0\u6587\u6863,\u4f7f\u7528map\u4f5c\u4e3a\u6570\u636e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> @Test\n    public void addDoc1() throws IOException {\n       \/\/ \u7528map\u5bf9\u8c61\u8868\u793a\u5f85\u6dfb\u52a0\u7684\u6587\u6863\u7684\u5404\u4e2a\u5c5e\u6027\u7684\u503c\n        Map&lt;String, Object&gt; paramMap = new HashMap&lt;&gt;();\n        paramMap.put(\"id\", 1);\n        paramMap.put(\"name\", \"xuejia\");\n        paramMap.put(\"address\", \"\u6b66\u6c49\u5e02\u6c5f\u5cb8\u533a\");\n\n        \/\/ \u6dfb\u52a0\u6587\u6863\uff1a\u6307\u5b9a\u7d22\u5f15\uff0c\u6587\u6863\u7684\u552f\u4e00\u8868\u793a\uff0c\u6587\u6863\u5404\u5b57\u6bb5\u503c\n        Result result = elasticsearchClient.index(request -&gt; request\n                        \/\/ \u6307\u5b9a\u7d22\u5f15\u540d\u79f0\n                        .index(\"member\")\n                        \/\/ \u6307\u5b9a\u6587\u6863\u7684\u552f\u4e00\u6807\u8bc6\n                        .id(\"cskaoyan001\")\n                        \/\/ \u6307\u5b9a\n                        .document(paramMap))\n                .result();\n\n        System.out.println(result.jsonValue());\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2.\u6dfb\u52a0\u6587\u6863,\u4f7f\u7528\u5bf9\u8c61\u4f5c\u4e3a\u6570\u636e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Test\npublic void addDoc2() throws IOException {\n    \/\/ \u7528\u5bf9\u8c61\u7684\u6210\u5458\u53d8\u91cf\u503c\u6765\u8868\u793a\u6587\u6863\u7684\u5404\u4e2a\u5c5e\u6027\u503c\n        Member member = new Member();\n        member.setId(2);\n        member.setName(\"shitou\");\n        member.setAddress(\"\u6b66\u6c49\u5e02\u6c5f\u590f\u533a\");\n\n        \/\/ \u5c06\u5bf9\u8c61\u8f6c\u5316\u6210Json\u5b57\u7b26\u4e32\n        String docJson = JSON.toJSONString(member);\n\n        \/\/ \u53d1\u8d77\u6dfb\u52a0\u6587\u6863\u7684\u8bf7\u6c42\n        Result result = elasticsearchClient.index(request -&gt; request\n                        \/\/ \u6307\u5b9a\u6dfb\u52a0\u6587\u6863\u7684\u7d22\u5f15\n                        .index(\"member\")\n                         \/\/ \u6307\u5b9a\u6240\u6dfb\u52a0\u7684\u6587\u6863\u7684\u552f\u4e00\u6807\u8bc6\n                        .id(\"cskaoyan002\")\n                         \/\/ \u4ee5Json\u7684\u5f62\u5f0f\u6307\u5b9a\u6587\u6863\u7684\u5404\u4e2a\u5c5e\u6027\u503c\n                        .withJson(new StringReader(docJson)))\n                .result();\n\n        \/\/ \u8f93\u51fa\u6dfb\u52a0\u7ed3\u679c\n        System.out.println(result.jsonValue());\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4fee\u6539\u3001\u67e5\u8be2\u3001\u5220\u9664\u6587\u6863<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1.\u4fee\u6539\u6587\u6863\uff1a\u6dfb\u52a0\u6587\u6863\u65f6\uff0c\u5982\u679cid\u5b58\u5728\u5219\u4fee\u6539(\u5168\u91cf\u4fee\u6539)\uff0c\u6216\u8005\u505a\u589e\u91cf\u4fee\u6539<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/**\n     * \u4fee\u6539\u6587\u6863\uff1a\u6dfb\u52a0\u6587\u6863\u65f6\uff0c\u5982\u679cid\u5b58\u5728\u5219\u4fee\u6539\uff0cid\u4e0d\u5b58\u5728\u5219\u6dfb\u52a0\n     *\/\n\n    @Test\n    public void UpdateDoc() throws IOException {\n      \/\/ \u5c06\u8981\u4fee\u6539\u7684\u6587\u6863\u7684\u6240\u6709\u5c5e\u6027\u503c\uff0c\u4ee5key-value\u7684\u5f62\u5f0f\u653e\u5165map\n        Map&lt;String, Object&gt; paramMap = new HashMap&lt;&gt;();\n        paramMap.put(\"id\", 1);\n        paramMap.put(\"name\", \"xuejia666\");\n        paramMap.put(\"address\", \"\u6b66\u6c49\u5e02\u6c5f\u5cb8\u533a\");\n\n        \/\/ \u53d1\u8d77\u6dfb\u52a0\u6587\u6863\u7684\u8bf7\u6c42(\u5b9e\u9645\u6548\u679c\u4e3a\u5168\u91cf\u4fee\u6539)\n        Result result = elasticsearchClient.index(request -&gt; request\n                        \/\/ \u6307\u5b9a\u6dfb\u52a0\u6587\u6863\u7684\u7d22\u5f15\n                        .index(\"member\")\n                        \/\/ \u6307\u5b9a\u5f85\u6dfb\u52a0\u7684\u6587\u6863\u7684\u552f\u4e00\u6807\u8bc6\n                        .id(\"cskaoyan001\")\n                        \/\/ \u6307\u5b9a\u8981\u4fee\u6539\u7684\u6587\u6863\u7684\u5404\u4e2a\u5c5e\u6027\u503c\n                        .document(paramMap))\n                .result();\n\n        \/\/ \u8f93\u51fa\u7ed3\u679c\n        System.out.println(result.jsonValue());\n    }<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\n    \/*\n       \u589e\u91cf\u4fee\u6539\uff0c\u53ea\u4fee\u6539\u6587\u6863\u7684\u4e00\u90e8\u5206\n    *\/\n    @Test\n    public void update() throws IOException {\n        \/\/ \u4ec5\u4ec5\u53ea\u8bb2\u8981\u4fee\u6539\u7684\u6587\u6863\u7684\u5404\u4e2a\u5c5e\u6027\u503c\u653e\u5165map\n        HashMap&lt;String, Object&gt; updateDocMap = new HashMap&lt;&gt;();\n        updateDocMap.put(\"name\", \"shitou666\");\n\n        \/\/ \u53d1\u8d77\u589e\u91cf\u4fee\u6539\u7684\u8bf7\u6c42\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u8868\u793a\u8981\u4fee\u6539\u7684\u5404\u4e2a\u5c5e\u6027\u503c\u653e\u5728Map\u4e2d\n        Result result = elasticsearchClient.update(request -&gt; request\n                                .index(\"member\")\n                                .id(\"cskaoyan002\")\n                                .doc(updateDocMap),\n                        Map.class)\n                .result();\n\n        \/\/ \u8f93\u51fa\u7ed3\u679c\n        System.out.println(result.jsonValue());\n    }\n\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3.\u6839\u636eid\u67e5\u8be2\u6587\u6863<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/**\n     * \u6839\u636eid\u67e5\u8be2\u6587\u6863\n     *\/\n    @Test\n    public void getDoc() throws IOException {\n\n \/\/ \u53d1\u8d77\u83b7\u53d6\u6587\u6863\u7684\u8bf7\u6c42, \u6cdb\u578b\u4e3amap\u8868\u793a\u6587\u6863\u6570\u636e\u5c01\u88c5\u5728Map\u4e2d\n        GetResponse&lt;Map&gt; getResponse = elasticsearchClient.get(request -&gt; request\n                        \/\/\n                        .index(\"member\")\n                        .id(\"cskaoyan002\"),\n                \/\/ Map.class\u53c2\u6570\u8868\u793a\u6587\u6863\u5185\u5bb9\u5c01\u88c5\u5728Map\u5bf9\u8c61\u4e2d\n                Map.class);\n\n        Map&lt;String, Object&gt; source = getResponse.source();\n        System.out.println(source);\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4.\u6839\u636eid\u5220\u9664\u6587\u6863<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * \u6839\u636eid\u5220\u9664\u6587\u6863\n     *\/\n    @Test\n    public void delDoc() throws IOException {\n\n String result = elasticsearchClient.delete(request -&gt; request\n                        \/\/ \u6307\u5b9a\u7d22\u5f15\u540d\u79f0\n                        .index(\"member\")\n                        \/\/ \u6307\u5b9a\u8981\u5220\u9664\u7684\u6587\u6863\u7684\u552f\u4e00\u6807\u8bc6\n                        .id(\"cskaoyan001\"))\n                .result()\n                .jsonValue();\n\n        System.out.println(result);\n    }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Elasticsearch \u9ad8\u7ea7\u64cd\u4f5c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6628\u5929\u6211\u4eec\u5b66\u4e60\u4e86\uff0c\u5bf9\u4e8eElastic Search\u57fa\u672c\u7684\u7d22\u5f15\uff0c\u6620\u5c04\uff0c\u6587\u6863\u76f8\u5173\u7684\u589e\u5220\u6539\u67e5\u64cd\u4f5c\u3002\u4f46\u662f\u5bf9\u4e8eElastic Search\u8fd8\u6709\u4e00\u4e9b\u66f4\u4e3a\u590d\u6742\u7684\u9ad8\u7ea7\u64cd\u4f5c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6279\u91cf\u64cd\u4f5c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7\u6279\u91cf\u64cd\u4f5c\uff0c\u6211\u4eec\u53ef\u4ee5\u4e00\u6b21\u5411Elastic Search\u53d1\u9001\u591a\u6761\u589e\u5220\u6539\u64cd\u4f5c\u3002\u4ece\u800c\u8fbe\u5230\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u8282\u7701\u5e26\u5bbd\u7684\u64cd\u4f5c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u57fa\u672c\u8bed\u6cd5<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5148\u6765\u770b\u901a\u8fc7\u811a\u672c\u7684\u65b9\u5f0f\u6267\u884c\u6279\u91cf\u64cd\u4f5c\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># \u51c6\u5907\u5de5\u4f5c\u5b9a\u4e49\u7d22\u5f15\uff0c\u53ca\u5176\u6620\u5c04\nPUT teacher\n{\n  \"mappings\": {\n    \"properties\": {\n    \"id\": {\"type\": \"long\"},\n    \"name\": {\"type\": \"text\"},\n    \"age\": {\"type\": \"integer\"}\n   }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6279\u91cf\u64cd\u4f5c\u811a\u672c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u6279\u91cf\u64cd\u4f5c\n#\u5220\u96641\u53f7\n#\u65b0\u589e2\u53f7\n#\u66f4\u65b02\u53f7 \nPOST _bulk\n{\"create\": {\"_index\": \"teacher\", \"_id\": \"2\"}}\n{\"name\": \"\u5357\u98ce\", \"age\": 18}\n{\"update\": {\"_index\": \"teacher\", \"_id\": 2}}\n{\"doc\": {\"name\":\"\u666f\u5929\", \"age\": 19}}\n{\"delete\": {\"_index\":\"teacher\", \"_id\": \"1\"}}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u63a5\u7740\u6211\u4eec\u4f7f\u7528JAVA API\u6267\u884c\u6279\u91cf\u64cd\u4f5c<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**\n     *  Bulk \u6279\u91cf\u64cd\u4f5c\n     *\/\n    @Test\n    public void test2() throws IOException {\n\n \/\/ \u51c6\u5907\u5f85\u6dfb\u52a0\u7684\u7b2c\u4e00\u6761\u6587\u6863\u7684\u5404\u4e2a\u5b57\u6bb5\u503c\n        HashMap&lt;String, Object&gt; firstDocMap = new HashMap&lt;&gt;();\n        firstDocMap.put(\"id\", 1);\n        firstDocMap.put(\"name\", \"xuejia\");\n        firstDocMap.put(\"age\", 18);\n\n        \/\/ \u51c6\u5907\u5f85\u6dfb\u52a0\u7684\u7b2c\u4e8c\u6761\u6587\u6863\u7684\u5404\u4e2a\u5b57\u6bb5\u503c\n        HashMap&lt;String, Object&gt; secondDocMap = new HashMap&lt;&gt;();\n        secondDocMap.put(\"id\", 2);\n        secondDocMap.put(\"name\", \"shitou\");\n        secondDocMap.put(\"age\", 19);\n\n        \/\/ \u51c6\u5907\u5f85\u6dfb\u52a0\u7684\u7b2c\u4e8c\u6761\u6587\u6863\u7684\u5404\u4e2a\u5b57\u6bb5\u503c\n        HashMap&lt;String, Object&gt; updateMap = new HashMap&lt;&gt;();\n        updateMap.put(\"name\", \"xuejia666\");\n        updateMap.put(\"id\", 100);\n\n        \/\/ \u8c03\u7528bulk\u65b9\u6cd5\u6267\u884c\u6279\u91cf\u64cd\u4f5c\n        BulkResponse bulkResponse = elasticsearchClient.bulk(request -&gt; request\n                \/*\n                    1. \u8c03\u7528operations\u65b9\u6cd5\u6784\u9020\u4e00\u6b21\u64cd\u4f5c\n                    2. \u4f7f\u7528operations\u65b9\u6cd5\u53c2\u6570\u6765\u6784\u9020\u4e00\u4e2a\u5177\u4f53\u64cd\u4f5c\uff0c\u8c03\u7528index\u65b9\u6cd5\u6784\u9020\u6dfb\u52a0\u6587\u6863\u64cd\u4f5c\n                 *\/\n                .operations(operation -&gt; operation.index(index -&gt; index\n                        .index(\"teacher\")\n                        .id(\"cskaoyan001\")\n                        .document(firstDocMap)))\n                 \/*\n                     1. \u8c03\u7528operations\u65b9\u6cd5\u6784\u9020\u4e00\u6b21\u64cd\u4f5c\n                     2. \u4f7f\u7528operations\u65b9\u6cd5\u53c2\u6570\u6765\u6784\u9020\u4e00\u4e2a\u5177\u4f53\u64cd\u4f5c\uff0c\u8c03\u7528index\u65b9\u6cd5\u6784\u9020\u6dfb\u52a0\u6587\u6863\u64cd\u4f5c\n                  *\/\n                .operations(operation -&gt; operation.index(index -&gt; index\n                        .index(\"teacher\")\n                        .id(\"cskaoyan002\")\n                        .document(secondDocMap)))\n                \/*\n                    1. \u8c03\u7528operations\u65b9\u6cd5\u6784\u9020\u4e00\u6b21\u64cd\u4f5c\n                    2. \u4f7f\u7528operations\u65b9\u6cd5\u53c2\u6570\u6765\u6784\u9020\u4e00\u4e2a\u5177\u4f53\u64cd\u4f5c\uff0c\u8c03\u7528update\u65b9\u6cd5\u6784\u9020\u6587\u6863\u7684\n                       \u589e\u91cf\u66f4\u65b0\u64cd\u4f5c\n                 *\/\n                .operations(operation -&gt; operation.update(update -&gt; update\n                        .index(\"teacher\")\n                        .id(\"cskaoyan001\")\n                        .action(action -&gt; action.doc(updateMap))))\n                \/*\n                    1. \u8c03\u7528operations\u65b9\u6cd5\u6784\u9020\u4e00\u6b21\u64cd\u4f5c\n                    2. \u4f7f\u7528operations\u65b9\u6cd5\u53c2\u6570\u6765\u6784\u9020\u4e00\u4e2a\u5177\u4f53\u64cd\u4f5c\uff0c\u8c03\u7528delete\u65b9\u6cd5\u6784\u9020\u5220\u9664\u6587\u6863\u64cd\u4f5c\n                 *\/\n                .operations(operation -&gt; operation.delete(delete -&gt; delete\n                        .index(\"teacher\")\n                        .id(\"cskaoyan002\"))));\n\n\n        \/\/ \u8f93\u51fa\u6279\u91cf\u64cd\u4f5c\u7684\u4e2d\u7684\u9519\u8bef\u4fe1\u606f(\u5982\u679c\u6709\u7684\u8bdd)\n        System.out.println(bulkResponse.errors());\n\n\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6279\u91cf\u4ece\u6570\u636e\u5e93\u5bfc\u5165\u6570\u636e<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u521b\u5efa\u7d22\u5f15\u548c\u6620\u5c04<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>PUT product\n{\n  \"mappings\": {\n    \"properties\": {\n      \"id\":{\"type\": \"long\"},\n      \"image\": {\"type\":  \"keyword\"},\n      \"status\": {\"type\": \"integer\"},\n      \"sellPoint\": {\n        \"type\": \"text\",\n        \"analyzer\": \"ik_max_word\",\n         \"search_analyzer\": \"ik_smart\"\n      },\n      \"title\": {\n        \"type\": \"text\",\n        \"analyzer\": \"ik_max_word\",\n        \"search_analyzer\": \"ik_smart\"\n      },\n      \"num\":{\"type\": \"integer\"},\n      \"tmName\": {\"type\": \"keyword\"},\n      \"cid\": {\"type\": \"long\"},\n      \"price\": {\"type\": \"double\"},\n      \"limitNum\": {\"type\": \"integer\"},\n      \"created\": {\"type\": \"date\"},\n      \"updated\": {\"type\": \"date\"}\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ee3\u7801\u5b9e\u73b0\u4ece\u6570\u636e\u5e93\u6279\u91cf\u5c06\u6570\u636e\u5bfc\u5165Elastic Search<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**\n     * \u4eceMysql \u6279\u91cf\u5bfc\u5165 elasticSearch\n     *\/\n    @Test\n    public void test3() throws IOException {\n         List&lt;Item&gt; items = itemMapper.selectList(null);\n\n        BulkResponse bulkResponse = elasticsearchClient.bulk(request -&gt; {\n            for (Item item : items) {\n                String docJson = JSON.toJSONString(item);\n                System.out.println(docJson);\n\n                \/\/ \u9488\u5bf9\u6bcf\u4e00\u4e2aitem\u5bf9\u8c61\uff0c\u6784\u9020\u4e00\u4e2a\u6dfb\u52a0\u6587\u6863\u7684\u64cd\u4f5c\uff0c\u6dfb\u52a0\u5230\u6279\u91cf\u64cd\u4f5c\u8bf7\u6c42\u4e2d\n                request.operations(operation -&gt; operation.index(index -&gt; index\n                        .index(\"product\")\n                        .id(item.getId().toString())\n                        .document(item)));\n            }\n            return request;\n        });\n\n        \/\/ \u8f93\u51fa\u6279\u91cf\u64cd\u4f5c\u7684\u4e2d\u7684\u9519\u8bef\u4fe1\u606f(\u5982\u679c\u6709\u7684\u8bdd)\n        System.out.println(bulkResponse.errors());\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u9ad8\u7ea7\u67e5\u8be2<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>match all \u67e5\u8be2<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">match all\u67e5\u8be2\uff0c\u76f8\u5f53\u4e8e\u4e0d\u52a0\u67e5\u8be2\u6761\u4ef6\u7684\u67e5\u8be2\u7d22\u5f15\u4e2d\u6240\u6709\u7684\u6587\u6863<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET product\/_search\n{\n  \"query\": {\n    \"match_all\": {}\n  },\n  \"from\": 0,\n  \"size\": 100\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * \u67e5\u8be2\u6240\u6709\n     *  1. matchAll\n     *  2. \u5c06\u67e5\u8be2\u7ed3\u679c\u5c01\u88c5\u4e3aGoods\u5bf9\u8c61\uff0c\u88c5\u8f7d\u5230List\u4e2d\n     *  3. \u5206\u9875\u3002\u9ed8\u8ba4\u663e\u793a10\u6761\n     *\/\n    @Test\n    public void matchAll() throws IOException {\n\n         \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\n        SearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                \/\/ \u6307\u5b9a\u7d22\u5f15\n                .index(\"product\")\n                 \/\/ \u6784\u9020match_all\u67e5\u8be2\n                .query(query -&gt; query.matchAll(matchAll -&gt; matchAll))\n                \/\/ \u8bbe\u7f6efrom\n                .from(0)\n                \/\/ \u8bbe\u7f6esize\n                .size(30), Item.class);\n         \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u503c\n        HitsMetadata&lt;Item&gt; searchHits = searchResponse.hits();\n\n        \/\/ \u83b7\u53d6\u6ee1\u8db3\u67e5\u8be2\u6761\u4ef6\u7684\u603b\u7684\u6587\u6863\u6761\u6570\n        long totalCount = searchHits.total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n\n        \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u7684hits\u5c5e\u6027\u503c(\u5305\u542b\u67e5\u8be2\u5230\u7684\u6bcf\u6761\u6587\u6863\u4fe1\u606f)\n        List&lt;Hit&lt;Item&gt;&gt; hits = searchHits.hits();\n\n        ArrayList&lt;Item&gt; items = new ArrayList&lt;&gt;();\n        for (Hit&lt;Item&gt; hit : hits) {\n            \/\/ \u83b7\u53d6source\u5c5e\u6027\u503c\uff0c\u4ee3\u8868\u539f\u59cb\u6587\u6863\n            Item source = hit.source();\n            items.add(source);\n        }\n        System.out.println(items);\n\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>term \u67e5\u8be2<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">term\u67e5\u8be2\u548c\u5b57\u6bb5\u7c7b\u578b\u6709\u5173\u7cfb\uff0c\u9996\u5148\u56de\u987e\u4e00\u4e0bElasticSearch\u4e24\u4e2a\u6570\u636e\u7c7b\u578b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ElasticSearch\u4e24\u4e2a\u6570\u636e\u7c7b\u578b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>text\uff1a\u4f1a\u5206\u8bcd\uff0c\u4e0d\u652f\u6301\u805a\u5408<\/li>\n\n\n\n<li>keyword\uff1a\u4e0d\u4f1a\u5206\u8bcd\uff0c\u5c06\u5168\u90e8\u5185\u5bb9\u4f5c\u4e3a\u4e00\u4e2a\u8bcd\u6761\uff0c\u652f\u6301\u805a\u5408<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">term\u67e5\u8be2\uff1a\u4e0d\u4f1a\u5bf9\u67e5\u8be2\u6761\u4ef6\u8fdb\u884c\u5206\u8bcd\u3002\u4f46\u662f\u6ce8\u610f\uff0cterm\u67e5\u8be2\uff0c\u67e5\u8be2text\u7c7b\u578b\u5b57\u6bb5\u65f6\uff0c\u6587\u6863\u4e2d\u7c7b\u578b\u4e3atext\u7c7b\u578b\u7684\u5b57\u6bb5\u672c\u8eab\u4ecd\u7136\u4f1a\u5206\u8bcd<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET product\/_search\n{\n  \"query\": {\n    \"term\": {\n      \"title\": {\n        \"value\": \"\u624b\u673a\u5145\u7535\u5668\"\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Java API<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Test\n    public void testTerm() throws IOException {\n         \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\n        SearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                \/\/ \u6307\u5b9a\u7d22\u5f15\n                .index(\"product\")\n                \/\/ \u6784\u9020term\u67e5\u8be2\n                .query(query -&gt; query.term(term -&gt; term\n                        .field(\"title\")\n                        .value(\"\u624b\u673a\u5145\u7535\u5668\"))), Item.class);\n\t\t\t \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u503c\n        HitsMetadata&lt;Item&gt; searchHits = searchResponse.hits();\n\n        \/\/ \u83b7\u53d6\u6ee1\u8db3\u67e5\u8be2\u6761\u4ef6\u7684\u603b\u7684\u6587\u6863\u6761\u6570\n        long totalCount = searchHits.total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n\n        \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u7684hits\u5c5e\u6027\u503c(\u5305\u542b\u67e5\u8be2\u5230\u7684\u6bcf\u6761\u6587\u6863\u4fe1\u606f)\n        List&lt;Hit&lt;Item&gt;&gt; hits = searchHits.hits();\n\n        ArrayList&lt;Item&gt; items = new ArrayList&lt;&gt;();\n        for (Hit&lt;Item&gt; hit : hits) {\n            \/\/ \u83b7\u53d6source\u5c5e\u6027\u503c\uff0c\u4ee3\u8868\u539f\u59cb\u6587\u6863\n            Item source = hit.source();\n            items.add(source);\n        }\n        System.out.println(items);\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>match\u67e5\u8be2<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">match\u67e5\u8be2\u7684\u7279\u5f81\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u4f1a\u5bf9\u67e5\u8be2\u6761\u4ef6\u8fdb\u884c\u5206\u8bcd\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u7136\u540e\u5c06\u5206\u8bcd\u540e\u7684\u67e5\u8be2\u6761\u4ef6\u548c\u76ee\u6807\u5b57\u6bb5\u5206\u8bcd\u540e\u7684\u8bcd\u6761\u8fdb\u884c\u7b49\u503c\u5339\u914d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022\u9ed8\u8ba4\u53d6\u5e76\u96c6\uff08OR\uff09\uff0c\u5373\u53ea\u8981\u67e5\u8be2\u6761\u4ef6\u4e2d\u7684\u4e00\u4e2a\u5206\u8bcd\u548c\u76ee\u6807\u5b57\u6bb5\u503c\u7684\u4e00\u4e2a\u5206\u8bcd(\u8bcd\u6761)\u5339\u914d\uff0c\u5373\u8ba4\u4e3a\u5339\u914d\u67e5\u8be2\u6761\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># match\u67e5\u8be2\nGET product\/_search\n{\n  \"query\": {\n    \"match\": {\n      \"title\": \"\u624b\u673a\u5145\u7535\u5668\"\n    }\n  },\n  \"size\": 500\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">match \u7684\u9ed8\u8ba4\u641c\u7d22\uff08or \u5e76\u96c6\uff09\u4f8b\u5982\uff1a\u534e\u4e3a\u624b\u673a\uff0c\u4f1a\u5206\u8bcd\u4e3a \u201c\u534e\u4e3a\u201d\uff0c\u201c\u624b\u673a\u201d \u53ea\u8981\u51fa\u73b0\u5176\u4e2d\u4e00\u4e2a\u8bcd\u6761\u90fd\u4f1a\u8ba4\u4e3a\u8bcd\u6761\u5339\u914d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">match\u7684 and\uff08\u4ea4\u96c6\uff09 \u641c\u7d22\uff0c\u4f8b\u5982\uff1a\u4f8b\u5982\uff1a\u534e\u4e3a\u624b\u673a\uff0c\u4f1a\u5206\u8bcd\u4e3a \u201c\u534e\u4e3a\u201d\uff0c\u201c\u624b\u673a\u201d \u4f46\u8981\u6c42\u201c\u534e\u4e3a\u201d\uff0c\u548c\u201c\u624b\u673a\u201d\u540c\u65f6\u51fa\u73b0\u5728\u8bcd\u6761\u4e2d\uff0c\u624d\u7b97\u8bcd\u6761\u5339\u914d<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET product\/_search\n{\n  \"query\": {\n    \"match\": {\n      \"title\": {\n        \"query\": \"\u624b\u673a\u5145\u7535\u5668\",\n        \"operator\": \"and\"\n      }\n    }\n  },\n  \"size\": 500\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Java API<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    @Test\n    public void testMatch() throws IOException {\n        \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\n        SearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                \/\/ \u6307\u5b9a\u7d22\u5f15\n                .index(\"product\")\n                \/\/ \u6784\u9020match\u67e5\u8be2\n                .query(query -&gt; query.match(match -&gt; match\n                        .field(\"title\")\n                        .query(\"\u624b\u673a\u5145\u7535\u5668\")\n                        \/\/.operator(Operator.And)\n                )), Item.class);\n      \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u503c\n        HitsMetadata&lt;Item&gt; searchHits = searchResponse.hits();\n\n        \/\/ \u83b7\u53d6\u6ee1\u8db3\u67e5\u8be2\u6761\u4ef6\u7684\u603b\u7684\u6587\u6863\u6761\u6570\n        long totalCount = searchHits.total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n\n        \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u7684hits\u5c5e\u6027\u503c(\u5305\u542b\u67e5\u8be2\u5230\u7684\u6bcf\u6761\u6587\u6863\u4fe1\u606f)\n        List&lt;Hit&lt;Item&gt;&gt; hits = searchHits.hits();\n\n        ArrayList&lt;Item&gt; items = new ArrayList&lt;&gt;();\n        for (Hit&lt;Item&gt; hit : hits) {\n            \/\/ \u83b7\u53d6source\u5c5e\u6027\u503c\uff0c\u4ee3\u8868\u539f\u59cb\u6587\u6863\n            Item source = hit.source();\n            items.add(source);\n        }\n        System.out.println(items);\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>querystring<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">queryString \u591a\u6761\u4ef6\u67e5\u8be2<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f1a\u5bf9\u67e5\u8be2\u6761\u4ef6\u8fdb\u884c\u5206\u8bcd\u3002<\/li>\n\n\n\n<li>\u7136\u540e\u5c06\u5206\u8bcd\u540e\u7684\u67e5\u8be2\u6761\u4ef6\u548c\u8bcd\u6761\u8fdb\u884c\u7b49\u503c\u5339\u914d<\/li>\n\n\n\n<li>\u9ed8\u8ba4\u53d6\u5e76\u96c6\uff08OR\uff09<\/li>\n\n\n\n<li>\u53ef\u4ee5\u6307\u5b9a\u591a\u4e2a\u67e5\u8be2\u5b57\u6bb5<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">query_string\uff1a\u53ef\u4ee5\u8bc6\u522bquery\u4e2d\u7684\u8fde\u63a5\u7b26\uff08or \u3001and\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># queryString\n\nGET product\/_search\n{\n  \"query\": {\n    \"query_string\": {\n      \"fields\": &#91;\"title\",\"sellPoint\"], \n      \"query\": \"\u539f\u88c5\u5145\u7535\u5668\"\n    }\n  }\n}\n\n\nGET product\/_search\n{\n  \"query\": {\n    \"query_string\": {\n      \"fields\": &#91;\"title\",\"sellPoint\"], \n      \"query\": \"\u539f\u88c5 AND \u5145\u7535\u5668\"\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">java\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void queryStringQuery() throws IOException {\n\n   \n        \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\n        SearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                \/\/ \u6307\u5b9a\u7d22\u5f15\n                .index(\"product\")\n                \/\/ \u6784\u9020query_string\u67e5\u8be2\n                .query(query -&gt; query.queryString(queryString -&gt; queryString\n                         \/\/ \u8bbe\u7f6efields\n                        .fields(\"title\", \"sellPoint\")\n                         \/\/ \u8bbe\u7f6e\u67e5\u8be2\u5173\u952e\u8bcd\n                        .query(\"\u539f\u88c5\u5145\u7535\u5668\")\n                        \/\/.query(\"\u539f\u88c5 AND \u5145\u7535\u5668\")\n                  )), Item.class);\n       \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u503c\n        HitsMetadata&lt;Item&gt; searchHits = searchResponse.hits();\n\n        \/\/ \u83b7\u53d6\u6ee1\u8db3\u67e5\u8be2\u6761\u4ef6\u7684\u603b\u7684\u6587\u6863\u6761\u6570\n        long totalCount = searchHits.total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n\n        \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u7684hits\u5c5e\u6027\u503c(\u5305\u542b\u67e5\u8be2\u5230\u7684\u6bcf\u6761\u6587\u6863\u4fe1\u606f)\n        List&lt;Hit&lt;Item&gt;&gt; hits = searchHits.hits();\n\n        ArrayList&lt;Item&gt; items = new ArrayList&lt;&gt;();\n        for (Hit&lt;Item&gt; hit : hits) {\n            \/\/ \u83b7\u53d6source\u5c5e\u6027\u503c\uff0c\u4ee3\u8868\u539f\u59cb\u6587\u6863\n            Item source = hit.source();\n            items.add(source);\n        }\n        System.out.println(items);\n        \n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8303\u56f4 &amp; \u6392\u5e8f\u67e5\u8be2<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET product\/_search\n{\n  \"query\": {\n    \"range\": {\n      \"price\": {\n        \"gte\": 100,\n        \"lte\": 1000\n      }\n    }\n  },\n  \"sort\": &#91;\n    {\n      \"price\": {\n        \"order\": \"desc\"\n      }\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code> \n\n\/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\nSearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                    \/\/ \u6307\u5b9a\u7d22\u5f15\n                    .index(\"product\")\n                    \/\/ \u6784\u9020range\u67e5\u8be2\n                    .query(query -&gt; query.range(range -&gt; range\n                            .number(number -&gt; number\n                                    \/\/ \u8bbe\u7f6e\u67e5\u8be2\u5b57\u6bb5\n                                    .field(\"price\")\n                                    \/\/ \u8bbe\u7f6e\u4e0b\u9650\n                                    .gte(100.0)\n                                    \/\/ \u8bbe\u7f6e\u4e0a\u9650\n                                    .lte(3000.0))))\n                    \/\/ \u6784\u9020\u6392\u5e8f\n                    .sort(sort -&gt; sort.field(field -&gt; field\n                            \/\/ \u6307\u5b9a\u6392\u5e8f\u5b57\u6bb5\n                            .field(\"price\")\n                            \/\/ \u6307\u5b9a\u6392\u5e8f\u65b9\u5f0f\n                            .order(SortOrder.Desc)))\n                    , Item.class);\n \t\t\/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u503c\n        HitsMetadata&lt;Item&gt; searchHits = searchResponse.hits();\n\n        \/\/ \u83b7\u53d6\u6ee1\u8db3\u67e5\u8be2\u6761\u4ef6\u7684\u603b\u7684\u6587\u6863\u6761\u6570\n        long totalCount = searchHits.total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n\n        \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u7684hits\u5c5e\u6027\u503c(\u5305\u542b\u67e5\u8be2\u5230\u7684\u6bcf\u6761\u6587\u6863\u4fe1\u606f)\n        List&lt;Hit&lt;Item&gt;&gt; hits = searchHits.hits();\n\n        ArrayList&lt;Item&gt; items = new ArrayList&lt;&gt;();\n        for (Hit&lt;Item&gt; hit : hits) {\n            \/\/ \u83b7\u53d6source\u5c5e\u6027\u503c\uff0c\u4ee3\u8868\u539f\u59cb\u6587\u6863\n            Item source = hit.source();\n            items.add(source);\n        }\n        System.out.println(items);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u590d\u5408\u67e5\u8be2 bool<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">boolQuery\uff1a\u5bf9\u591a\u4e2a\u67e5\u8be2\u6761\u4ef6\u8fde\u63a5\u3002\u5176\u7ec4\u6210\u4e3b\u8981\u5206\u4e3a\u5982\u4e0b\u56db\u4e2a\u90e8\u5206\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>must\uff08and\uff09\uff1a\u6761\u4ef6\u5fc5\u987b\u6210\u7acb<\/li>\n\n\n\n<li>must_not\uff08not\uff09\uff1a\u6761\u4ef6\u5fc5\u987b\u4e0d\u6210\u7acb<\/li>\n\n\n\n<li>should\uff08or\uff09\uff1a\u6761\u4ef6\u53ef\u4ee5\u6210\u7acb<\/li>\n\n\n\n<li>filter\uff1a\u6761\u4ef6\u5fc5\u987b\u6210\u7acb\uff0c\u6027\u80fd\u6bd4must\u9ad8\u3002\u4e0d\u4f1a\u8ba1\u7b97\u5f97\u5206<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code># must\nGET product\/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": &#91;\n        {\n           \"term\": {\n             \"title\": {\n               \"value\": \"\u5145\u7535\u5668\"\n             }\n           }\n        },\n        {\n          \"match\": {\n            \"sellPoint\": \"\u5feb\u5145\"\n          }\n        }\n      ]\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># must_not\nGET product\/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must_not\": &#91;\n        {\n           \"match\": {\n             \"title\": \"\u5145\u7535\u5668\"\n           }\n        }\n      ]\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># should \u4e2d\u7684\u591a\u4e2a\u6761\u4ef6\u662for\u5173\u7cfb\nGET product\/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"should\": &#91;\n          {\n           \"term\": {\n             \"title\": {\n               \"value\": \"\u5145\u7535\u5668\"\n             }\n           }\n        },\n        {\n          \"term\": {\n             \"sellPoint\": {\n               \"value\": \"\u5c0f\u83dc\u9e21\"\n             }\n           }\n        }\n      ]\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># filter\nGET product\/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"filter\": &#91;\n          {\n           \"term\": {\n             \"title\": {\n               \"value\": \"\u5145\u7535\u5668\"\n             }\n           }\n        },\n        {\n          \"match\": {\n            \"sellPoint\": \"\u5feb\u5145\"\n          }\n        }\n      ]\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u6709\u51e0\u70b9\u9700\u8981\u6ce8\u610f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e00\u4e2a\u590d\u5408\u67e5\u8be2\u4e2d\uff0c\u53ef\u4ee5\u540c\u65f6\u5305\u542bmust\uff0cmust not\uff0cshould\uff0cfilter\u4e2d\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u90e8\u5206<\/li>\n\n\n\n<li>\u6bcf\u4e00\u90e8\u5206\uff0c\u90fd\u53ef\u4ee5\u5305\u542b\u591a\u4e2a\u67e5\u8be2\u6761\u4ef6(should\u4e2d\u7684\u591a\u4e2a\u67e5\u8be2\u6761\u4ef6\u662for\u5173\u7cfb)<\/li>\n\n\n\n<li>\u5f53\u5b58\u5728must\uff0c\u6216\u8005filter\u7684\u65f6\u5019\uff0cshould\u4e2d\u7684\u6761\u4ef6\u9ed8\u8ba4\u4e0d\u751f\u6548<\/li>\n\n\n\n<li>must\u548cfilter\u90fd\u53ef\u4ee5\u8868\u793a\u540c\u65f6\u6ee1\u8db3\u591a\u4e2a\u6761\u4ef6\u7684\u67e5\u8be2\uff0c\u4f46\u662f\u4e0d\u540c\u7684\u5730\u65b9\u5728\u4e8emust\u4f1a\u8ba1\u7b97\u6587\u6863\u7684\u8fd1\u4f3c\u5ea6\u5f97\u5206\uff0cfilter\u4e0d\u4f1a(must_not\u4e5f\u4e0d\u4f1a)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># boolquery \u5305\u542b\u591a\u4e2a\u90e8\u5206\nGET product\/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": &#91;\n        {\n          \"term\": {\n            \"title\": {\n              \"value\": \"\u5145\u7535\u5668\"\n            }\n          }\n        }\n      ],\n      \"filter\":&#91; \n        {\n        \"term\": {\n          \"title\": \"\u539f\u88c5\"\n        }\n       },\n       {\n         \"range\":{\n          \"price\": {\n            \"gte\": 40,\n            \"lte\": 100\n         }\n         }\n       }\n      \n      ]\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">JAVA API:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e03\u5c14\u67e5\u8be2\uff1aboolQuery<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u67e5\u8be2\u5546\u54c1\u4e3a(title): \u5145\u7535\u5668<\/li>\n\n\n\n<li>\u67e5\u8be2\u8fc7\u6ee4\u6761\u4ef6\uff1a\u539f\u88c5<\/li>\n\n\n\n<li>\u67e5\u8be2\u4ef7\u683c\u5728\uff1a40-100<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\nSearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n        \/\/ \u6307\u5b9a\u7d22\u5f15\n        .index(\"product\")\n        \/\/ \u6784\u9020bool\u67e5\u8be2\n        .query(query -&gt; query.bool(bool -&gt; bool\n                \/\/ \u6784\u9020must\u90e8\u5206\n                .must(must -&gt; must.match(match -&gt; match\n                         \/\/ \u8bbe\u7f6ematch\u67e5\u8be2\u7684\u5b57\u6bb5\n                        .field(\"title\")\n                         \/\/ \u8bbe\u7f6e\u67e5\u8be2\u5173\u952e\u8bcd\n                        .query(\"\u5145\u7535\u5668\")))\n                \/\/ \u6784\u9020should\u90e8\u5206\n                .should(should -&gt; should.term(term -&gt; term\n                         \/\/ \u8bbe\u7f6eterm\u67e5\u8be2\u7684\u5b57\u6bb5                      \n                        .field(\"title\")\n                         \/\/ \u8bbe\u7f6e\u67e5\u8be2\u5173\u952e\u8bcd\n                        .value(\"\u539f\u88c5\")))\n                \/\/ \u6784\u9020filter\u90e8\u5206\n                .filter(filter -&gt; filter.range(range -&gt; range\n                        .number(number -&gt; number\n                                 \/\/ \u8bbe\u7f6erange\u67e5\u8be2\u7684\u5b57\u6bb5\n                                .field(\"price\")\n                                \/\/ \u8bbe\u7f6erange\u67e5\u8be2\u7684\u4e0a\u9650\n                                .gte(100.0)\n                                \/\/ \u8bbe\u7f6erange\u67e5\u8be2\u7684\u4e0b\u9650\n                                .lte(3000.0))))))\n        , Item.class);\n        \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u503c\n        HitsMetadata&lt;Item&gt; searchHits = searchResponse.hits();\n\n        \/\/ \u83b7\u53d6\u6ee1\u8db3\u67e5\u8be2\u6761\u4ef6\u7684\u603b\u7684\u6587\u6863\u6761\u6570\n        long totalCount = searchHits.total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n\n        \/\/ \u83b7\u53d6\u54cd\u5e94\u7684hits\u5c5e\u6027\u7684hits\u5c5e\u6027\u503c(\u5305\u542b\u67e5\u8be2\u5230\u7684\u6bcf\u6761\u6587\u6863\u4fe1\u606f)\n        List&lt;Hit&lt;Item&gt;&gt; hits = searchHits.hits();\n\n        ArrayList&lt;Item&gt; items = new ArrayList&lt;&gt;();\n        for (Hit&lt;Item&gt; hit : hits) {\n            \/\/ \u83b7\u53d6source\u5c5e\u6027\u503c\uff0c\u4ee3\u8868\u539f\u59cb\u6587\u6863\n            Item source = hit.source();\n            items.add(source);\n        }\n        System.out.println(items);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u805a\u5408<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u805a\u5408\u67e5\u8be2\u5206\u4e3a\u4e24\u79cd\u7c7b\u578b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6307\u6807\u805a\u5408\uff1a\u76f8\u5f53\u4e8eMySQL\u7684\u805a\u5408\u51fd\u6570\u3002max\u3001min\u3001avg\u3001sum\u7b49<\/li>\n\n\n\n<li>\u6876\u805a\u5408\uff1a\u76f8\u5f53\u4e8eMySQL\u7684 group by \u64cd\u4f5c\u3002\u4e0d\u8981\u5bf9text\u7c7b\u578b\u7684\u6570\u636e\u8fdb\u884c\u5206\u7ec4\uff0c\u4f1a\u5931\u8d25\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># \u805a\u5408\u67e5\u8be2\n\n# \u6307\u6807\u805a\u5408 \u805a\u5408\u51fd\u6570\n\nGET product\/_search\n{\n  \"query\": {\n    \"match\": {\n      \"title\": \"\u8033\u673a\"\n    }\n  },\n  \"aggs\": {\n    \"max_price\": {\n      \"max\": {\n        \"field\": \"price\"\n      }\n    }\n  }\n}\n\n# \u6876\u805a\u5408  \u5206\u7ec4\nGET product\/_search\n{\n  \"query\": {\n    \"match\": {\n      \"title\": \"\u5145\u7535\u5668\"\n    }\n  },\n  \"aggs\": {\n    \"price_bucket\": {\n      \"terms\": {\n        \"field\": \"price\"\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">JAVA API<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u6d4b\u8bd5\u6700\u5927\u6307\u6807\u503c\u805a\u5408\n@Test\npublic void testValueAgg() throws IOException {\n\/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\nSearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                    \/\/ \u6307\u5b9a\u7d22\u5f15\n                    .index(\"product\")\n                    \/\/ \u8bbe\u7f6esize\u4e3a0\u7684\u76ee\u7684\u662f\u4e0d\u8fd4\u56de\u67e5\u8be2\u7ed3\u679c\n                    .size(0)\n                    \/\/ \u6784\u9020\u6700\u5927\u6307\u6807\u503c\u805a\u5408\uff0c\u9996\u5148\u6307\u5b9a\u805a\u5408\u540d\u79f0\n                    .aggregations(\"max_price\"\n                                  , aggregation -&gt; aggregation\n                                        \/\/ \u6307\u5b9a\u6307\u6807\u503c\u805a\u5408\u7c7b\u578b(\u7c7b\u578b\u901a\u8fc7\u65b9\u6cd5\u540d\u6307\u5b9a)\u548c\u5b57\u6bb5\n                            \t\t\t.max(max -&gt; max.field(\"price\")))\n                    , Item.class);\n\n        \/\/ \u83b7\u53d6\u54cd\u5e94\u4e2d\u7684aggregations\u5c5e\u6027\u7684\u503c\n        Map&lt;String, Aggregate&gt; aggregations = searchResponse.aggregations();\n        \/\/ \u6839\u636e\u805a\u5408\u64cd\u4f5c\u7684\u540d\u79f0\u83b7\u53d6\u805a\u5408\u64cd\u4f5c\u7684\u7ed3\u679c\n        Aggregate aggregate = aggregations.get(\"max_price\");\n        \/\/ \u83b7\u53d6\u6700\u5927\u6307\u6807\u503c\u805a\u5408\u7684\u7ed3\u679c\n        MaxAggregate max = aggregate.max();\n        \/\/ \u83b7\u53d6\u6700\u5927\u6307\u6807\u503c\n        double maxPrice = max.value();\n        System.out.println(maxPrice);\n\n}\n\npublic void bucketAggs() throws IOException {\n    \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\n    SearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n            \/\/ \u6307\u5b9a\u7d22\u5f15\n            .index(\"product\")\n            \/\/ \u4e0d\u8fd4\u56de\u67e5\u8be2\u7ed3\u679c\n            .size(0)\n            \/\/ \u6784\u9020\u5206\u6876\u805a\u5408\uff0c\u9996\u5148\u6307\u5b9a\u805a\u5408\u540d\u79f0\n            .aggregations(\"price_bucket\"\n                           , aggregation -&gt; aggregation\n                          \t     \/\/ \u6307\u5b9a\u6307\u6807\u503c\u805a\u5408\u7c7b\u578b(\u7c7b\u578b\u901a\u8fc7\u65b9\u6cd5\u540d\u6307\u5b9a)\u548c\u5b57\u6bb5\n                    \t\t\t.terms(terms -&gt; terms.field(\"price\"))), Item.class);\n            \/\/ \u83b7\u53d6\u54cd\u5e94\u4e2d\u7684aggregations\u5c5e\u6027\u7684\u503c\n        Map&lt;String, Aggregate&gt; aggregations = searchResponse.aggregations();\n        \/\/ \u6839\u636e\u805a\u5408\u64cd\u4f5c\u7684\u540d\u79f0\u83b7\u53d6\u805a\u5408\u64cd\u4f5c\u7684\u7ed3\u679c\n        Aggregate tmNameGroup = aggregations.get(\"price_bucket\");\n        \/\/ \u83b7\u53d6\u5206\u6876\u805a\u5408\u7684\u7ed3\u679c\n        StringTermsAggregate sterms = tmNameGroup.sterms();\n        \/\/ \u83b7\u53d6\u5206\u6876\u96c6\u5408\n        List&lt;StringTermsBucket&gt; buckets = sterms.buckets().array();\n\n        \/\/ \u904d\u5386\u5206\u6876\u96c6\u5408\n        for (StringTermsBucket bucket : buckets) {\n            System.out.println(bucket.key().stringValue() + \":\" + bucket.docCount());\n        }\n        \n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5730\u7406\u4f4d\u7f6e\u67e5\u8be2<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u77e5\u9053\u5730\u7403\u4e0a\u7684\u6bcf\u4e00\u4e2a\u70b9\u90fd\u662f\u53ef\u4ee5\u7528\u7ecf\u7eac\u5ea6\u6765\u6807\u8bc6\u7684\uff0c\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u6839\u636e\u5bf9\u7ecf\u7eac\u5ea6\u5750\u6807\u7684\u67e5\u8be2\u5b9e\u73b0\u5730\u7406\u4f4d\u7f6e\u67e5\u8be2\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728ES\u4e2d\u6709\u4e13\u95e8\u7684\u6570\u636e\u7c7b\u578b\u6765\u8868\u793a\u7ecf\u7eac\u5ea6: geo_point, \u5b83\u5305\u542b\u7ecf\u5ea6\u548c\u7ef4\u5ea6\u4e24\u4e2a\u503c\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PUT locations\n{\n  \"mappings\": {\n    \"properties\": {\n      \"name\": {\n        \"type\": \"text\"\n      },\n      \"location\": {\n        \"type\": \"geo_point\"\n      },\n      \"category\": {\n        \"type\": \"keyword\"\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u4e24\u79cd\u65b9\u5f0f\u5728\u6dfb\u52a0\u6587\u6863\u65f6\uff0c\u6307\u5b9a\u6587\u6863\u7684geo_point\u7c7b\u578bfield\u503c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST \/locations\/_doc\/11\n{\n  \"name\": \"\u5317\u4eac\u5927\u5b66\",\n  \"location\": \"39.9925,116.3053\",  \/\/ \u5b57\u7b26\u4e32\u683c\u5f0f\uff1a\u7eac\u5ea6,\u7ecf\u5ea6\n  \"category\": \"education\"\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>POST \/locations\/_doc\/12\n{\n  \"name\": \"\u6e05\u534e\u5927\u5b66\",\n  \"location\": &#91;116.3304, 40.0000],  \/\/ \u6570\u7ec4\u683c\u5f0f\uff1a&#91;\u7ecf\u5ea6,\u7eac\u5ea6]\n  \"category\": \"education\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a5\u4e0b\u6765\u4e3a\u4e86\u65b9\u4fbf\u6d4b\u8bd5\uff0c\u6211\u4eec\u4f7f\u7528\u6279\u91cf\u67e5\u8be2\u9879\u7d22\u5f15\u4e2d\u6dfb\u52a0\u4e00\u4e9b\u6570\u636e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST _bulk\n{\"create\": {\"_index\": \"locations\", \"_id\": \"1\"}}\n{\"name\": \"\u5929\u5b89\u95e8\u5e7f\u573a\", \"location\": \"39.9078,116.3974\", \"category\": \"landmark\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"2\"}}\n{\"name\": \"\u6545\u5bab\", \"location\": \"39.9163,116.3971\", \"category\": \"landmark\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"3\"}}\n{\"name\": \"\u9890\u548c\u56ed\", \"location\": \"39.9999,116.2754\", \"category\": \"park\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"4\"}}\n{\"name\": \"\u5317\u4eac\u52a8\u7269\u56ed\", \"location\": \"39.9378,116.3333\", \"category\": \"park\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"5\"}}\n{\"name\": \"\u5965\u6797\u5339\u514b\u516c\u56ed\", \"location\": \"39.9929,116.3963\", \"category\": \"park\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"6\"}}\n{\"name\": \"\u4e09\u91cc\u5c6f\", \"location\": \"39.9333,116.4531\", \"category\": \"shopping\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"7\"}}\n{\"name\": \"\u738b\u5e9c\u4e95\", \"location\": \"39.9086,116.4094\", \"category\": \"shopping\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"8\"}}\n{\"name\": \"\u4e2d\u5173\u6751\", \"location\": \"39.9833,116.3167\", \"category\": \"business\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"9\"}}\n{\"name\": \"\u56fd\u8d38\", \"location\": \"39.9097,116.4581\", \"category\": \"business\"}\n{\"create\": {\"_index\": \"locations\", \"_id\": \"10\"}}\n{\"name\": \"\u9996\u90fd\u673a\u573a\", \"location\": \"40.0799,116.6031\", \"category\": \"transport\"}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u77e9\u5f62\u533a\u57df\u5185\u7684\u70b9<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u8be2\u7c7b\u578b\u4e3a\uff1a geo_bounding_box<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u8be2\u5b57\u6bb5\uff1alocation<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u8be2\u9700\u8981\u5236\u5b9a\u4e24\u4e2a\u53c2\u6570\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>top_left: \u77e9\u5f62\u5de6\u4e0a\u89d2\u7684\u70b9\u5750\u6807<\/li>\n\n\n\n<li>bottom_right: \u77e9\u5f62\u53f3\u4e0b\u89d2\u7684\u70b9\u7684\u5750\u6807<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\u610f\uff0c\u5750\u6807\u7684\u8868\u793a\u65b9\u5f0f\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\uff0c\u4e5f\u53ef\u4ee5\u662f\u6570\u7ec4(\u6ce8\u610f\u4e0d\u540c\u65b9\u5f0f\u7684\u7ecf\u7eac\u5ea6\u4e66\u5199\u987a\u5e8f)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u67e5\u8be2\u5317\u4eac\u4e8c\u73af\u5185\u7684\u5730\u70b9\nGET locations\/_search\n{\n  \"query\": {\n    \"geo_bounding_box\": {\n      \"location\": {\n        \"top_left\": \"39.95,116.35\",\n        \"bottom_right\": \"39.89,116.45\"\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u5e94\u7684\u67e5\u8be2\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> @Test\n    public void geoBoxingTest() throws IOException {\n                  \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\n                   SearchResponse&lt;Item&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                    \/\/ \u6307\u5b9a\u7d22\u5f15\n                    .index(\"locations\")\n                    \/\/ \u6784\u9020geo_bounding_box\u67e5\u8be2\n                    .query(query -&gt; query.geoBoundingBox(geo -&gt; geo\n                            \/\/ \u6307\u5b9a\u67e5\u8be2\u5b57\u6bb5\n                            .field(\"location\")\n                            \/\/ \u6307\u5b9atop_left\u548cbottom_right\u53c2\u6570\n                            .boundingBox(box -&gt; box.tlbr(tlbr -&gt; tlbr\n                                     \/\/ \u6784\u9020top_left\n                                    .topLeft(GeoLocation.of(location -&gt; location.latlon(v -&gt; v.lat(39.95).lon(116.35))))\n                                    \/\/ \u6784\u9020bottom_right\n                                    .bottomRight(GeoLocation.of(location -&gt; location.latlon(v -&gt; v.lat(39.89).lon(116.45))))))))\n                    , Item.class);\n        \n        long totalCount = searchResponse.hits().total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n        for (Hit&lt;Map&gt; hit : searchResponse.hits().hits()) {\n            System.out.println(JSON.toJSONString(hit.source()));\n        }\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8ddd\u79bb\u67e5\u8be2<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u8fd8\u53ef\u4ee5\u67e5\u8be2\u8ddd\u79bb\u67d0\u4e2a\u4e2d\u5fc3\u70b9\u4e00\u5b9a\u8ddd\u79bb\u8303\u56f4\u5185\u7684\u6240\u6709\u70b9\u3002\u8ddd\u79bb\u67e5\u8be2\u8bed\u6cd5\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u8be2\u7c7b\u578b: geo_distance<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e2d\u5fc3\u70b9: location<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8ddd\u79bb\u8ba1\u7b97\u65b9\u5f0f: 1) arc \u8ba1\u7b97\u7403\u9762\u8ddd\u79bb(\u7cbe\u786e) 2\uff09plain \u8ba1\u7b97\u5e73\u9762\u8ddd\u79bb(\u7cbe\u5ea6\u4f4e\u4f46\u662f\u5feb)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET locations\/_search\n{\n  \"query\": {\n    \"geo_distance\": {\n      \"distance\": \"2km\",          \/\/ \u8ddd\u79bb\u503c+\u5355\u4f4d\n      \"location\": \"39.9,116.4\",   \/\/ \u4e2d\u5fc3\u70b9\n      \"distance_type\": \"plain\"     \/\/ \u8ba1\u7b97\u65b9\u5f0f\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u5e94\u7684java\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    @Test\n    public void geoDistanceTest() throws IOException {\n        \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\n        SearchResponse&lt;Map&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                    \/\/ \u8bbe\u7f6e\u7d22\u5f15\n                    .index(\"locations\")\n                    \/\/ \u6784\u9020geo_distance\u67e5\u8be2\n                    .query(query -&gt; query.geoDistance(geoDistance -&gt; geoDistance\n                             \/\/ \u6307\u5b9a\u67e5\u8be2\u5b57\u6bb5\n                            .field(\"location\")\n                            \/\/ \u6307\u5b9a\u4e2d\u5fc3\u5750\u6807\n                            .location(GeoLocation.of(geoLocation -&gt; geoLocation.latlon(v -&gt; v.lat(39.9).lon(116.4))))\n                            \/\/ \u6307\u5b9a\u63d2\u53d9\u51dd\u805a\u529b\n                            .distance(\"2km\")\n                            \/\/ \u6307\u5b9a\u8ddd\u79bb\u7684\u8ba1\u7b97\u65b9\u5f0f\n                            .distanceType(GeoDistanceType.Arc)))\n                    , Map.class);\n        \n        long totalCount = searchResponse.hits().total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n        for (Hit&lt;Map&gt; hit : searchResponse.hits().hits()) {\n            System.out.println(JSON.toJSONString(hit.source()));\n        }\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9664\u4e86\u8ddd\u79bb\u67e5\u8be2\u4e4b\u5916\uff0c\u6211\u4eec\u8fd8\u53ef\u4ee5\u6839\u636e\u8ddd\u79bb\u4e2d\u5fc3\u70b9\u7684\u8ddd\u79bb\u6392\u5e8f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6392\u5e8f\u65b9\u5f0f: _geo_distance<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e2d\u5fc3\u70b9: location<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8ddd\u79bb\u5355\u4f4d: unit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8ba1\u7b97\u65b9\u5f0f: distance_type<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET locations\/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": &#91;\n        {\"term\": {\"category\": \"park\"}}\n      ],\n      \"filter\": {\n        \"geo_distance\": {\n          \"distance\": \"20km\",\n          \"location\": \"39.9078,116.3974\"\n        }\n      }\n    }\n  },\n  \"sort\": &#91;\n    {\n      \"_geo_distance\": {\n        \"location\": \"39.9078,116.3974\",\n        \"order\": \"asc\",\n        \"unit\": \"km\",\n        \"distance_type\": \"arc\"\n      }\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\u5355\u4f4d<\/th><th class=\"has-text-align-left\" data-align=\"left\">\u7f29\u5199<\/th><th class=\"has-text-align-left\" data-align=\"left\">\u793a\u4f8b<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">\u7c73<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>m<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8220;100m&#8221;<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u5343\u7c73<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>km<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8220;5km&#8221;<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u82f1\u91cc<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>mi<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8220;3mi&#8221;<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u7801<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>yd<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8220;500yd&#8221;<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u82f1\u5c3a<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>ft<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8220;1000ft&#8221;<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u6d77\u91cc<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>nmi<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8220;1nmi&#8221;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u5e94\u7684java\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    @Test\n    public void distanceSort() throws IOException {\n                  \/\/ \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\uff0c\u901a\u8fc7search\u65b9\u6cd5\u7684\u53c2\u6570\u6765\u6784\u9020\u8fd9\u4e2a\u8bf7\u6c42\n                  SearchResponse&lt;Map&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                     \/\/ \u8bbe\u7f6e\u7d22\u5f15\n                    .index(\"locations\")\n                     \/\/ \u6784\u9020match_all\u67e5\u8be2\n                    .query(query -&gt; query.matchAll(matchAll -&gt; matchAll))\n                    \/\/ \u6784\u9020geo_distance\u6392\u5e8f\n                    .sort(sort -&gt; sort.geoDistance(geoDistanceSort -&gt; geoDistanceSort\n                                \/\/ \u8bbe\u7f6e\u6392\u5e8f\u5b57\u6bb5\n                                .field(\"location\")\n                                \/\/ \u8bbe\u7f6e\u8ddd\u79bb\u4e2d\u5fc3\u70b9\n                                .location(GeoLocation.of(geoLocation -&gt; geoLocation.latlon(v -&gt; v.lat(39.9078).lon(116.3974))))\n                                \/\/ \u8bbe\u7f6e\u8ddd\u79bb\u8ba1\u7b97\u65b9\u5f0f\n                                .distanceType(GeoDistanceType.Arc)\n                                \/\/ \u8bbe\u7f6e\u8ddd\u79bb\u5355\u4f4d\n                                .unit(DistanceUnit.Kilometers)\n                                \/\/ \u8bbe\u7f6e\u6392\u5e8f\u65b9\u5f0f\n                                .order(SortOrder.Asc)))\n                    , Map.class);\n        \n        long totalCount = searchResponse.hits().total().value();\n        System.out.println(\"totalCount: \" + totalCount);\n\n        for (Hit&lt;Map&gt; hit : searchResponse.hits().hits()) {\n            System.out.println(JSON.toJSONString(hit.source()));\n        }\n\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u901a\u7528\u5199\u6cd5<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0a\u7684\u5404\u79cd\u67e5\u8be2\uff0c\u6392\u5e8f\uff0c\u805a\u5408\uff0c\u5176\u5b9e\u90fd\u53ef\u4ee5\u7528\u4e00\u79cd\u7edf\u4e00\u7684\u5199\u6cd5\u6765\u5b8c\u6210<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>     \/\/ \u5199\u597ddsl\u811a\u672c\uff0c\u53ef\u4ee5\u5305\u542b\u67e5\u8be2\uff0c\u6392\u5e8f\uff0c\u805a\u5408\n        String dsl = \"\"\"\n                    {\n                      \"query\": {\"match_all\": {}},\n                      \"sort\": &#91;\n                        {\n                          \"_geo_distance\": {\n                            \"location\": {\"lat\": 39.9078, \"lon\": 116.3974},\n                            \"order\": \"desc\",\n                            \"unit\": \"km\",\n                            \"distance_type\": \"arc\"\n                          }\n                        }\n                      ]\n                    }\n                    \"\"\";\n            \/\/ \u8c03\u7528search\u65b9\u6cd5\u53d1\u8d77\u67e5\u8be2\u8bf7\u6c42\uff0c\u5229\u7528search\u65b9\u6cd5\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u6784\u9020\u5177\u4f53\u67e5\u8be2\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u6307\u5b9a\u5c01\u88c5\u6587\u6863\u7684\u5bf9\u8c61\u7c7b\u578b\n            SearchResponse&lt;Map&gt; searchResponse = elasticsearchClient.search(request -&gt; request\n                     \/\/ \u6307\u5b9a\u7d22\u5f15\u540d\u79f0\n                    .index(\"product\")\n                    \/\/ \u6307\u5b9a\u5b9e\u9645\u67e5\u8be2\u6267\u884c\u7684dsl\u811a\u672c, Map.class\u6307\u5b9a\u5c01\u88c5\u6587\u6863\u7684\u5bf9\u8c61\u7c7b\u578b\uff0c\u5f53\u7136Map\u53ef\u4ee5\u66ff\u6362\u4e3a\u5177\u4f53\u7684\u5bf9\u8c61\u7c7b\u578b\n                    .withJson(new StringReader(dsl)), Map.class);\n            \n           \/\/ \u89e3\u6790\u7ed3\u679c\u5373\u53ef\n            <\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u96c6\u7fa4\u76f8\u5173\u77e5\u8bc6<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u542f\u52a8\u7684\u4e00\u4e2aElasticsearch\u8fdb\u7a0b\uff0c\u6211\u4eec\u79f0\u4e4b\u4e3a\u4e3a\u4e00\u4e2aElasticsearch\u8282\u70b9(Node)\uff0c\u591a\u4e2aElasticsearch\u8282\u70b9\uff0c\u53ef\u4ee5\u7ec4\u6210\u4e00\u4e2aElasticsearch\u96c6\u7fa4\uff0c\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c31\u6765\u4e86\u89e3\u4e0bElasticsearch\u96c6\u7fa4\u76f8\u5173\u7684\u77e5\u8bc6<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7d22\u5f15\u5728\u96c6\u7fa4\u4e2d\u7684\u5206\u5e03<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-47.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1006\" height=\"387\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-47.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-366\"  sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e0\u8bba\u662f\u5355\u673a\u8fd8\u662f\u96c6\u7fa4\u6a21\u5f0f\uff0cES\u4e2d\u7684\u7d22\u5f15\u6570\u636e\u90fd\u662f\u4ee5\u5206\u7247\u7684\u5f62\u5f0f\u5b58\u5728\u7684\uff0c\u4e00\u4e2a\u7d22\u5f15\u7684\u4e00\u4e2a\u5206\u7247\u4e2d\u53ea\u5b58\u50a8\u8be5\u7d22\u5f15\u4e2d\u7684\u4e00\u90e8\u5206\u6570\u636e\uff0c\u5373\u4e00\u4e2a\u7d22\u5f15\u4e2d\u7684\u6587\u6863\u6570\u636e\uff0c\u88ab\u5b58\u50a8\u5728\u5176\u6240\u5c5e\u7684\u82e5\u5e72\u4e2a\u5206\u7247\u4e2d\uff0c\u6bcf\u4e2a\u5206\u7247\u53ea\u5b58\u50a8\u7d22\u5f15\u90e8\u5206\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8e\u4e00\u4e2a\u7d22\u5f15\u6240\u5305\u542b\u7684\u6240\u6709\u5206\u7247\uff0c\u53c8\u88ab\u5206\u6210\u4e86\u4e24\u79cd\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e3b\u5206\u7247\uff1a\u4e00\u4e2a\u7d22\u5f15\u4e2d\u7684\u6587\u6863\u5230\u5e95\u88ab\u88ab\u5206\u6210\u51e0\u90e8\u5206\u6765\u5b58\u50a8\uff0c\u4e3b\u8981\u770b\u7d22\u5f15\u5230\u5e95\u5305\u542b\u591a\u5c11\u4e2a\u4e3b\u5206\u7247\uff0c\u6709\u591a\u5c11\u4e2a\u4e3b\u5206\u7247\uff0c\u7d22\u5f15\u6570\u636e\u6570\u636e\u5c31\u88ab\u5206\u6210\u51e0\u90e8\u5206\u5206\u522b\u5b58\u50a8\u5728\u4e3b\u5206\u7247\u4e2d\u3002\u7528\u6237\u63d2\u5165ES\u7684\u6587\u6863\u6570\u636e\u90fd\u662f\u9996\u5148\u5b58\u50a8\u5230\u4e3b\u5206\u7247\u7684\u3002<\/li>\n\n\n\n<li>\u526f\u672c\u5206\u7247\uff1a\u800c\u526f\u672c\u5206\u7247\u4e3b\u8981\u662f\u4f5c\u4e3a\u4e3b\u5206\u7247\u7684\u6570\u636e\u526f\u672c\u800c\u5b58\u5728\uff0c\u6bcf\u4e2a\u4e3b\u5206\u7247\u90fd\u53ef\u4ee5\u6709\u5bf9\u5e94\u7684\u526f\u672c\u5206\u7247\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u4ee5\uff0c\u5728ES\u96c6\u7fa4\u4e2d\uff0c\u4e00\u4e2a\u7d22\u5f15\u7684\u591a\u4e2a\u5206\u7247\u6570\u636e\uff0c\u5c31\u4fdd\u5b58\u5728\u4e0d\u540c\u7684ES\u670d\u52a1\u5668\u5b9e\u4f8b\u6216\u8005\u8bf4\u4e0d\u540c\u7684ES Node\u4e0a\uff0c\u4e00\u4e2a\u5355\u673a\u7248\u7684ES\u670d\u52a1\u5668\uff0c\u4e5f\u53ef\u4ee5\u770b\u505a\u662f\u53ea\u5305\u542b\u4e00\u4e2aES Node\u7684ES\u96c6\u7fa4\uff0c\u6240\u4ee5\u4e00\u4e2aES Node\u53ef\u4ee5\u5305\u542b\u7d22\u5f15\u7684\u591a\u4e2a\u5206\u7247\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u8fd8\u6709\u4e09\u70b9\u7ec6\u8282\u9700\u8981\u6ce8\u610f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ES \u4e0d\u5141\u8bb8\u5c06\u4e00\u4e2a\u4e3b\u5206\u7247\u548c\u5b83\u5bf9\u5e94\u7684\u526f\u672c\u5206\u7247\u5b58\u50a8\u5728\u540c\u4e00\u4e2aES Node\u4e2d\u3002\u8fd9\u4e3b\u8981\u662f\u4e3a\u4e86\u9632\u6b62\uff0c\u4e00\u4e2aES Node \u5b95\u673a\u5bfc\u81f4\uff0c\u67d0\u5206\u7247\u6570\u636e\u5168\u90e8\u4e22\u5931(\u4e3b\u5206\u7247\u548c\u8be5\u4e3b\u5206\u7247\u5bf9\u5e94\u7684\u526f\u672c\u5206\u7247\u7684\u6570\u636e\u5168\u90e8\u4e22\u5931)\u3002\u8fd9\u662f\u56e0\u4e3a\u5982\u679c\u6bcf\u4e2a\u4e3b\u5206\u7247\u81f3\u5c11\u6709\u4e00\u4e2a\u526f\u672c\u5206\u7247\uff0c\u90a3\u4e48\u5373\u4f7f\u8be5\u4e3b\u5206\u7247\u6240\u5728\u7684ES Node\u5b95\u673a\u4e5f\u6ca1\u5173\u7cfb\uff0cES\u4f1a\u81ea\u52a8\u5c06\u5176\u526f\u672c\u5206\u7247\u53d8\u4e3a\u4e3b\u5206\u7247\uff0c\u4fdd\u8bc1\u6570\u636e\u7684\u6b63\u5e38\u8bbf\u95ee\u3002<\/li>\n\n\n\n<li>\u4e00\u4e2aES\u7684\u7d22\u5f15\u7531<strong>\u4e00\u4e2a\u6216\u591a\u4e2a<\/strong>\u4e3b\u5206\u7247\u4ee5\u53ca<strong>\u96f6\u4e2a\u6216\u591a\u4e2a<\/strong>\u526f\u672c\u5206\u7247\u6784\u6210\uff0c\u5373ES\u4e0d\u5f3a\u5236\u8981\u6c42\u4e3b\u5206\u7247\u4e00\u5b9a\u6709\u5bf9\u5e94\u7684\u526f\u672c\u5206\u7247<\/li>\n\n\n\n<li>\u5728\u521b\u5efa\u7d22\u5f15\u7684\u65f6\u5019\u5c31\u53ef\u4ee5\u5b9a\u4e49\uff0c\u7d22\u5f15\u7684\u4e3b\u5206\u7247\u6570\u91cf\uff0c\u4ee5\u53ca\u6bcf\u4e2a\u4e3b\u5206\u7247\u5bf9\u5e94\u7684\u526f\u672c\u5206\u7247\u7684\u6570\u91cf\uff0c\u4f46\u662f\u5bf9\u4e8e\u4e00\u4e2a\u7d22\u5f15\u800c\u8a00\uff0c\u4e00\u65e6\u7d22\u5f15\u521b\u5efa\u5b8c\u6bd5\uff0c\u5176\u4e3b\u5206\u7247\u6570\u91cf\u5c31\u4e0d\u80fd\u5728\u53d8\u4e86\uff0c\u53ea\u80fd\u4fee\u6539\u5176\u526f\u672c\u5206\u7247\u7684\u6570\u91cf<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u6587\u6863\u6570\u636e\u5728ES\u96c6\u7fa4\u4e2d\u7684\u5b58\u50a8\u548c\u641c\u7d22<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u5148\u6765\u770b\u770b\u6587\u6863\u6570\u636e\u7684\u5b58\u50a8\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5f53\u5b58\u50a8\u6216\u4e00\u7bc7\u6587\u6863\u7684\u65f6\u5019\uff0cES\u9996\u5148\u6839\u636e\u6587\u6863ID\u7684\u6563\u5217\u503c\uff0c\u9009\u62e9\u4e00\u4e2a\u4e3b\u5206\u7247\uff0c\u5e76\u5c06\u8be5\u6587\u6863\u53d1\u9001\u5230\u8be5\u4e3b\u5206\u7247\u4fdd\u5b58\u3002<\/li>\n\n\n\n<li>\u7136\u540e\uff0c\u8be5\u6587\u6863\u88ab\u53d1\u9001\u5230\u4e3b\u5206\u7247\u5bf9\u5e94\u7684\u6240\u6709\u7684\u526f\u672c\u5206\u7247\u8fdb\u884c\u4fdd\u5b58\uff0c\u8fd9\u4f7f\u5f97\u526f\u672c\u5206\u7247\u548c\u4e3b\u5206\u7247\u4e4b\u95f4\u4fdd\u6301\u6570\u636e\u540c\u6b65<\/li>\n\n\n\n<li>\u6570\u636e\u540c\u6b65\u4f7f\u5f97\u526f\u672c\u5206\u7247\u53ef\u4ee5\u670d\u52a1\u4e0e\u641c\u7d22\u8bf7\u6c42\uff0c\u5e76\u5728\u539f\u6709\u4e3b\u5206\u7247\u65e0\u6cd5\u8bbf\u95ee\u65f6\u81ea\u52a8\u5347\u7ea7\u4e3a\u4e3b\u5206\u7247<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-48.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"702\" height=\"451\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-48.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-367\"  sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u4fdd\u5b58\u4e00\u7bc7\u6587\u6863\u7684\u65f6\u5019\uff0c\u6211\u4eec\u8bb2\u89e3\u4e86\u5982\u4f55\u51b3\u5b9a\u4e00\u7bc7\u6587\u6863\u6240\u5728\u7684\u5206\u7247\u7684\uff0c\u8fd9\u4e00\u8fc7\u7a0b\u6211\u4eec\u79f0\u4e3a\u6587\u6863\u8def\u7531\u3002\u5f53ES\u6563\u5217\u6587\u6863ID\u65f6\u5c31\u4f1a\u53d1\u751f\u6587\u6863\u7684\u8def\u7531\uff0c\u6765\u51b3\u5b9a\u6587\u6863\u5e94\u8be5\u7d22\u5f15\u5230\u54ea\u4e2a\u5206\u7247\u4e2d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u6765\u770b\u770b\u5728\u96c6\u7fa4\u4e2d\u641c\u7d22\u6587\u6863\u6570\u636e\u7684\u8fc7\u7a0b\uff0c\u5f53\u5728\u7d22\u5f15\u4e2d\u641c\u7d22\u7684\u65f6\u5019\uff0cElastic Search\u4f1a\u5728\u7d22\u5f15\u7684\u6240\u6709\u5206\u7247\u4e2d\u8fdb\u884c\u67e5\u627e\uff0c\u8fd9\u4e9b\u5206\u7247\u53ef\u4ee5\u662f\u4e3b\u5206\u7247\uff0c\u4e5f\u53ef\u4ee5\u662f\u526f\u672c\u5206\u7247\uff0c\u539f\u56e0\u662f\u4e3b\u5206\u7247\u548c\u526f\u672c\u5206\u7247\u901a\u5e38\u5305\u542b\u4e00\u6837\u7684\u6587\u6863\u3002ES\u5728\u7d22\u5f15\u7684\u4e3b\u5206\u7247\u548c\u526f\u672c\u5206\u7247\u4e2d\u8fdb\u884c\u641c\u7d22\u8bf7\u6c42\u7684\u8d1f\u8f7d\u5747\u8861\uff0c\u4f7f\u5f97\u526f\u672c\u5206\u7247\u5bf9\u4e8e\u641c\u7d22\u7684\u6027\u80fd\u548c\u5bb9\u9519\u90fd\u6709\u5e2e\u52a9\u3002\u4e0b\u9762\u770b\u770b\u5177\u4f53\u7684\u641c\u7d22\u8fc7\u7a0b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u641c\u7d22\u8bf7\u6c42\u9996\u5148\u88ab\u4e00\u4e2aES Node\u63a5\u6536\uff0c\u5e76\u5c06\u8bf7\u6c42\u8f6c\u53d1\u5230\u4e00\u7ec4\u5305\u542b\u6240\u6709\u6570\u636e\u7684\u7d22\u5f15\u5206\u7247<\/li>\n\n\n\n<li>\u5728\u9009\u62e9\u8f6c\u53d1\u8bf7\u6c42\u7684\u5206\u7247\u65f6\uff0c\u4f7f\u7528\u8f6e\u8bad\u7b97\u6cd5\u9009\u62e9\u53ef\u7528\u5206\u7247(\u8fd9\u91cc\u8f6e\u8bad\u7684\u662f\u67d0\u4e3b\u5206\u7247\u548c\u5176\u5bf9\u5e94\u7684\u526f\u672c\u5206\u7247\uff0c\u5e76\u4e14\u5bf9\u4e8e\u7d22\u5f15\u4e2d\u7684\u6bcf\u4e00\u4e2a\u4e3b\u5206\u7247\u4e0e\u5176\u5bf9\u5e94\u7684\u526f\u672c\u5206\u7247\u90fd\u4f1a\u6709\u8fd9\u6837\u7684\u8f6e\u8bad\u9009\u62e9\u8fc7\u7a0b)\uff0c\u5e76\u5c06\u641c\u7d22\u8bf7\u6c42\u8f6c\u53d1\u5230\u6240\u6709\u9009\u4e2d\u7684\u5206\u7247\uff0c<\/li>\n\n\n\n<li>\u7136\u540e\uff0cES\u5c06\u4ece\u8fd9\u4e9b\u63a5\u6536\u5230\u8bf7\u6c42\u7684\u5206\u7247\u6536\u96c6\u641c\u7d22\u7684\u7ed3\u679c\uff0c\u5c06\u5176\u805a\u96c6\u5230\u5355\u4e00\u7684\u56de\u590d\uff0c\u7136\u540e\u5c06\u56de\u590d\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-49-1024x341.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"341\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/06\/image-49-1024x341.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-368\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u8111\u88c2\u95ee\u9898<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u4e00\u4e2aES\u96c6\u7fa4\u4e2d\uff0c\u5305\u542b\u591a\u4e2aES Node\uff0c\u8fd9\u591a\u4e2aES Node\u53c8\u53ef\u4ee5\u626e\u6f14\u4e0d\u540c\u7684\u89d2\u8272\uff0c\u5b9e\u73b0\u4e0d\u540c\u7684\u529f\u80fd\uff0c\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u79cd\u89d2\u8272\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Matster Node\uff1a\u8d1f\u8d23\u521b\u5efa\uff0c\u5220\u9664\u7d22\u5f15\uff0c\u4ee5\u53ca\u7ed9\u8282\u70b9\u5206\u914d\u5206\u7247\u7b49\u96c6\u7fa4\u7ba1\u7406\u7684\u5171\u5de5\u4f5c<\/li>\n\n\n\n<li>Data Node: \u8d1f\u8d23\u5b58\u50a8\u6587\u6863\u6570\u636e\uff0c\u4ee5\u53ca\u5bf9\u6587\u6863\u6570\u636e\u7684CRUD\u64cd\u4f5c<\/li>\n\n\n\n<li>Coordinating Node: \u8d1f\u8d23\u63a5\u6536\u5ba2\u6237\u7aef\u7684\u8bf7\u6c42\uff0c\u5e76\u5c06\u8bf7\u6c42\u5206\u53d1\u5230\u5404\u4e2a\u76f8\u5173\u8282\u70b9\uff0c\u5e76\u6700\u7ec8\u6536\u96c6\u5404\u8282\u70b9\u8fd4\u56de\u7684\u7ed3\u679c\uff0c\u6574\u5408\u4e3a\u4e00\u4e2a\u7edf\u4e00\u7684\u7ed3\u679c\uff0c\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef, \u5176\u5b9e\u6bcf\u4e2aES Node\u90fd\u9690\u5f0f\u7684\u626e\u6f14\u8005\u534f\u8c03\u8282\u70b9\u7684\u89d2\u8272\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u8fd9\u5176\u4e2d\uff0cData Node\u548cCoordinating Node\u90fd\u53ef\u4ee5\u6709\u591a\u4e2a\uff0c\u4f46\u662fMatster Node\u4f5c\u4e3a\u7ba1\u7406\u96c6\u7fa4\u7684&#8221;\u5927\u8111&#8221;\u3002\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0c\u5f53\u4e3b\u8282\u70b9\u65e0\u6cd5\u5de5\u4f5c\u65f6\uff0c\u4f1a\u4ece\u5907\u9009\u4e3b\u8282\u70b9\u4e2d\u9009\u4e3e\u4e00\u4e2a\u51fa\u6765\u53d8\u6210\u65b0\u4e3b\u8282\u70b9\uff0c\u539f\u4e3b\u8282\u70b9\u56de\u5f52\u540e\u53d8\u6210\u5907\u9009\u4e3b\u8282\u70b9<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u6709\u65f6\u56e0\u4e3a\u7f51\u7edc\u6296\u52a8\u7b49\u539f\u56e0\uff0c\u4e3b\u8282\u70b9\u6ca1\u80fd\u53ca\u65f6\u54cd\u5e94\uff0c\u96c6\u7fa4\u8bef\u4ee5\u4e3a\u4e3b\u8282\u70b9\u6302\u4e86\uff0c\u9009\u4e3e\u4e86\u4e00\u4e2a\u65b0\u4e3b\u8282\u70b9\uff0c\u6b64\u65f6\u4e00\u4e2aes\u96c6\u7fa4\u4e2d\u6709\u4e86\u4e24\u4e2a\u4e3b\u8282\u70b9\uff0c\u5176\u4ed6\u8282\u70b9\u4e0d\u77e5\u9053\u8be5\u542c\u8c01\u7684\u8c03\u5ea6\uff0c\u7ed3\u679c\u5c06\u662f\u707e\u96be\u6027\u7684\uff01\u8fd9\u79cd\u7c7b\u4f3c\u4e00\u4e2a\u4eba\u5f97\u4e86\u7cbe\u795e\u5206\u88c2\u75c7\uff0c\u5c31\u88ab\u79f0\u4e4b\u4e3a\u201c\u8111\u88c2\u201d\u73b0\u8c61\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e4b\u6240\u4ee5\u4ea7\u751f\u8111\u88c2\u95ee\u9898\u7684\u539f\u56e0\u662f\u4e3b\u8282\u70b9\u56e0\u4e3a\u5404\u79cd\u539f\u56e0\uff0c\u5728\u6536\u5230\u8bf7\u6c42\u540e\u672a\u80fd\u53ca\u65f6\u54cd\u5e94\uff0c\u5bfc\u81f4\u4e3b\u8282\u70b9\u672a\u80fd\u53ca\u65f6\u54cd\u5e94\u7684\u539f\u56e0\uff0c\u4e00\u822c\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u70b9:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7f51\u7edc\u6296\u52a8<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5185\u7f51\u4e00\u822c\u4e0d\u4f1a\u51fa\u73b0es\u96c6\u7fa4\u7684\u8111\u88c2\u95ee\u9898\uff0c\u53ef\u4ee5\u76d1\u63a7\u5185\u7f51\u6d41\u91cf\u72b6\u6001\u3002\u5916\u7f51\u7684\u7f51\u7edc\u51fa\u73b0\u95ee\u9898\u7684\u53ef\u80fd\u6027\u5927\u4e9b<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8282\u70b9\u8d1f\u8f7d<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4e3b\u8282\u70b9\u540c\u65f6\u627f\u62c5\u6570\u636e\u8282\u70b9\u7684\u5de5\u4f5c\uff0c\u53ef\u80fd\u4f1a\u56e0\u4e3a\u5de5\u4f5c\u8d1f\u8f7d\u5927\u800c\u5bfc\u81f4\u5bf9\u5e94\u7684 ES \u5b9e\u4f8b\u505c\u6b62\u54cd\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5185\u5b58\u56de\u6536(STW\uff1astop the world)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8e\u6570\u636e\u8282\u70b9\u4e0aes\u8fdb\u7a0b\u5360\u7528\u7684\u5185\u5b58\u8f83\u5927\uff0c\u8f83\u5927\u89c4\u6a21\u7684\u5185\u5b58\u56de\u6536\u64cd\u4f5c\u4e5f\u80fd\u9020\u6210es\u8fdb\u7a0b\u5931\u53bb\u54cd\u5e94\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u4f55\u89e3\u51b3\u8111\u88c2\u95ee\u9898\u5462\uff1f<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e0d\u8981\u628a\u4e3b\u8282\u70b9\u540c\u65f6\u8bbe\u4e3a\u6570\u636e\u8282\u70b9\uff08node.master=true\u548cnode.data\u4e0d\u8981\u540c\u65f6\u8bbe\u4e3atrue\uff09\uff0cnode.master=true\u610f\u5473\u7740\u8be5\u8282\u70b9\u6709\u7ade\u9009Master Node\u7684\u8d44\u683c\uff0cnode.date=true\uff0c\u610f\u5473\u7740\u8be5\u8282\u70b9\u626e\u6f14\u6570\u636e\u8282\u70b9\u7684\u89d2\u8272<\/li>\n\n\n\n<li>\u5c06\u8282\u70b9\u54cd\u5e94\u8d85\u65f6\uff08discovery.zen.ping_timeout\uff09\u7a0d\u7a0d\u8bbe\u7f6e\u957f\u4e00\u4e9b\uff08\u9ed8\u8ba4\u662f3\u79d2\uff09\uff0c\u907f\u514d\u8bef\u5224\u3002<\/li>\n\n\n\n<li>\u8bbe\u7f6e\u9700\u8981\u8d85\u8fc7\u534a\u6570\u7684\u5907\u9009\u8282\u70b9\u540c\u610f\uff0c\u624d\u80fd\u53d1\u751f\u4e3b\u8282\u70b9\u91cd\u9009\uff0c\u7c7b\u4f3c\u9700\u8981\u53c2\u8bae\u9662\u534a\u6570\u4ee5\u4e0a\u901a\u8fc7\uff0c\u624d\u80fd\u5f39\u52be\u73b0\u4efb\u603b\u7edf\u3002\uff08discovery.zen.minimum_master_nodes = \u534a\u6570\u4ee5\u4e0a\u7684\u6295\u7968\u8282\u70b9\u6570\uff09\u3002\u6dfb\u52a0\u4e86\u4e00\u6761\u9009\u4e3e\u89c4\u5219: \u5927\u90e8\u5206\u4eba(\u8d85\u8fc7\u534a\u6570)\u9009\u4e3e1\u4e2anode\u4e3amasterNode\uff0c\u8fd9\u4e2a\u8282\u70b9\u624d\u80fd\u6210\u4e3amasterNode<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u73b0\u5728\u5047\u8bbe\u6211\u4eec\u6709\u5982\u4e0b\u7684\u4e00\u5f20\u6570\u636e\u5e93\u8868 \u73b0\u5728\u5047\u8bbe\u6211\u4eec\u6709\u4e00\u4e2a\u9700\u6c42\u662f\u4ece\u8fd9\u5f20\u8868\u4e2d\u641c\u7d22\u201c\u624b\u673a\u201d\u6216\u8005\u201c\u534e\u4e3a\u624b\u673a\u201d\u7684\u76f8\u5173\u4fe1\u606f\uff0c\u6211 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[19],"class_list":["post-361","post","type-post","status-publish","format-standard","hentry","category-learn","tag-19"],"_links":{"self":[{"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/posts\/361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/comments?post=361"}],"version-history":[{"count":1,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/posts\/361\/revisions"}],"predecessor-version":[{"id":369,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/posts\/361\/revisions\/369"}],"wp:attachment":[{"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/media?parent=361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/categories?post=361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/tags?post=361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}