{"id":600,"date":"2022-05-26T20:18:46","date_gmt":"2022-05-26T12:18:46","guid":{"rendered":"https:\/\/blog.lijiajia.top\/?p=600"},"modified":"2026-06-19T17:44:57","modified_gmt":"2026-06-19T09:44:57","slug":"elasticsearch%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/blog.ttwow.top\/?p=600","title":{"rendered":"Elasticsearch\u5b66\u4e60\u7b14\u8bb0"},"content":{"rendered":"<h2>\u7b2c1\u7ae0 Elasticsearch\u6982\u8ff0<\/h2>\n<h3>1.1 Elasticsearch \u662f\u4ec0\u4e48<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525100112052.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525100112052.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525100112052\" \/><\/div><\/p>\n<\/p>\n<p>\u200b   <strong>The Elastic Stack<\/strong>, \u5305\u62ec <strong>Elasticsearch<\/strong>\u3001<strong>Kibana<\/strong>\u3001<strong>Beats<\/strong> \u548c <strong>Logstash<\/strong>\uff08\u4e5f\u79f0\u4e3a <strong>ELK Stack<\/strong>\uff09\u3002 \u80fd\u591f\u5b89\u5168\u53ef\u9760\u5730\u83b7\u53d6\u4efb\u4f55\u6765\u6e90\u3001\u4efb\u4f55\u683c\u5f0f\u7684\u6570\u636e\uff0c\u7136\u540e\u5b9e\u65f6\u5730\u5bf9\u6570\u636e\u8fdb\u884c\u641c\u7d22\u3001\u5206\u6790\u548c\u53ef\u89c6 \u5316\u3002Elaticsearch\uff0c\u7b80\u79f0\u4e3a ES\uff0cES \u662f\u4e00\u4e2a<strong>\u5f00\u6e90\u7684\u9ad8\u6269\u5c55\u7684\u5206\u5e03\u5f0f\u5168\u6587\u641c\u7d22\u5f15\u64ce<\/strong>\uff0c\u662f\u6574\u4e2a Elastic Stack \u6280\u672f\u6808\u7684\u6838\u5fc3\u3002\u5b83\u53ef\u4ee5\u8fd1\u4e4e\u5b9e\u65f6\u7684\u5b58\u50a8\u3001\u68c0\u7d22\u6570\u636e\uff1b\u672c\u8eab\u6269\u5c55\u6027\u5f88\u597d\uff0c\u53ef\u4ee5\u6269\u5c55\u5230\u4e0a \u767e\u53f0\u670d\u52a1\u5668\uff0c\u5904\u7406 PB \u7ea7\u522b\u7684\u6570\u636e\u3002 <\/p>\n<h3>1.2 \u5168\u6587\u641c\u7d22\u5f15\u64ce<\/h3>\n<p>\u200b   Google\uff0c\u767e\u5ea6\u7c7b\u7684\u7f51\u7ad9\u641c\u7d22\uff0c\u5b83\u4eec\u90fd\u662f\u6839\u636e\u7f51\u9875\u4e2d\u7684\u5173\u952e\u5b57\u751f\u6210\u7d22\u5f15\uff0c\u6211\u4eec\u5728\u641c\u7d22\u7684\u65f6\u5019\u8f93\u5165\u5173\u952e\u5b57\uff0c\u5b83\u4eec\u4f1a\u5c06\u8be5\u5173\u952e\u5b57\u5373\u7d22\u5f15\u5339\u914d\u5230\u7684\u6240\u6709\u7f51\u9875\u8fd4\u56de\uff1b\u8fd8\u6709\u5e38\u89c1\u7684\u9879\u76ee\u4e2d\u5e94\u7528\u65e5 \u5fd7\u7684\u641c\u7d22\u7b49\u7b49\u3002\u5bf9\u4e8e\u8fd9\u4e9b\u975e\u7ed3\u6784\u5316\u7684\u6570\u636e\u6587\u672c\uff0c\u5173\u7cfb\u578b\u6570\u636e\u5e93\u641c\u7d22\u4e0d\u662f\u80fd\u5f88\u597d\u7684\u652f\u6301\u3002<\/p>\n<p>\u4e00\u822c\u4f20\u7edf\u6570\u636e\u5e93\uff0c\u5168\u6587\u68c0\u7d22\u90fd\u5b9e\u73b0\u7684\u5f88\u9e21\u808b\uff0c\u56e0\u4e3a\u4e00\u822c\u4e5f\u6ca1\u4eba\u7528\u6570\u636e\u5e93\u5b58\u6587\u672c\u5b57\u6bb5\u3002\u8fdb \u884c\u5168\u6587\u68c0\u7d22\u9700\u8981\u626b\u63cf\u6574\u4e2a\u8868\uff0c\u5982\u679c\u6570\u636e\u91cf\u5927\u7684\u8bdd\u5373\u4f7f\u5bf9 SQL \u7684\u8bed\u6cd5\u4f18\u5316\uff0c\u4e5f\u6536\u6548\u751a\u5fae\u3002\u5efa \u7acb\u4e86\u7d22\u5f15\uff0c\u4f46\u662f\u7ef4\u62a4\u8d77\u6765\u4e5f\u5f88\u9ebb\u70e6\uff0c\u5bf9\u4e8e insert \u548c update \u64cd\u4f5c\u90fd\u4f1a\u91cd\u65b0\u6784\u5efa\u7d22\u5f15\u3002 <\/p>\n<p>\u57fa\u4e8e\u4ee5\u4e0a\u539f\u56e0\u53ef\u4ee5\u5206\u6790\u5f97\u51fa\uff0c\u5728\u4e00\u4e9b\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u4f7f\u7528\u5e38\u89c4\u7684\u641c\u7d22\u65b9\u5f0f\uff0c\u6027\u80fd\u662f\u975e\u5e38\u5dee \u7684\uff1a <\/p>\n<ul>\n<li>\n<p>\u641c\u7d22\u7684\u6570\u636e\u5bf9\u8c61\u662f\u5927\u91cf\u7684\u975e\u7ed3\u6784\u5316\u7684\u6587\u672c\u6570\u636e\u3002<\/p>\n<\/li>\n<li>\n<p>\u6587\u4ef6\u8bb0\u5f55\u91cf\u8fbe\u5230\u6570\u5341\u4e07\u6216\u6570\u767e\u4e07\u4e2a\u751a\u81f3\u66f4\u591a\u3002 <\/p>\n<\/li>\n<li>\n<p>\u652f\u6301\u5927\u91cf\u57fa\u4e8e\u4ea4\u4e92\u5f0f\u6587\u672c\u7684\u67e5\u8be2\u3002<\/p>\n<\/li>\n<li>\n<p>\u9700\u6c42\u975e\u5e38\u7075\u6d3b\u7684\u5168\u6587\u641c\u7d22\u67e5\u8be2\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5bf9\u9ad8\u5ea6\u76f8\u5173\u7684\u641c\u7d22\u7ed3\u679c\u7684\u6709\u7279\u6b8a\u9700\u6c42\uff0c\u4f46\u662f\u6ca1\u6709\u53ef\u7528\u7684\u5173\u7cfb\u6570\u636e\u5e93\u53ef\u4ee5\u6ee1\u8db3\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5bf9\u4e0d\u540c\u8bb0\u5f55\u7c7b\u578b\u3001\u975e\u6587\u672c\u6570\u636e\u64cd\u4f5c\u6216\u5b89\u5168\u4e8b\u52a1\u5904\u7406\u7684\u9700\u6c42\u76f8\u5bf9\u8f83\u5c11\u7684\u60c5\u51b5\u3002 \u4e3a\u4e86\u89e3\u51b3\u7ed3\u6784\u5316\u6570\u636e\u641c\u7d22\u548c\u975e\u7ed3\u6784\u5316\u6570\u636e\u641c\u7d22\u6027\u80fd\u95ee\u9898\uff0c\u6211\u4eec\u5c31\u9700\u8981\u4e13\u4e1a\uff0c\u5065\u58ee\uff0c\u5f3a\u5927\u7684\u5168 \u6587\u641c\u7d22\u5f15\u64ce <\/p>\n<\/li>\n<\/ul>\n<p>\u8fd9\u91cc\u8bf4\u5230\u7684\u5168\u6587\u641c\u7d22\u5f15\u64ce\u6307\u7684\u662f\u76ee\u524d\u5e7f\u6cdb\u5e94\u7528\u7684\u4e3b\u6d41\u641c\u7d22\u5f15\u64ce\u3002\u5b83\u7684\u5de5\u4f5c\u539f\u7406\u662f\u8ba1\u7b97\u673a \u7d22\u5f15\u7a0b\u5e8f\u901a\u8fc7\u626b\u63cf\u6587\u7ae0\u4e2d\u7684\u6bcf\u4e00\u4e2a\u8bcd\uff0c\u5bf9\u6bcf\u4e00\u4e2a\u8bcd\u5efa\u7acb\u4e00\u4e2a\u7d22\u5f15\uff0c\u6307\u660e\u8be5\u8bcd\u5728\u6587\u7ae0\u4e2d\u51fa\u73b0\u7684 \u6b21\u6570\u548c\u4f4d\u7f6e\uff0c\u5f53\u7528\u6237\u67e5\u8be2\u65f6\uff0c\u68c0\u7d22\u7a0b\u5e8f\u5c31\u6839\u636e\u4e8b\u5148\u5efa\u7acb\u7684\u7d22\u5f15\u8fdb\u884c\u67e5\u627e\uff0c\u5e76\u5c06\u67e5\u627e\u7684\u7ed3\u679c\u53cd \u9988\u7ed9\u7528\u6237\u7684\u68c0\u7d22\u65b9\u5f0f\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u7c7b\u4f3c\u4e8e\u901a\u8fc7\u5b57\u5178\u4e2d\u7684\u68c0\u7d22\u5b57\u8868\u67e5\u5b57\u7684\u8fc7\u7a0b\u3002 <\/p>\n<h3>1.3 Elasticsearch And Solr<\/h3>\n<p>\u200b   Lucene \u662f Apache \u8f6f\u4ef6\u57fa\u91d1\u4f1a Jakarta \u9879\u76ee\u7ec4\u7684\u4e00\u4e2a\u5b50\u9879\u76ee\uff0c\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7b80\u5355\u5374\u5f3a\u5927\u7684 \u5e94\u7528\u7a0b\u5f0f\u63a5\u53e3\uff0c\u80fd\u591f\u505a\u5168\u6587\u7d22\u5f15\u548c\u641c\u5bfb\u3002\u5728 Java \u5f00\u53d1\u73af\u5883\u91cc Lucene \u662f\u4e00\u4e2a\u6210\u719f\u7684\u514d\u8d39\u5f00\u6e90 \u5de5\u5177\u3002\u5c31\u5176\u672c\u8eab\u800c\u8a00\uff0cLucene \u662f\u5f53\u524d\u4ee5\u53ca\u6700\u8fd1\u51e0\u5e74\u6700\u53d7\u6b22\u8fce\u7684\u514d\u8d39 Java \u4fe1\u606f\u68c0\u7d22\u7a0b\u5e8f\u5e93\u3002 \u4f46 Lucene \u53ea\u662f\u4e00\u4e2a\u63d0\u4f9b\u5168\u6587\u641c\u7d22\u529f\u80fd\u7c7b\u5e93\u7684\u6838\u5fc3\u5de5\u5177\u5305\uff0c\u800c\u771f\u6b63\u4f7f\u7528\u5b83\u8fd8\u9700\u8981\u4e00\u4e2a\u5b8c\u5584\u7684 \u670d\u52a1\u6846\u67b6\u642d\u5efa\u8d77\u6765\u8fdb\u884c\u5e94\u7528\u3002 <\/p>\n<p>\u76ee\u524d\u5e02\u9762\u4e0a\u6d41\u884c\u7684\u641c\u7d22\u5f15\u64ce\u8f6f\u4ef6\uff0c\u4e3b\u6d41\u7684\u5c31\u4e24\u6b3e\uff1a<strong>Elasticsearch<\/strong> \u548c <strong>Solr<\/strong>,\u8fd9\u4e24\u6b3e\u90fd\u662f\u57fa \u4e8e Lucene \u642d\u5efa\u7684\uff0c\u53ef\u4ee5\u72ec\u7acb\u90e8\u7f72\u542f\u52a8\u7684\u641c\u7d22\u5f15\u64ce\u670d\u52a1\u8f6f\u4ef6\u3002\u7531\u4e8e\u5185\u6838\u76f8\u540c\uff0c\u6240\u4ee5\u4e24\u8005\u9664\u4e86 \u670d\u52a1\u5668\u5b89\u88c5\u3001\u90e8\u7f72\u3001\u7ba1\u7406\u3001\u96c6\u7fa4\u4ee5\u5916\uff0c\u5bf9\u4e8e\u6570\u636e\u7684\u64cd\u4f5c \u4fee\u6539\u3001\u6dfb\u52a0\u3001\u4fdd\u5b58\u3001\u67e5\u8be2\u7b49\u7b49\u90fd\u5341 \u5206\u7c7b\u4f3c\u3002 \u5728\u4f7f\u7528\u8fc7\u7a0b\u4e2d\uff0c\u4e00\u822c\u90fd\u4f1a\u5c06 Elasticsearch \u548c Solr \u8fd9\u4e24\u4e2a\u8f6f\u4ef6\u5bf9\u6bd4\uff0c\u7136\u540e\u8fdb\u884c\u9009\u578b\u3002\u8fd9\u4e24 \u4e2a\u641c\u7d22\u5f15\u64ce\u90fd\u662f\u6d41\u884c\u7684\uff0c\u5148\u8fdb\u7684\u7684\u5f00\u6e90\u641c\u7d22\u5f15\u64ce\u3002\u5b83\u4eec\u90fd\u662f\u56f4\u7ed5\u6838\u5fc3\u5e95\u5c42\u641c\u7d22\u5e93 - Lucene \u6784\u5efa\u7684 - \u4f46\u5b83\u4eec\u53c8\u662f\u4e0d\u540c\u7684\u3002\u50cf\u6240\u6709\u4e1c\u897f\u4e00\u6837\uff0c\u6bcf\u4e2a\u90fd\u6709\u5176\u4f18\u70b9\u548c\u7f3a\u70b9\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525101147945.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525101147945.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525101147945\" \/><\/div><\/p>\n<h3>1.4 Elasticsearch Or Solr<\/h3>\n<p>\u200b   Elasticsearch \u548c Solr \u90fd\u662f\u5f00\u6e90\u641c\u7d22\u5f15\u64ce\uff0c\u90a3\u4e48\u6211\u4eec\u5728\u4f7f\u7528\u65f6\u8be5\u5982\u4f55\u9009\u62e9\u5462\uff1f<\/p>\n<ul>\n<li>\n<p>Google \u641c\u7d22\u8d8b\u52bf\u7ed3\u679c\u8868\u660e\uff0c\u4e0e Solr \u76f8\u6bd4\uff0cElasticsearch \u5177\u6709\u5f88\u5927\u7684\u5438\u5f15\u529b\uff0c\u4f46\u8fd9\u5e76\u4e0d \u610f\u5473\u7740 Apache Solr \u5df2\u7ecf\u6b7b\u4ea1\u3002\u867d\u7136\u6709\u4e9b\u4eba\u53ef\u80fd\u4e0d\u8fd9\u4e48\u8ba4\u4e3a\uff0c\u4f46 Solr \u4ecd\u7136\u662f\u6700\u53d7\u6b22\u8fce\u7684 \u641c\u7d22\u5f15\u64ce\u4e4b\u4e00\uff0c\u62e5\u6709\u5f3a\u5927\u7684\u793e\u533a\u548c\u5f00\u6e90\u652f\u6301\u3002<\/p>\n<\/li>\n<li>\n<p>\u4e0e Solr \u76f8\u6bd4\uff0cElasticsearch \u6613\u4e8e\u5b89\u88c5\u4e14\u975e\u5e38\u8f7b\u5de7\u3002\u6b64\u5916\uff0c\u4f60\u53ef\u4ee5\u5728\u51e0\u5206\u949f\u5185\u5b89\u88c5\u5e76\u8fd0\u884c Elasticsearch\u3002\u4f46\u662f\uff0c\u5982\u679c Elasticsearch \u7ba1\u7406\u4e0d\u5f53\uff0c\u8fd9\u79cd\u6613\u4e8e\u90e8\u7f72\u548c\u4f7f\u7528\u53ef\u80fd\u4f1a\u6210\u4e3a\u4e00\u4e2a \u95ee\u9898\u3002\u57fa\u4e8e JSON \u7684\u914d\u7f6e\u5f88\u7b80\u5355\uff0c\u4f46\u5982\u679c\u8981\u4e3a\u6587\u4ef6\u4e2d\u7684\u6bcf\u4e2a\u914d\u7f6e\u6307\u5b9a\u6ce8\u91ca\uff0c\u90a3\u4e48\u5b83\u4e0d\u9002 \u5408\u60a8\u3002\u603b\u7684\u6765\u8bf4\uff0c\u5982\u679c\u4f60\u7684\u5e94\u7528\u4f7f\u7528\u7684\u662f JSON\uff0c\u90a3\u4e48 Elasticsearch \u662f\u4e00\u4e2a\u66f4\u597d\u7684\u9009\u62e9\u3002 \u5426\u5219\uff0c\u8bf7\u4f7f\u7528 Solr\uff0c\u56e0\u4e3a\u5b83\u7684 schema.xml \u548c solrconfig.xml \u90fd\u6709\u5f88\u597d\u7684\u6587\u6863\u8bb0\u5f55\u3002 <\/p>\n<\/li>\n<li>\n<p>Solr \u62e5\u6709\u66f4\u5927\uff0c\u66f4\u6210\u719f\u7684\u7528\u6237\uff0c\u5f00\u53d1\u8005\u548c\u8d21\u732e\u8005\u793e\u533a\u3002ES \u867d\u62e5\u6709\u7684\u89c4\u6a21\u8f83\u5c0f\u4f46\u6d3b\u8dc3\u7684 \u7528\u6237\u793e\u533a\u4ee5\u53ca\u4e0d\u65ad\u589e\u957f\u7684\u8d21\u732e\u8005\u793e\u533a\u3002 <\/p>\n<p>Solr \u8d21\u732e\u8005\u548c\u63d0\u4ea4\u8005\u6765\u81ea\u8bb8\u591a\u4e0d\u540c\u7684\u7ec4\u7ec7\uff0c\u800c Elasticsearch \u63d0\u4ea4\u8005\u6765\u81ea\u5355\u4e2a\u516c\u53f8\u3002 <\/p>\n<\/li>\n<li>\n<p>Solr \u66f4\u6210\u719f\uff0c\u4f46 ES \u589e\u957f\u8fc5\u901f\uff0c\u66f4\u7a33\u5b9a\u3002 <\/p>\n<\/li>\n<li>\n<p>Solr \u662f\u4e00\u4e2a\u975e\u5e38\u6709\u636e\u53ef\u67e5\u7684\u4ea7\u54c1\uff0c\u5177\u6709\u6e05\u6670\u7684\u793a\u4f8b\u548c API \u7528\u4f8b\u573a\u666f\u3002 Elasticsearch \u7684 \u6587\u6863\u7ec4\u7ec7\u826f\u597d\uff0c\u4f46\u5b83\u7f3a\u4e4f\u597d\u7684\u793a\u4f8b\u548c\u6e05\u6670\u7684\u914d\u7f6e\u8bf4\u660e\u3002 <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u90a3\u4e48\uff0c\u5230\u5e95\u662f Solr \u8fd8\u662f Elasticsearch\uff1f<\/strong> <\/p>\n<p>\u6709\u65f6\u5f88\u96be\u627e\u5230\u660e\u786e\u7684\u7b54\u6848\u3002\u65e0\u8bba\u60a8\u9009\u62e9 Solr \u8fd8\u662f Elasticsearch\uff0c\u9996\u5148\u9700\u8981\u4e86\u89e3\u6b63\u786e\u7684\u7528 \u4f8b\u548c\u672a\u6765\u9700\u6c42\u3002\u603b\u7ed3\u4ed6\u4eec\u7684\u6bcf\u4e2a\u5c5e\u6027\u3002 <\/p>\n<ul>\n<li>\n<p>\u7531\u4e8e\u6613\u4e8e\u4f7f\u7528\uff0cElasticsearch \u5728\u65b0\u5f00\u53d1\u8005\u4e2d\u66f4\u53d7\u6b22\u8fce\u3002\u4e00\u4e2a\u4e0b\u8f7d\u548c\u4e00\u4e2a\u547d\u4ee4\u5c31\u53ef\u4ee5\u542f\u52a8 \u4e00\u5207\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c\u9664\u4e86\u641c\u7d22\u6587\u672c\u4e4b\u5916\u8fd8\u9700\u8981\u5b83\u6765\u5904\u7406\u5206\u6790\u67e5\u8be2\uff0cElasticsearch \u662f\u66f4\u597d\u7684\u9009\u62e9 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c\u9700\u8981\u5206\u5e03\u5f0f\u7d22\u5f15\uff0c\u5219\u9700\u8981\u9009\u62e9 Elasticsearch\u3002\u5bf9\u4e8e\u9700\u8981\u826f\u597d\u53ef\u4f38\u7f29\u6027\u548c\u4ee5\u53ca\u6027\u80fd\u5206 \u5e03\u5f0f\u73af\u5883\uff0cElasticsearch \u662f\u66f4\u597d\u7684\u9009\u62e9\u3002 <\/p>\n<\/li>\n<li>\n<p>Elasticsearch \u5728\u5f00\u6e90\u65e5\u5fd7\u7ba1\u7406\u7528\u4f8b\u4e2d\u5360\u636e\u4e3b\u5bfc\u5730\u4f4d\uff0c\u8bb8\u591a\u7ec4\u7ec7\u5728 Elasticsearch \u4e2d\u7d22\u5f15\u5b83 \u4eec\u7684\u65e5\u5fd7\u4ee5\u4f7f\u5176\u53ef\u641c\u7d22\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c\u4f60\u559c\u6b22\u76d1\u63a7\u548c\u6307\u6807\uff0c\u90a3\u4e48\u8bf7\u4f7f\u7528 Elasticsearch\uff0c\u56e0\u4e3a\u76f8\u5bf9\u4e8e Solr\uff0cElasticsearch \u66b4\u9732 \u4e86\u66f4\u591a\u7684\u5173\u952e\u6307\u6807 <\/p>\n<\/li>\n<\/ul>\n<h3>1.5 Elasticsearch \u5e94\u7528\u6848\u4f8b<\/h3>\n<ul>\n<li>\n<p>GitHub: 2013 \u5e74\u521d\uff0c\u629b\u5f03\u4e86 Solr\uff0c\u91c7\u53d6 Elasticsearch \u6765\u505a PB \u7ea7\u7684\u641c\u7d22\u3002\u201cGitHub \u4f7f\u7528 Elasticsearch \u641c\u7d22 20TB \u7684\u6570\u636e\uff0c\u5305\u62ec 13 \u4ebf\u6587\u4ef6\u548c 1300 \u4ebf\u884c\u4ee3\u7801\u201d\u3002 <\/p>\n<\/li>\n<li>\n<p>\u7ef4\u57fa\u767e\u79d1\uff1a\u542f\u52a8\u4ee5 Elasticsearch \u4e3a\u57fa\u7840\u7684\u6838\u5fc3\u641c\u7d22\u67b6\u6784 <\/p>\n<\/li>\n<li>\n<p>SoundCloud\uff1a\u201cSoundCloud \u4f7f\u7528 Elasticsearch \u4e3a 1.8 \u4ebf\u7528\u6237\u63d0\u4f9b\u5373\u65f6\u800c\u7cbe\u51c6\u7684\u97f3\u4e50\u641c\u7d22 \u670d\u52a1\u201d\u3002 <\/p>\n<\/li>\n<li>\n<p>\u767e\u5ea6\uff1a\u76ee\u524d\u5e7f\u6cdb\u4f7f\u7528 Elasticsearch \u4f5c\u4e3a\u6587\u672c\u6570\u636e\u5206\u6790\uff0c\u91c7\u96c6\u767e\u5ea6\u6240\u6709\u670d\u52a1\u5668\u4e0a\u7684\u5404\u7c7b\u6307 \u6807\u6570\u636e\u53ca\u7528\u6237\u81ea\u5b9a\u4e49\u6570\u636e\uff0c\u901a\u8fc7\u5bf9\u5404\u79cd\u6570\u636e\u8fdb\u884c\u591a\u7ef4\u5206\u6790\u5c55\u793a\uff0c\u8f85\u52a9\u5b9a\u4f4d\u5206\u6790\u5b9e\u4f8b\u5f02\u5e38 \u6216\u4e1a\u52a1\u5c42\u9762\u5f02\u5e38\u3002\u76ee\u524d\u8986\u76d6\u767e\u5ea6\u5185\u90e8 20 \u591a\u4e2a\u4e1a\u52a1\u7ebf\uff08\u5305\u62ec\u4e91\u5206\u6790\u3001\u7f51\u76df\u3001\u9884\u6d4b\u3001\u6587\u5e93\u3001 \u76f4\u8fbe\u53f7\u3001\u94b1\u5305\u3001\u98ce\u63a7\u7b49\uff09\uff0c\u5355\u96c6\u7fa4\u6700\u5927 100 \u53f0\u673a\u5668\uff0c200 \u4e2a ES \u8282\u70b9\uff0c\u6bcf\u5929\u5bfc\u5165 30TB+ \u6570\u636e\u3002 <\/p>\n<\/li>\n<li>\n<p>\u65b0\u6d6a\uff1a\u4f7f\u7528 Elasticsearch \u5206\u6790\u5904\u7406 32 \u4ebf\u6761\u5b9e\u65f6\u65e5\u5fd7\u3002 <\/p>\n<\/li>\n<li>\n<p>\u963f\u91cc\uff1a\u4f7f\u7528 Elasticsearch \u6784\u5efa\u65e5\u5fd7\u91c7\u96c6\u548c\u5206\u6790\u4f53\u7cfb\u3002 <\/p>\n<\/li>\n<li>\n<p>Stack Overflow\uff1a\u89e3\u51b3 Bug \u95ee\u9898\u7684\u7f51\u7ad9\uff0c\u5168\u82f1\u6587\uff0c\u7f16\u7a0b\u4eba\u5458\u4ea4\u6d41\u7684\u7f51\u7ad9\u3002 <\/p>\n<\/li>\n<\/ul>\n<h2>\u7b2c2\u7ae0 Elasticsearch \u5165\u95e8<\/h2>\n<h3>2.1 Elasticsearch \u5b89\u88c5<\/h3>\n<p>2.1.1 \u4e0b\u8f7d\u8f6f\u4ef6 <\/p>\n<p>Elasticsearch \u7684\u5b98\u65b9\u5730\u5740\uff1a<a href=\"https:\/\/www.elastic.co\/cn\/\">https:\/\/www.elastic.co\/cn\/<\/a> <\/p>\n<p>Elasticsearch \u6700\u65b0\u7684\u7248\u672c\u662f 7.11.2\uff08\u622a\u6b62 2021.3.10\uff09\uff0c\u6211\u4eec\u9009\u62e9 7.8.0 \u7248\u672c\uff08\u6700\u65b0\u7248\u672c\u534a \u5e74\u524d\u7684\u7248\u672c\uff09 <\/p>\n<p>\u4e0b\u8f7d\u5730\u5740\uff1a<a href=\"https:\/\/www.elastic.co\/cn\/downloads\/past-releases#elasticsearch\">https:\/\/www.elastic.co\/cn\/downloads\/past-releases#elasticsearch<\/a> <\/p>\n<p>Elasticsearch \u5206\u4e3a Linux \u548c Windows \u7248\u672c\uff0c\u57fa\u4e8e\u6211\u4eec\u4e3b\u8981\u5b66\u4e60\u7684\u662f Elasticsearch \u7684 Java \u5ba2\u6237\u7aef\u7684\u4f7f\u7528\uff0c\u6240\u4ee5\u8bfe\u7a0b\u4e2d\u4f7f\u7528\u7684\u662f\u5b89\u88c5\u8f83\u4e3a\u7b80\u4fbf\u7684 Windows \u7248\u672c\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525102112193.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525102112193.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525102112193\" \/><\/div><\/p>\n<p>2.1.2 \u5b89\u88c5\u8f6f\u4ef6 <\/p>\n<p>Windows \u7248\u7684 Elasticsearch \u7684\u5b89\u88c5\u5f88\u7b80\u5355\uff0c\u89e3\u538b\u5373\u5b89\u88c5\u5b8c\u6bd5\uff0c\u89e3\u538b\u540e\u7684 Elasticsearch \u7684 \u76ee\u5f55\u7ed3\u6784\u5982\u4e0b <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525102626859.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525102626859.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525102626859\" \/><\/div><\/p>\n<table>\n<thead>\n<tr>\n<th>\u76ee\u5f55<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>bin<\/td>\n<td>\u53ef\u6267\u884c\u811a\u672c\u76ee\u5f55<\/td>\n<\/tr>\n<tr>\n<td>config<\/td>\n<td>\u914d\u7f6e\u76ee\u5f55<\/td>\n<\/tr>\n<tr>\n<td>jdk<\/td>\n<td>\u5185\u7f6e JDK<\/td>\n<\/tr>\n<tr>\n<td>lib<\/td>\n<td>\u7c7b\u5e93<\/td>\n<\/tr>\n<tr>\n<td>logs<\/td>\n<td>\u65e5\u5fd7\u76ee\u5f55<\/td>\n<\/tr>\n<tr>\n<td>modules<\/td>\n<td>\u6a21\u5757\u76ee\u5f55<\/td>\n<\/tr>\n<tr>\n<td>plugins<\/td>\n<td>\u63d2\u4ef6\u76ee\u5f55<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u200b        \u89e3\u538b\u540e\uff0c\u8fdb\u5165 bin \u6587\u4ef6\u76ee\u5f55\uff0c\u70b9\u51fb elasticsearch.bat \u6587\u4ef6\u542f\u52a8 ES \u670d\u52a1 <\/p>\n<p>\u6ce8\u610f\uff1a9300 \u7aef\u53e3\u4e3a Elasticsearch \u96c6\u7fa4\u95f4\u7ec4\u4ef6\u7684\u901a\u4fe1\u7aef\u53e3\uff0c<\/p>\n<p>9200 \u7aef\u53e3\u4e3a\u6d4f\u89c8\u5668\u8bbf\u95ee\u7684 http \u534f\u8bae RESTful \u7aef\u53e3\u3002 <\/p>\n<p>\u6253\u5f00\u6d4f\u89c8\u5668\uff08\u63a8\u8350\u4f7f\u7528\u8c37\u6b4c\u6d4f\u89c8\u5668\uff09\uff0c\u8f93\u5165\u5730\u5740\uff1a<a href=\"http:\/\/localhost:9200\">http:\/\/localhost:9200<\/a>\uff0c<\/p>\n<p>\u6d4b\u8bd5\u7ed3\u679c <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525102725631.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525102725631.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525102725631\" \/><\/div><\/p>\n<p>2.1.3 \u95ee\u9898\u89e3\u51b3 <\/p>\n<p>\uf0d8 Elasticsearch \u662f\u4f7f\u7528 java \u5f00\u53d1\u7684\uff0c\u4e14 7.8 \u7248\u672c\u7684 ES \u9700\u8981 JDK \u7248\u672c 1.8 \u4ee5\u4e0a\uff0c\u9ed8\u8ba4\u5b89\u88c5 \u5305\u5e26\u6709 jdk \u73af\u5883\uff0c\u5982\u679c\u7cfb\u7edf\u914d\u7f6e JAVA_HOME\uff0c\u90a3\u4e48\u4f7f\u7528\u7cfb\u7edf\u9ed8\u8ba4\u7684 JDK\uff0c\u5982\u679c\u6ca1\u6709\u914d \u7f6e\u4f7f\u7528\u81ea\u5e26\u7684 JDK\uff0c\u4e00\u822c\u5efa\u8bae\u4f7f\u7528\u7cfb\u7edf\u914d\u7f6e\u7684 JDK\u3002 <\/p>\n<p>\uf0d8 \u53cc\u51fb\u542f\u52a8\u7a97\u53e3\u95ea\u9000\uff0c\u901a\u8fc7\u8def\u5f84\u8bbf\u95ee\u8ffd\u8e2a\u9519\u8bef\uff0c\u5982\u679c\u662f\u201c\u7a7a\u95f4\u4e0d\u8db3\u201d\uff0c\u8bf7\u4fee\u6539 config\/jvm.options \u914d\u7f6e\u6587\u4ef6 <\/p>\n<pre><code class=\"language-markdown\"># \u8bbe\u7f6e JVM \u521d\u59cb\u5185\u5b58\u4e3a 1G\u3002\u6b64\u503c\u53ef\u4ee5\u8bbe\u7f6e\u4e0e-Xmx \u76f8\u540c\uff0c\u4ee5\u907f\u514d\u6bcf\u6b21\u5783\u573e\u56de\u6536\u5b8c\u6210\u540e JVM \u91cd\u65b0\u5206\u914d\u5185\u5b58\n# Xms represents the initial size of total heap space\n# \u8bbe\u7f6e JVM \u6700\u5927\u53ef\u7528\u5185\u5b58\u4e3a 1G\n# Xmx represents the maximum size of total heap space\n-Xms1g\n-Xmx1g <\/code><\/pre>\n<h3>2.2 Elasticsearch \u57fa\u672c\u64cd\u4f5c<\/h3>\n<p>2.2.1 RESTful <\/p>\n<p>REST \u6307\u7684\u662f\u4e00\u7ec4\u67b6\u6784\u7ea6\u675f\u6761\u4ef6\u548c\u539f\u5219\u3002\u6ee1\u8db3\u8fd9\u4e9b\u7ea6\u675f\u6761\u4ef6\u548c\u539f\u5219\u7684\u5e94\u7528\u7a0b\u5e8f\u6216\u8bbe\u8ba1\u5c31 \u662f RESTful\u3002Web \u5e94\u7528\u7a0b\u5e8f\u6700\u91cd\u8981\u7684 REST \u539f\u5219\u662f\uff0c\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u4e4b\u95f4\u7684\u4ea4\u4e92\u5728\u8bf7\u6c42\u4e4b \u95f4\u662f\u65e0\u72b6\u6001\u7684\u3002\u4ece\u5ba2\u6237\u7aef\u5230\u670d\u52a1\u5668\u7684\u6bcf\u4e2a\u8bf7\u6c42\u90fd\u5fc5\u987b\u5305\u542b\u7406\u89e3\u8bf7\u6c42\u6240\u5fc5\u9700\u7684\u4fe1\u606f\u3002\u5982\u679c\u670d\u52a1 \u5668\u5728\u8bf7\u6c42\u4e4b\u95f4\u7684\u4efb\u4f55\u65f6\u95f4\u70b9\u91cd\u542f\uff0c\u5ba2\u6237\u7aef\u4e0d\u4f1a\u5f97\u5230\u901a\u77e5\u3002\u6b64\u5916\uff0c\u65e0\u72b6\u6001\u8bf7\u6c42\u53ef\u4ee5\u7531\u4efb\u4f55\u53ef\u7528 \u670d\u52a1\u5668\u56de\u7b54\uff0c\u8fd9\u5341\u5206\u9002\u5408\u4e91\u8ba1\u7b97\u4e4b\u7c7b\u7684\u73af\u5883\u3002\u5ba2\u6237\u7aef\u53ef\u4ee5\u7f13\u5b58\u6570\u636e\u4ee5\u6539\u8fdb\u6027\u80fd\u3002 <\/p>\n<p>\u5728\u670d\u52a1\u5668\u7aef\uff0c\u5e94\u7528\u7a0b\u5e8f\u72b6\u6001\u548c\u529f\u80fd\u53ef\u4ee5\u5206\u4e3a\u5404\u79cd\u8d44\u6e90\u3002\u8d44\u6e90\u662f\u4e00\u4e2a\u6709\u8da3\u7684\u6982\u5ff5\u5b9e\u4f53\uff0c\u5b83 \u5411\u5ba2\u6237\u7aef\u516c\u5f00\u3002\u8d44\u6e90\u7684\u4f8b\u5b50\u6709\uff1a\u5e94\u7528\u7a0b\u5e8f\u5bf9\u8c61\u3001\u6570\u636e\u5e93\u8bb0\u5f55\u3001\u7b97\u6cd5\u7b49\u7b49\u3002\u6bcf\u4e2a\u8d44\u6e90\u90fd\u4f7f\u7528 URI (Universal Resource Identifier) \u5f97\u5230\u4e00\u4e2a\u552f\u4e00\u7684\u5730\u5740\u3002\u6240\u6709\u8d44\u6e90\u90fd\u5171\u4eab\u7edf\u4e00\u7684\u63a5\u53e3\uff0c\u4ee5\u4fbf\u5728\u5ba2 \u6237\u7aef\u548c\u670d\u52a1\u5668\u4e4b\u95f4\u4f20\u8f93\u72b6\u6001\u3002\u4f7f\u7528\u7684\u662f\u6807\u51c6\u7684 HTTP \u65b9\u6cd5\uff0c\u6bd4\u5982 GET\u3001PUT\u3001POST \u548c DELETE\u3002 <\/p>\n<p>\u5728 REST \u6837\u5f0f\u7684 Web \u670d\u52a1\u4e2d\uff0c\u6bcf\u4e2a\u8d44\u6e90\u90fd\u6709\u4e00\u4e2a\u5730\u5740\u3002\u8d44\u6e90\u672c\u8eab\u90fd\u662f\u65b9\u6cd5\u8c03\u7528\u7684\u76ee \u6807\uff0c\u65b9\u6cd5\u5217\u8868\u5bf9\u6240\u6709\u8d44\u6e90\u90fd\u662f\u4e00\u6837\u7684\u3002\u8fd9\u4e9b\u65b9\u6cd5\u90fd\u662f\u6807\u51c6\u65b9\u6cd5\uff0c\u5305\u62ec HTTP GET\u3001POST\u3001 PUT\u3001DELETE\uff0c\u8fd8\u53ef\u80fd\u5305\u62ec HEAD \u548c OPTIONS\u3002\u7b80\u5355\u7684\u7406\u89e3\u5c31\u662f\uff0c\u5982\u679c\u60f3\u8981\u8bbf\u95ee\u4e92\u8054 \u7f51\u4e0a\u7684\u8d44\u6e90\uff0c\u5c31\u5fc5\u987b\u5411\u8d44\u6e90\u6240\u5728\u7684\u670d\u52a1\u5668\u53d1\u51fa\u8bf7\u6c42\uff0c\u8bf7\u6c42\u4f53\u4e2d\u5fc5\u987b\u5305\u542b\u8d44\u6e90\u7684\u7f51\u7edc\u8def\u5f84\uff0c\u4ee5 \u53ca\u5bf9\u8d44\u6e90\u8fdb\u884c\u7684\u64cd\u4f5c(\u589e\u5220\u6539\u67e5)\u3002 <\/p>\n<p>2.2.2 \u5ba2\u6237\u7aef\u5b89\u88c5 <\/p>\n<p>\u200b   \u5982\u679c\u76f4\u63a5\u901a\u8fc7\u6d4f\u89c8\u5668\u5411 Elasticsearch \u670d\u52a1\u5668\u53d1\u8bf7\u6c42\uff0c\u90a3\u4e48\u9700\u8981\u5728\u53d1\u9001\u7684\u8bf7\u6c42\u4e2d\u5305\u542b HTTP \u6807\u51c6\u7684\u65b9\u6cd5\uff0c\u800c HTTP \u7684\u5927\u90e8\u5206\u7279\u6027\u4e14\u4ec5\u652f\u6301 GET \u548c POST \u65b9\u6cd5\u3002\u6240\u4ee5\u4e3a\u4e86\u80fd\u65b9\u4fbf \u5730\u8fdb\u884c\u5ba2\u6237\u7aef\u7684\u8bbf\u95ee\uff0c\u53ef\u4ee5\u4f7f\u7528 Postman \u8f6f\u4ef6  <\/p>\n<p>\u200b   Postman \u662f\u4e00\u6b3e\u5f3a\u5927\u7684\u7f51\u9875\u8c03\u8bd5\u5de5\u5177\uff0c\u63d0\u4f9b\u529f\u80fd\u5f3a\u5927\u7684 Web API \u548c HTTP \u8bf7\u6c42\u8c03\u8bd5\u3002 \u8f6f\u4ef6\u529f\u80fd\u5f3a\u5927\uff0c\u754c\u9762\u7b80\u6d01\u660e\u6670\u3001\u64cd\u4f5c\u65b9\u4fbf\u5feb\u6377\uff0c\u8bbe\u8ba1\u5f97\u5f88\u4eba\u6027\u5316\u3002Postman \u4e2d\u6587\u7248\u80fd\u591f\u53d1\u9001 \u4efb\u4f55\u7c7b\u578b\u7684 HTTP \u8bf7\u6c42 (GET, HEAD, POST, PUT..)\uff0c\u4e0d\u4ec5\u80fd\u591f\u8868\u5355\u63d0\u4ea4\uff0c\u4e14\u53ef\u4ee5\u9644\u5e26\u4efb\u610f \u7c7b\u578b\u8bf7\u6c42\u4f53\u3002 <\/p>\n<p>Postman \u5b98\u7f51\uff1a<a href=\"https:\/\/www.getpostman.com\">https:\/\/www.getpostman.com<\/a> <\/p>\n<p>Postman \u4e0b\u8f7d\uff1a<a href=\"https:\/\/www.getpostman.com\/apps\">https:\/\/www.getpostman.com\/apps<\/a> <\/p>\n<p>2.2.3 \u6570\u636e\u683c\u5f0f <\/p>\n<p>Elasticsearch \u662f\u9762\u5411\u6587\u6863\u578b\u6570\u636e\u5e93\uff0c\u4e00\u6761\u6570\u636e\u5728\u8fd9\u91cc\u5c31\u662f\u4e00\u4e2a\u6587\u6863\u3002\u4e3a\u4e86\u65b9\u4fbf\u5927\u5bb6\u7406\u89e3\uff0c \u6211\u4eec\u5c06 Elasticsearch \u91cc\u5b58\u50a8\u6587\u6863\u6570\u636e\u548c\u5173\u7cfb\u578b\u6570\u636e\u5e93 MySQL \u5b58\u50a8\u6570\u636e\u7684\u6982\u5ff5\u8fdb\u884c\u4e00\u4e2a\u7c7b\u6bd4 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525103137428.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525103137428.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525103137428\" \/><\/div><\/p>\n<p>ES \u91cc\u7684 Index \u53ef\u4ee5\u770b\u505a\u4e00\u4e2a\u5e93\uff0c\u800c Types \u76f8\u5f53\u4e8e\u8868\uff0cDocuments \u5219\u76f8\u5f53\u4e8e\u8868\u7684\u884c\u3002 \u8fd9\u91cc Types \u7684\u6982\u5ff5\u5df2\u7ecf\u88ab\u9010\u6e10\u5f31\u5316\uff0cElasticsearch 6.X \u4e2d\uff0c\u4e00\u4e2a index \u4e0b\u5df2\u7ecf\u53ea\u80fd\u5305\u542b\u4e00\u4e2a type\uff0cElasticsearch 7.X \u4e2d, Type \u7684\u6982\u5ff5\u5df2\u7ecf\u88ab\u5220\u9664\u4e86\u3002 <\/p>\n<p>\u7528 JSON \u4f5c\u4e3a\u6587\u6863\u5e8f\u5217\u5316\u7684\u683c\u5f0f\uff0c\u6bd4\u5982\u4e00\u6761\u7528\u6237\u4fe1\u606f\uff1a<\/p>\n<pre><code class=\"language-json\">{\n    &quot;name&quot;: &quot;John&quot;,\n    &quot;sex&quot;: &quot;Male&quot;,\n    &quot;age&quot;: 25,\n    &quot;birthDate&quot;: &quot;1990\/05\/01&quot;,\n    &quot;about&quot;: &quot;I love to go rock climbing&quot;,\n    &quot;interests&quot;: [\n        &quot;sports&quot;,\n        &quot;music&quot;\n    ]\n}<\/code><\/pre>\n<h4>2.2.4 HTTP \u64cd\u4f5c<\/h4>\n<p>2.2.4.1 \u7d22\u5f15\u64cd\u4f5c <\/p>\n<p>1) \u521b\u5efa\u7d22\u5f15 \u5bf9\u6bd4\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff0c\u521b\u5efa\u7d22\u5f15\u5c31\u7b49\u540c\u4e8e\u521b\u5efa\u6570\u636e\u5e93 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 PUT \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\">http:\/\/127.0.0.1:9200\/shopping<\/a> <\/p>\n<p>\u8bf7\u6c42\u540e\uff0c\u670d\u52a1\u5668\u8fd4\u56de\u54cd\u5e94<\/p>\n<pre><code class=\"language-json\">{\n    &quot;acknowledged&quot;\u3010\u54cd\u5e94\u7ed3\u679c\u3011: true, # true \u64cd\u4f5c\u6210\u529f\n    &quot;shards_acknowledged&quot;\u3010\u5206\u7247\u7ed3\u679c\u3011: true, # \u5206\u7247\u64cd\u4f5c\u6210\u529f\n    &quot;index&quot;\u3010\u7d22\u5f15\u540d\u79f0\u3011: &quot;shopping&quot;\n}\n# \u6ce8\u610f\uff1a\u521b\u5efa\u7d22\u5f15\u5e93\u7684\u5206\u7247\u6570\u9ed8\u8ba4 1 \u7247\uff0c\u5728 7.0.0 \u4e4b\u524d\u7684 Elasticsearch \u7248\u672c\u4e2d\uff0c\u9ed8\u8ba4 5 \u7247 <\/code><\/pre>\n<p>\u5982\u679c\u91cd\u590d\u6dfb\u52a0\u7d22\u5f15\uff0c\u4f1a\u8fd4\u56de\u9519\u8bef\u4fe1\u606f <\/p>\n<p>2) \u67e5\u770b\u6240\u6709\u7d22\u5f15 \u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/_cat\/indices?v\">http:\/\/127.0.0.1:9200\/_cat\/indices?v<\/a> <\/p>\n<p>\u8fd9\u91cc\u8bf7\u6c42\u8def\u5f84\u4e2d\u7684_cat \u8868\u793a\u67e5\u770b\u7684\u610f\u601d\uff0cindices \u8868\u793a\u7d22\u5f15\uff0c\u6240\u4ee5\u6574\u4f53\u542b\u4e49\u5c31\u662f\u67e5\u770b\u5f53\u524d ES \u670d\u52a1\u5668\u4e2d\u7684\u6240\u6709\u7d22\u5f15\uff0c\u5c31\u597d\u50cf MySQL \u4e2d\u7684 show tables \u7684\u611f\u89c9\uff0c\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\u5982\u4e0b<\/p>\n<table>\n<thead>\n<tr>\n<th>\u8868\u5934<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>health<\/td>\n<td>\u5f53\u524d\u670d\u52a1\u5668\u5065\u5eb7\u72b6\u6001\uff1a green(\u96c6\u7fa4\u5b8c\u6574) yellow(\u5355\u70b9\u6b63\u5e38\u3001\u96c6\u7fa4\u4e0d\u5b8c\u6574) red(\u5355\u70b9\u4e0d\u6b63\u5e38) status \u7d22\u5f15\u6253\u5f00\u3001\u5173\u95ed\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td>index<\/td>\n<td>\u7d22\u5f15\u540d<\/td>\n<\/tr>\n<tr>\n<td>uuid<\/td>\n<td>\u7d22\u5f15\u7edf\u4e00\u7f16\u53f7<\/td>\n<\/tr>\n<tr>\n<td>pri<\/td>\n<td>\u4e3b\u5206\u7247\u6570\u91cf<\/td>\n<\/tr>\n<tr>\n<td>rep<\/td>\n<td>\u526f\u672c\u6570\u91cf<\/td>\n<\/tr>\n<tr>\n<td>docs.count<\/td>\n<td>\u53ef\u7528\u6587\u6863\u6570\u91cf<\/td>\n<\/tr>\n<tr>\n<td>docs.deleted<\/td>\n<td>\u6587\u6863\u5220\u9664\u72b6\u6001\uff08\u903b\u8f91\u5220\u9664\uff09<\/td>\n<\/tr>\n<tr>\n<td>store.size<\/td>\n<td>\u4e3b\u5206\u7247\u548c\u526f\u5206\u7247\u6574\u4f53\u5360\u7a7a\u95f4\u5927\u5c0f<\/td>\n<\/tr>\n<tr>\n<td>pri.store.size<\/td>\n<td>\u4e3b\u5206\u7247\u5360\u7a7a\u95f4\u5927\u5c0f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>3) \u67e5\u770b\u5355\u4e2a\u7d22\u5f15 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\">http:\/\/127.0.0.1:9200\/shopping<\/a> <\/p>\n<p>\u67e5\u770b\u7d22\u5f15\u5411 ES \u670d\u52a1\u5668\u53d1\u9001\u7684\u8bf7\u6c42\u8def\u5f84\u548c\u521b\u5efa\u7d22\u5f15\u662f\u4e00\u81f4\u7684\u3002<\/p>\n<p>\u4f46\u662f HTTP \u65b9\u6cd5\u4e0d\u4e00\u81f4\u3002\u8fd9\u91cc \u53ef\u4ee5\u4f53\u4f1a\u4e00\u4e0b RESTful \u7684\u610f\u4e49\uff0c \u8bf7\u6c42\u540e\uff0c\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-json\">{ &quot;shopping&quot;\u3010\u7d22\u5f15\u540d\u3011:\n { &quot;aliases&quot;\u3010\u522b\u540d\u3011: {},\n&quot;mappings&quot;\u3010\u6620\u5c04\u3011: {},\n&quot;settings&quot;\u3010\u8bbe\u7f6e\u3011:\n{ &quot;index&quot;\u3010\u8bbe\u7f6e - \u7d22\u5f15\u3011: {\n &quot;creation_date&quot;\u3010\u8bbe\u7f6e - \u7d22\u5f15 - \u521b\u5efa\u65f6\u95f4\u3011: &quot;1614265373911&quot;,\n &quot;number_of_shards&quot;\u3010\u8bbe\u7f6e - \u7d22\u5f15 - \u4e3b\u5206\u7247\u6570\u91cf\u3011: &quot;1&quot;,\n &quot;number_of_replicas&quot;\u3010\u8bbe\u7f6e - \u7d22\u5f15 - \u526f\u5206\u7247\u6570\u91cf\u3011: &quot;1&quot;,\n &quot;uuid&quot;\u3010\u8bbe\u7f6e - \u7d22\u5f15 - \u552f\u4e00\u6807\u8bc6\u3011: &quot;eI5wemRERTumxGCc1bAk2A&quot;,\n &quot;version&quot;\u3010\u8bbe\u7f6e - \u7d22\u5f15 - \u7248\u672c\u3011:\n { &quot;created&quot;: &quot;7080099&quot; },\n&quot;provided_name&quot;\u3010\u8bbe\u7f6e - \u7d22\u5f15 - \u540d\u79f0\u3011: &quot;shopping&quot;\n} } } }<\/code><\/pre>\n<p>4) \u5220\u9664\u7d22\u5f15 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 DELETE \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\">http:\/\/127.0.0.1:9200\/shopping<\/a> <\/p>\n<p>\u91cd\u65b0\u8bbf\u95ee\u7d22\u5f15\u65f6\uff0c\u670d\u52a1\u5668\u8fd4\u56de\u54cd\u5e94\uff1a\u7d22\u5f15\u4e0d\u5b58\u5728 <\/p>\n<p>2.2.4.2 \u6587\u6863\u64cd\u4f5c <\/p>\n<p>1) \u521b\u5efa\u6587\u6863 <\/p>\n<p>\u7d22\u5f15\u5df2\u7ecf\u521b\u5efa\u597d\u4e86\uff0c\u63a5\u4e0b\u6765\u6211\u4eec\u6765\u521b\u5efa\u6587\u6863\uff0c\u5e76\u6dfb\u52a0\u6570\u636e\u3002\u8fd9\u91cc\u7684\u6587\u6863\u53ef\u4ee5\u7c7b\u6bd4\u4e3a\u5173\u7cfb\u578b\u6570 \u636e\u5e93\u4e2d\u7684\u8868\u6570\u636e\uff0c\u6dfb\u52a0\u7684\u6570\u636e\u683c\u5f0f\u4e3a JSON \u683c\u5f0f <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 POST \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\/_doc\">http:\/\/127.0.0.1:9200\/shopping\/_doc<\/a> <\/p>\n<p>\u8bf7\u6c42\u4f53\u5185\u5bb9\u4e3a\uff1a<\/p>\n<pre><code class=\"language-json\">{\n    &quot;title&quot;: &quot;\u5c0f\u7c73\u624b\u673a&quot;,\n    &quot;category&quot;: &quot;\u5c0f\u7c73&quot;,\n    &quot;images&quot;: &quot;http:\/\/www.gulixueyuan.com\/xm.jpg&quot;,\n    &quot;price&quot;: 3999\n}<\/code><\/pre>\n<p>\u6b64\u5904\u53d1\u9001\u8bf7\u6c42\u7684\u65b9\u5f0f\u5fc5\u987b\u4e3a POST\uff0c\u4e0d\u80fd\u662f PUT\uff0c\u5426\u5219\u4f1a\u53d1\u751f\u9519\u8bef <\/p>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-json\">{\n    &quot;_index&quot;\u3010\u7d22\u5f15\u3011: &quot;shopping&quot;,\n    &quot;_type&quot;\u3010\u7c7b\u578b-\u6587\u6863\u3011: &quot;_doc&quot;,\n    &quot;_id&quot;\u3010\u552f\u4e00\u6807\u8bc6\u3011: &quot;Xhsa2ncBlvF_7lxyCE9G&quot;, #\u53ef\u4ee5\u7c7b\u6bd4\u4e3a MySQL \u4e2d\u7684\u4e3b\u952e\uff0c\u968f\u673a\u751f\u6210         &quot;_version&quot;\u3010\u7248\u672c\u3011: 1,\n    &quot;result&quot;\u3010\u7ed3\u679c\u3011: &quot;created&quot;, #\u8fd9\u91cc\u7684 create \u8868\u793a\u521b\u5efa\u6210\u529f\n    &quot;_shards&quot;\u3010\u5206\u7247\u3011:\n    {\n    &quot;total&quot;\u3010\u5206\u7247 - \u603b\u6570\u3011: 2,\n    &quot;successful&quot;\u3010\u5206\u7247 - \u6210\u529f\u3011: 1,\n    &quot;failed&quot;\u3010\u5206\u7247 - \u5931\u8d25\u3011: 0 },\n&quot;_seq_no&quot;: 0, &quot;_primary_term&quot;: 1\n} <\/code><\/pre>\n<p>\u4e0a\u9762\u7684\u6570\u636e\u521b\u5efa\u540e\uff0c\u7531\u4e8e\u6ca1\u6709\u6307\u5b9a\u6570\u636e\u552f\u4e00\u6027\u6807\u8bc6\uff08ID\uff09\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cES \u670d\u52a1\u5668\u4f1a\u968f\u673a \u751f\u6210\u4e00\u4e2a\u3002 <\/p>\n<p>\u5982\u679c\u60f3\u8981\u81ea\u5b9a\u4e49\u552f\u4e00\u6027\u6807\u8bc6\uff0c\u9700\u8981\u5728\u521b\u5efa\u65f6\u6307\u5b9a\uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\/_doc\/1\">http:\/\/127.0.0.1:9200\/shopping\/_doc\/1<\/a> <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525111339494.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525111339494.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525111339494\" \/><\/div><\/p>\n<p><strong>\u6b64\u5904\u9700\u8981\u6ce8\u610f\uff1a\u5982\u679c\u589e\u52a0\u6570\u636e\u65f6\u660e\u786e\u6570\u636e\u4e3b\u952e\uff0c\u90a3\u4e48\u8bf7\u6c42\u65b9\u5f0f\u4e5f\u53ef\u4ee5\u4e3a PUT<\/strong> <\/p>\n<p>2) \u67e5\u770b\u6587\u6863 <\/p>\n<p>\u67e5\u770b\u6587\u6863\u65f6\uff0c\u9700\u8981\u6307\u660e\u6587\u6863\u7684\u552f\u4e00\u6027\u6807\u8bc6\uff0c\u7c7b\u4f3c\u4e8e MySQL \u4e2d\u6570\u636e\u7684\u4e3b\u952e\u67e5\u8be2 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\/_doc\/1\">http:\/\/127.0.0.1:9200\/shopping\/_doc\/1<\/a> \u67e5\u8be2\u6210\u529f\u540e\uff0c\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n<pre><code class=\"language-json\">{\n    &quot;_index&quot;\u3010\u7d22\u5f15\u3011: &quot;shopping&quot;,\n    &quot;_type&quot;\u3010\u6587\u6863\u7c7b\u578b\u3011: &quot;_doc&quot;,\n    &quot;_id&quot;: &quot;1&quot;,\n    &quot;_version&quot;: 2,\n    &quot;_seq_no&quot;: 2,\n    &quot;_primary_term&quot;: 2,\n    &quot;found&quot;\u3010\u67e5\u8be2\u7ed3\u679c\u3011: true, # true \u8868\u793a\u67e5\u627e\u5230\uff0cfalse \u8868\u793a\u672a\u67e5\u627e\u5230\n    &quot;_source&quot;\u3010\u6587\u6863\u6e90\u4fe1\u606f\u3011: {\n    &quot;title&quot;: &quot;\u534e\u4e3a\u624b\u673a&quot;,\n    &quot;category&quot;: &quot;\u534e\u4e3a&quot;,\n    &quot;images&quot;: &quot;http:\/\/www.gulixueyuan.com\/hw.jpg&quot;,\n    &quot;price&quot;: 4999.00\n} } <\/code><\/pre>\n<p>3) \u4fee\u6539\u6587\u6863 <\/p>\n<p>\u548c\u65b0\u589e\u6587\u6863\u4e00\u6837\uff0c\u8f93\u5165\u76f8\u540c\u7684 URL \u5730\u5740\u8bf7\u6c42\uff0c\u5982\u679c\u8bf7\u6c42\u4f53\u53d8\u5316\uff0c\u4f1a\u5c06\u539f\u6709\u7684\u6570\u636e\u5185\u5bb9\u8986\u76d6 \u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 POST \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\/_doc\/1\">http:\/\/127.0.0.1:9200\/shopping\/_doc\/1<\/a> <\/p>\n<p>\u8bf7\u6c42\u4f53\u5185\u5bb9\u4e3a: <\/p>\n<pre><code class=\"language-json\">{\n    &quot;title&quot;: &quot;\u534e\u4e3a\u624b\u673a&quot;,\n    &quot;category&quot;: &quot;\u534e\u4e3a&quot;,\n    &quot;images&quot;: &quot;http:\/\/www.gulixueyuan.com\/hw.jpg&quot;,\n    &quot;price&quot;: 4999\n}<\/code><\/pre>\n<p>\u4fee\u6539\u6210\u529f\u540e\uff0c\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n<pre><code class=\"language-json\">{ &quot;_index&quot;: &quot;shopping&quot;,\n &quot;_type&quot;: &quot;_doc&quot;,\n &quot;_id&quot;: &quot;1&quot;,\n &quot;_version&quot;\u3010\u7248\u672c\u3011: 2,\n &quot;result&quot;\u3010\u7ed3\u679c\u3011: &quot;updated&quot;, # updated \u8868\u793a\u6570\u636e\u88ab\u66f4\u65b0\n &quot;_shards&quot;: { &quot;total&quot;: 2,\n &quot;successful&quot;: 1,\n &quot;failed&quot;: 0 },\n&quot;_seq_no&quot;: 2,\n&quot;_primary_term&quot;: 2\n}<\/code><\/pre>\n<p>4) \u4fee\u6539\u5b57\u6bb5 <\/p>\n<p>\u4fee\u6539\u6570\u636e\u65f6\uff0c\u4e5f\u53ef\u4ee5\u53ea\u4fee\u6539\u67d0\u4e00\u7ed9\u6761\u6570\u636e\u7684\u5c40\u90e8\u4fe1\u606f <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 POST \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\/_update\/1\">http:\/\/127.0.0.1:9200\/shopping\/_update\/1<\/a> <\/p>\n<p>\u8bf7\u6c42\u4f53\u5185\u5bb9\u4e3a\uff1a<\/p>\n<pre><code class=\"language-json\">{\n    &quot;doc&quot;: {\n        &quot;price&quot;: 3000\n    }\n}<\/code><\/pre>\n<p>\u4fee\u6539\u6210\u529f\u540e\uff0c\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525112127665.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525112127665.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525112127665\" \/><\/div><\/p>\n<p>\u6839\u636e\u552f\u4e00\u6027\u6807\u8bc6\uff0c\u67e5\u8be2\u6587\u6863\u6570\u636e\uff0c\u6587\u6863\u6570\u636e\u5df2\u7ecf\u66f4\u65b0 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525112147230.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525112147230.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525112147230\" \/><\/div><\/p>\n<p>5) \u5220\u9664\u6587\u6863 <\/p>\n<p>\u5220\u9664\u4e00\u4e2a\u6587\u6863\u4e0d\u4f1a\u7acb\u5373\u4ece\u78c1\u76d8\u4e0a\u79fb\u9664\uff0c\u5b83\u53ea\u662f\u88ab\u6807\u8bb0\u6210\u5df2\u5220\u9664\uff08\u903b\u8f91\u5220\u9664\uff09\u3002<\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 DELETE \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\/_doc\/1\">http:\/\/127.0.0.1:9200\/shopping\/_doc\/1<\/a> <\/p>\n<p>\u5220\u9664\u6210\u529f\uff0c\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n<pre><code class=\"language-json\">{ &quot;_index&quot;: &quot;shopping&quot;,\n &quot;_type&quot;: &quot;_doc&quot;,\n &quot;_id&quot;: &quot;1&quot;,\n &quot;_version&quot;\u3010\u7248\u672c\u3011: 4, #\u5bf9\u6570\u636e\u7684\u64cd\u4f5c\uff0c\u90fd\u4f1a\u66f4\u65b0\u7248\u672c\n &quot;result&quot;\u3010\u7ed3\u679c\u3011: &quot;deleted&quot;, # deleted \u8868\u793a\u6570\u636e\u88ab\u6807\u8bb0\u4e3a\u5220\u9664\n &quot;_shards&quot;: {\n &quot;total&quot;: 2, &quot;successful&quot;: 1, &quot;failed&quot;: 0 },\n&quot;_seq_no&quot;: 4, &quot;_primary_term&quot;: 2 } <\/code><\/pre>\n<p>\u5220\u9664\u540e\u518d\u67e5\u8be2\u5f53\u524d\u6587\u6863\u4fe1\u606f \u5982\u679c\u5220\u9664\u4e00\u4e2a\u5e76\u4e0d\u5b58\u5728\u7684\u6587\u6863 <\/p>\n<pre><code class=\"language-json\">{ &quot;_index&quot;: &quot;shopping&quot;,\n &quot;_type&quot;: &quot;_doc&quot;,\n &quot;_id&quot;: &quot;1&quot;,\n &quot;_version&quot;: 1,\n &quot;result&quot;\u3010\u7ed3\u679c\u3011: &quot;not_found&quot;, # not_found \u8868\u793a\u672a\u67e5\u627e\u5230\n &quot;_shards&quot;: {\n &quot;total&quot;: 2,\n &quot;successful&quot;: 1,\n &quot;failed&quot;: 0\n},\n&quot;_seq_no&quot;: 5,\n&quot;_primary_term&quot;: 2\n} <\/code><\/pre>\n<p>6) \u6761\u4ef6\u5220\u9664\u6587\u6863 <\/p>\n<p>\u4e00\u822c\u5220\u9664\u6570\u636e\u90fd\u662f\u6839\u636e\u6587\u6863\u7684\u552f\u4e00\u6027\u6807\u8bc6\u8fdb\u884c\u5220\u9664\uff0c\u5b9e\u9645\u64cd\u4f5c\u65f6\uff0c\u4e5f\u53ef\u4ee5\u6839\u636e\u6761\u4ef6\u5bf9\u591a\u6761\u6570 \u636e\u8fdb\u884c\u5220\u9664 <\/p>\n<p>\u9996\u5148\u5206\u522b\u589e\u52a0\u591a\u6761\u6570\u636e:<\/p>\n<pre><code class=\"language-json\">{\n    &quot;title&quot;: &quot;\u5c0f\u7c73\u624b\u673a&quot;,\n    &quot;category&quot;: &quot;\u5c0f\u7c73&quot;,\n    &quot;images&quot;: &quot;http:\/\/www.gulixueyuan.com\/xm.jpg&quot;,\n    &quot;price&quot;: 4000\n}<\/code><\/pre>\n<pre><code class=\"language-json\">{\n    &quot;title&quot;: &quot;\u534e\u4e3a\u624b\u673a&quot;,\n    &quot;category&quot;: &quot;\u534e\u4e3a&quot;,\n    &quot;images&quot;: &quot;http:\/\/www.gulixueyuan.com\/hw.jpg&quot;,\n    &quot;price&quot;: 4000\n}<\/code><\/pre>\n<p>\u5411 ES \u670d\u52a1\u5668\u53d1 POST \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/shopping\/_delete_by_query\">http:\/\/127.0.0.1:9200\/shopping\/_delete_by_query<\/a> <\/p>\n<p>\u8bf7\u6c42\u4f53\u5185\u5bb9\u4e3a\uff1a <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;match&quot;: {\n            &quot;price&quot;: 4000\n        }\n    }\n}<\/code><\/pre>\n<p>\u5220\u9664\u6210\u529f\u540e\uff0c\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<pre><code class=\"language-json\">{\n    &quot;took&quot;\u3010\u8017\u65f6\u3011: 175,\n    &quot;timed_out&quot;\u3010\u662f\u5426\u8d85\u65f6\u3011: false,\n    &quot;total&quot;\u3010\u603b\u6570\u3011: 2,\n    &quot;deleted&quot;\u3010\u5220\u9664\u6570\u91cf\u3011: 2,\n    &quot;batches&quot;: 1, &quot;version_conflicts&quot;: 0, &quot;noops&quot;: 0,\n    &quot;retries&quot;:\n    { &quot;bulk&quot;: 0, &quot;search&quot;: 0 },\n&quot;throttled_millis&quot;: 0,\n&quot;requests_per_second&quot;: -1.0,\n&quot;throttled_until_millis&quot;: 0,\n&quot;failures&quot;: []\n} <\/code><\/pre>\n<p>2.2.4.3 \u6620\u5c04\u64cd\u4f5c <\/p>\n<p>\u6709\u4e86\u7d22\u5f15\u5e93\uff0c\u7b49\u4e8e\u6709\u4e86\u6570\u636e\u5e93\u4e2d\u7684 database\u3002 <\/p>\n<pre><code>\u63a5\u4e0b\u6765\u5c31\u9700\u8981\u5efa\u7d22\u5f15\u5e93(index)\u4e2d\u7684\u6620\u5c04\u4e86\uff0c\u7c7b\u4f3c\u4e8e\u6570\u636e\u5e93(database)\u4e2d\u7684\u8868\u7ed3\u6784(table)\u3002 \u521b\u5efa\u6570\u636e\u5e93\u8868\u9700\u8981\u8bbe\u7f6e\u5b57\u6bb5\u540d\u79f0\uff0c\u7c7b\u578b\uff0c\u957f\u5ea6\uff0c\u7ea6\u675f\u7b49\uff1b\u7d22\u5f15\u5e93\u4e5f\u4e00\u6837\uff0c\u9700\u8981\u77e5\u9053\u8fd9\u4e2a\u7c7b\u578b \u4e0b\u6709\u54ea\u4e9b\u5b57\u6bb5\uff0c\u6bcf\u4e2a\u5b57\u6bb5\u6709\u54ea\u4e9b\u7ea6\u675f\u4fe1\u606f\uff0c\u8fd9\u5c31\u53eb\u505a\u6620\u5c04(mapping)\u3002 <\/code><\/pre>\n<p>1) \u521b\u5efa\u6620\u5c04 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 PUT \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_mapping\">http:\/\/127.0.0.1:9200\/student\/_mapping<\/a> <\/p>\n<p>\u8bf7\u6c42\u4f53\u5185\u5bb9\u4e3a\uff1a<\/p>\n<pre><code class=\"language-json\">{\n&quot;properties&quot;: {\n&quot;name&quot;: {\n&quot;type&quot;: &quot;text&quot;,\n&quot;index&quot;: true\n},\n&quot;sex&quot;: {\n&quot;type&quot;: &quot;text&quot;,\n&quot;index&quot;: false\n},\n&quot;age&quot;: {\n&quot;type&quot;: &quot;long&quot;,\n&quot;index&quot;: false\n}\n}\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525133445318.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525133445318.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525133445318\" \/><\/div><\/p>\n<p>\u6620\u5c04\u6570\u636e\u8bf4\u660e\uff1a <\/p>\n<ul>\n<li>\n<p>\u5b57\u6bb5\u540d\uff1a\u4efb\u610f\u586b\u5199\uff0c\u4e0b\u9762\u6307\u5b9a\u8bb8\u591a\u5c5e\u6027\uff0c\u4f8b\u5982\uff1atitle\u3001subtitle\u3001images\u3001price <\/p>\n<\/li>\n<li>\n<p>type\uff1a\u7c7b\u578b\uff0cElasticsearch \u4e2d\u652f\u6301\u7684\u6570\u636e\u7c7b\u578b\u975e\u5e38\u4e30\u5bcc\uff0c\u8bf4\u51e0\u4e2a\u5173\u952e\u7684\uff1a <\/p>\n<ul>\n<li>String \u7c7b\u578b\uff0c\u53c8\u5206\u4e24\u79cd\uff1a <\/li>\n<\/ul>\n<p>text\uff1a\u53ef\u5206\u8bcd <\/p>\n<p>keyword\uff1a\u4e0d\u53ef\u5206\u8bcd\uff0c\u6570\u636e\u4f1a\u4f5c\u4e3a\u5b8c\u6574\u5b57\u6bb5\u8fdb\u884c\u5339\u914d <\/p>\n<ul>\n<li>Numerical\uff1a\u6570\u503c\u7c7b\u578b\uff0c\u5206\u4e24\u7c7b <\/li>\n<\/ul>\n<p>\u57fa\u672c\u6570\u636e\u7c7b\u578b\uff1along\u3001integer\u3001short\u3001byte\u3001double\u3001float\u3001half_float <\/p>\n<p>\u6d6e\u70b9\u6570\u7684\u9ad8\u7cbe\u5ea6\u7c7b\u578b\uff1ascaled_float <\/p>\n<ul>\n<li>\n<p>Date\uff1a\u65e5\u671f\u7c7b\u578b <\/p>\n<\/li>\n<li>\n<p>Array\uff1a\u6570\u7ec4\u7c7b\u578b <\/p>\n<\/li>\n<li>\n<p>Object\uff1a\u5bf9\u8c61 <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>index\uff1a\u662f\u5426\u7d22\u5f15\uff0c\u9ed8\u8ba4\u4e3a true\uff0c\u4e5f\u5c31\u662f\u8bf4\u4f60\u4e0d\u8fdb\u884c\u4efb\u4f55\u914d\u7f6e\uff0c\u6240\u6709\u5b57\u6bb5\u90fd\u4f1a\u88ab\u7d22\u5f15\u3002 <\/p>\n<p>true\uff1a\u5b57\u6bb5\u4f1a\u88ab\u7d22\u5f15\uff0c\u5219\u53ef\u4ee5\u7528\u6765\u8fdb\u884c\u641c\u7d22 <\/p>\n<p>false\uff1a\u5b57\u6bb5\u4e0d\u4f1a\u88ab\u7d22\u5f15\uff0c\u4e0d\u80fd\u7528\u6765\u641c\u7d22 <\/p>\n<\/li>\n<li>\n<p>store\uff1a\u662f\u5426\u5c06\u6570\u636e\u8fdb\u884c\u72ec\u7acb\u5b58\u50a8\uff0c\u9ed8\u8ba4\u4e3a false <\/p>\n<p>\u539f\u59cb\u7684\u6587\u672c\u4f1a\u5b58\u50a8\u5728_source \u91cc\u9762\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5176\u4ed6\u63d0\u53d6\u51fa\u6765\u7684\u5b57\u6bb5\u90fd\u4e0d\u662f\u72ec\u7acb\u5b58\u50a8 \u7684\uff0c\u662f\u4ece_source \u91cc\u9762\u63d0\u53d6\u51fa\u6765\u7684\u3002\u5f53\u7136\u4f60\u4e5f\u53ef\u4ee5\u72ec\u7acb\u7684\u5b58\u50a8\u67d0\u4e2a\u5b57\u6bb5\uff0c\u53ea\u8981\u8bbe\u7f6e &quot;store&quot;: true \u5373\u53ef\uff0c\u83b7\u53d6\u72ec\u7acb\u5b58\u50a8\u7684\u5b57\u6bb5\u8981\u6bd4\u4ece_source \u4e2d\u89e3\u6790\u5feb\u5f97\u591a\uff0c\u4f46\u662f\u4e5f\u4f1a\u5360\u7528 \u66f4\u591a\u7684\u7a7a\u95f4\uff0c\u6240\u4ee5\u8981\u6839\u636e\u5b9e\u9645\u4e1a\u52a1\u9700\u6c42\u6765\u8bbe\u7f6e\u3002<\/p>\n<\/li>\n<li>\n<p>analyzer\uff1a\u5206\u8bcd\u5668\uff0c\u8fd9\u91cc\u7684 ik_max<em>word \u5373\u4f7f\u7528 ik \u5206\u8bcd\u5668,\u540e\u9762\u4f1a\u6709\u4e13\u95e8\u7684\u7ae0\u8282\u5b66\u4e60 <\/em><\/p>\n<\/li>\n<\/ul>\n<p>2) \u67e5\u770b\u6620\u5c04 <\/p>\n<p>_\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_mapping\">http:\/\/127.0.0.1:9200\/student\/_mapping<\/a><\/p>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525134331261.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525134331261.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525134331261\" \/><\/div><\/p>\n<p>3) \u7d22\u5f15\u6620\u5c04<\/p>\n<p>\u5173\u8054 \u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 PUT \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student1\">http:\/\/127.0.0.1:9200\/student1<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;settings&quot;: {},\n    &quot;mappings&quot;: {\n        &quot;properties&quot;: {\n            &quot;name&quot;: {\n                &quot;type&quot;: &quot;text&quot;,\n                &quot;index&quot;: true\n            },\n            &quot;sex&quot;: {\n                &quot;type&quot;: &quot;text&quot;,\n                &quot;index&quot;: false\n            },\n            &quot;age&quot;: {\n                &quot;type&quot;: &quot;long&quot;,\n                &quot;index&quot;: false\n            }\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525134430158.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525134430158.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525134430158\" \/><\/div><\/p>\n<p>2.2.4.4 \u9ad8\u7ea7\u67e5\u8be2 <\/p>\n<p>Elasticsearch \u63d0\u4f9b\u4e86\u57fa\u4e8e JSON \u63d0\u4f9b\u5b8c\u6574\u7684\u67e5\u8be2 DSL \u6765\u5b9a\u4e49\u67e5\u8be2 <\/p>\n<p>\u5b9a\u4e49\u6570\u636e :<\/p>\n<pre><code class=\"language-json\"># POST \/student\/_doc\/1001\n{ &quot;name&quot;:&quot;zhangsan&quot;, &quot;nickname&quot;:&quot;zhangsan&quot;, &quot;sex&quot;:&quot;\u7537&quot;, &quot;age&quot;:30 }\n# POST \/student\/_doc\/1002\n{ &quot;name&quot;:&quot;lisi&quot;, &quot;nickname&quot;:&quot;lisi&quot;, &quot;sex&quot;:&quot;\u7537&quot;, &quot;age&quot;:20 }\n# POST \/student\/_doc\/1003\n{ &quot;name&quot;:&quot;wangwu&quot;, &quot;nickname&quot;:&quot;wangwu&quot;, &quot;sex&quot;:&quot;\u5973&quot;, &quot;age&quot;:40 }\n# POST \/student\/_doc\/1004\n{ &quot;name&quot;:&quot;zhangsan1&quot;, &quot;nickname&quot;:&quot;zhangsan1&quot;, &quot;sex&quot;:&quot;\u5973&quot;, &quot;age&quot;:50 }\n# POST \/student\/_doc\/1005\n{ &quot;name&quot;:&quot;zhangsan2&quot;, &quot;nickname&quot;:&quot;zhangsan2&quot;, &quot;sex&quot;:&quot;\u5973&quot;, &quot;age&quot;:30 } <\/code><\/pre>\n<p>1) \u67e5\u8be2\u6240\u6709\u6587\u6863 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a><\/p>\n<pre><code class=\"language-json\">{\n&quot;query&quot;: {\n&quot;match_all&quot;: {}\n}\n}\n# &quot;query&quot;\uff1a\u8fd9\u91cc\u7684 query \u4ee3\u8868\u4e00\u4e2a\u67e5\u8be2\u5bf9\u8c61\uff0c\u91cc\u9762\u53ef\u4ee5\u6709\u4e0d\u540c\u7684\u67e5\u8be2\u5c5e\u6027\n# &quot;match_all&quot;\uff1a\u67e5\u8be2\u7c7b\u578b\uff0c\u4f8b\u5982\uff1amatch_all(\u4ee3\u8868\u67e5\u8be2\u6240\u6709)\uff0c match\uff0cterm \uff0c range \u7b49\u7b49\n# {\u67e5\u8be2\u6761\u4ef6}\uff1a\u67e5\u8be2\u6761\u4ef6\u4f1a\u6839\u636e\u7c7b\u578b\u7684\u4e0d\u540c\uff0c\u5199\u6cd5\u4e5f\u6709\u5dee\u5f02<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525134934979.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525134934979.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525134934979\" \/><\/div><\/p>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-json\">{ \"took\u3010\u67e5\u8be2\u82b1\u8d39\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\u3011\" : 1116,\n \"timed_out\u3010\u662f\u5426\u8d85\u65f6\u3011\" : false,\n \"_shards\u3010\u5206\u7247\u4fe1\u606f\u3011\" :\n {\n     \"total\u3010\u603b\u6570\u3011\" : 1,\n     \"successful\u3010\u6210\u529f\u3011\" : 1,\n     \"skipped\u3010\u5ffd\u7565\u3011\" : 0,\n     \"failed\u3010\u5931\u8d25\u3011\" : 0 },\n \"hits\u3010\u641c\u7d22\u547d\u4e2d\u7ed3\u679c\u3011\" : {\n     \"total\"\u3010\u641c\u7d22\u6761\u4ef6\u5339\u914d\u7684\u6587\u6863\u603b\u6570\u3011:\n     {\n     \"value\"\u3010\u603b\u547d\u4e2d\u8ba1\u6570\u7684\u503c\u3011: 3,\n     \"relation\"\u3010\u8ba1\u6570\u89c4\u5219\u3011: \"eq\" # eq \u8868\u793a\u8ba1\u6570\u51c6\u786e\uff0c gte \u8868\u793a\u8ba1\u6570\u4e0d\u51c6\u786e\n },\n \"max_score\u3010\u5339\u914d\u5ea6\u5206\u503c\u3011\" : 1.0,\n \"hits\u3010\u547d\u4e2d\u7ed3\u679c\u96c6\u5408\u3011\" : [\n     \u3002\u3002\u3002\n     } ] } } <\/code><\/pre>\n<p>_2) \u5339\u914d\u67e5\u8be2 match \u5339\u914d\u7c7b\u578b\u67e5\u8be2\uff0c\u4f1a\u628a\u67e5\u8be2\u6761\u4ef6\u8fdb\u884c\u5206\u8bcd\uff0c\u7136\u540e\u8fdb\u884c\u67e5\u8be2\uff0c\u591a\u4e2a\u8bcd\u6761\u4e4b\u95f4\u662f or \u7684\u5173\u7cfb \u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;match&quot;: {\n            &quot;name&quot;: &quot;zhangsan&quot;\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\u4e3a\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525135550424.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525135550424.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525135550424\" \/><\/div><\/p>\n<p>3) \u5b57\u6bb5\u5339\u914d\u67e5\u8be2 <\/p>\n<p>multi_match \u4e0e match \u7c7b\u4f3c\uff0c\u4e0d\u540c\u7684\u662f\u5b83\u53ef\u4ee5\u5728\u591a\u4e2a\u5b57\u6bb5\u4e2d\u67e5\u8be2\u3002 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a><\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;multi_match&quot;: {\n            &quot;query&quot;: &quot;zhangsan&quot;,\n            &quot;fields&quot;: [\n                &quot;name&quot;,\n                &quot;nickname&quot;\n            ]\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525135706131.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525135706131.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525135706131\" \/><\/div><\/p>\n<p>4) \u5173\u952e\u5b57\u7cbe\u786e\u67e5\u8be2<\/p>\n<p>term \u67e5\u8be2\uff0c\u7cbe\u786e\u7684\u5173\u952e\u8bcd\u5339\u914d\u67e5\u8be2\uff0c\u4e0d\u5bf9\u67e5\u8be2\u6761\u4ef6\u8fdb\u884c\u5206\u8bcd\u3002 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;:{\n        &quot;term&quot;:{\n            &quot;name&quot;:{\n                &quot;value&quot;:&quot;zhangsan&quot;\n            }\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525135826555.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525135826555.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525135826555\" \/><\/div><\/p>\n<p>5) \u591a\u5173\u952e\u5b57\u7cbe\u786e\u67e5\u8be2 <\/p>\n<p>terms \u67e5\u8be2\u548c term \u67e5\u8be2\u4e00\u6837\uff0c\u4f46\u5b83\u5141\u8bb8\u4f60\u6307\u5b9a\u591a\u503c\u8fdb\u884c\u5339\u914d\u3002 <\/p>\n<p>\u5982\u679c\u8fd9\u4e2a\u5b57\u6bb5\u5305\u542b\u4e86\u6307\u5b9a\u503c\u4e2d\u7684\u4efb\u4f55\u4e00\u4e2a\u503c\uff0c\u90a3\u4e48\u8fd9\u4e2a\u6587\u6863\u6ee1\u8db3\u6761\u4ef6\uff0c\u7c7b\u4f3c\u4e8e mysql \u7684 in \u5728 Postman \u4e2d\uff0c<\/p>\n<p>\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;:{\n        &quot;terms&quot;:{\n            &quot;name&quot;:[\n                &quot;zhangsan&quot;,\n                &quot;lisi&quot;\n            ]\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525140159754.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525140159754.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525140159754\" \/><\/div><\/p>\n<p>6) \u6307\u5b9a\u67e5\u8be2\u5b57\u6bb5 <\/p>\n<p>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cElasticsearch \u5728\u641c\u7d22\u7684\u7ed3\u679c\u4e2d\uff0c\u4f1a\u628a\u6587\u6863\u4e2d\u4fdd\u5b58\u5728_source \u7684\u6240\u6709\u5b57\u6bb5\u90fd\u8fd4\u56de\u3002 <\/p>\n<p>_\u5982\u679c\u6211\u4eec\u53ea\u60f3\u83b7\u53d6\u5176\u4e2d\u7684\u90e8\u5206\u5b57\u6bb5\uff0c\u6211\u4eec\u53ef\u4ee5\u6dfb\u52a0_source \u7684\u8fc7\u6ee4 \u5728 Postman \u4e2d\uff0c<\/p>\n<p>\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;_source&quot;: [\n        &quot;name&quot;,\n        &quot;nickname&quot;\n    ],\n    &quot;query&quot;: {\n        &quot;terms&quot;: {\n            &quot;nickname&quot;: [\n                &quot;zhangsan&quot;\n            ]\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525140333125.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525140333125.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525140333125\" \/><\/div><\/p>\n<p>7) \u8fc7\u6ee4\u5b57\u6bb5 <\/p>\n<p>\u6211\u4eec\u4e5f\u53ef\u4ee5\u901a\u8fc7\uff1a <\/p>\n<ul>\n<li>\n<p>includes\uff1a\u6765\u6307\u5b9a\u60f3\u8981\u663e\u793a\u7684\u5b57\u6bb5 <\/p>\n<\/li>\n<li>\n<p>excludes\uff1a\u6765\u6307\u5b9a\u4e0d\u60f3\u8981\u663e\u793a\u7684\u5b57\u6bb5 <\/p>\n<\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;_source&quot;: {\n        &quot;includes&quot;: [\n            &quot;name&quot;,\n            &quot;nickname&quot;\n        ]\n    },\n    &quot;query&quot;: {\n        &quot;terms&quot;: {\n            &quot;nickname&quot;: [\n                &quot;zhangsan&quot;\n            ]\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525140505239.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525140505239.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525140505239\" \/><\/div><\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a><\/p>\n<pre><code class=\"language-json\">{\n    &quot;_source&quot;: {\n        &quot;excludes&quot;: [\n            &quot;name&quot;,\n            &quot;nickname&quot;\n        ]\n    },\n    &quot;query&quot;: {\n        &quot;terms&quot;: {\n            &quot;nickname&quot;: [\n                &quot;zhangsan&quot;\n            ]\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525142359151.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525142359151.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525142359151\" \/><\/div><\/p>\n<p>8) \u7ec4\u5408\u67e5\u8be2 <\/p>\n<p><code>bool<\/code>\u628a\u5404\u79cd\u5176\u5b83\u67e5\u8be2\u901a\u8fc7<code>must<\/code>\uff08\u5fc5\u987b \uff09\u3001<code>must_not<\/code>\uff08\u5fc5\u987b\u4e0d\uff09\u3001<code>should<\/code>\uff08\u5e94\u8be5\uff09\u7684\u65b9 \u5f0f\u8fdb\u884c\u7ec4\u5408 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;bool&quot;: {\n            &quot;must&quot;: [\n                {\n                    &quot;match&quot;: {\n                        &quot;name&quot;: &quot;zhangsan&quot;\n                    }\n                }\n            ],\n            &quot;must_not&quot;: [\n                {\n                    &quot;match&quot;: {\n                        &quot;age&quot;: &quot;40&quot;\n                    }\n                }\n            ],\n            &quot;should&quot;: [\n                {\n                    &quot;match&quot;: {\n                        &quot;sex&quot;: &quot;\u7537&quot;\n                    }\n                }\n            ]\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525142454676.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525142454676.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525142454676\" \/><\/div><\/p>\n<p>9) \u8303\u56f4\u67e5\u8be2<\/p>\n<p>range \u67e5\u8be2\u627e\u51fa\u90a3\u4e9b\u843d\u5728\u6307\u5b9a\u533a\u95f4\u5185\u7684\u6570\u5b57\u6216\u8005\u65f6\u95f4\u3002range \u67e5\u8be2\u5141\u8bb8\u4ee5\u4e0b\u5b57\u7b26<\/p>\n<table>\n<thead>\n<tr>\n<th>\u64cd\u4f5c\u7b26<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>gt<\/td>\n<td>\u5927\u4e8e&gt;<\/td>\n<\/tr>\n<tr>\n<td>gte<\/td>\n<td>\u5927\u4e8e\u7b49\u4e8e&gt;=<\/td>\n<\/tr>\n<tr>\n<td>lt<\/td>\n<td>\u5c0f\u4e8e&lt;<\/td>\n<\/tr>\n<tr>\n<td>lte<\/td>\n<td>\u5c0f\u4e8e\u7b49\u4e8e&lt;=<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u200b        <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;range&quot;: {\n            &quot;age&quot;: {\n                &quot;gte&quot;: 30,\n                &quot;lte&quot;: 35\n            }\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525142928613.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525142928613.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525142928613\" \/><\/div><\/p>\n<p>10) \u6a21\u7cca\u67e5\u8be2 <\/p>\n<p>\u8fd4\u56de\u5305\u542b\u4e0e\u641c\u7d22\u5b57\u8bcd\u76f8\u4f3c\u7684\u5b57\u8bcd\u7684\u6587\u6863\u3002 <\/p>\n<p>\u7f16\u8f91\u8ddd\u79bb\u662f\u5c06\u4e00\u4e2a\u672f\u8bed\u8f6c\u6362\u4e3a\u53e6\u4e00\u4e2a\u672f\u8bed\u6240\u9700\u7684\u4e00\u4e2a\u5b57\u7b26\u66f4\u6539\u7684\u6b21\u6570\u3002\u8fd9\u4e9b\u66f4\u6539\u53ef\u4ee5\u5305\u62ec\uff1a <\/p>\n<ul>\n<li>\n<p>\u66f4\u6539\u5b57\u7b26\uff08box \u2192 fox\uff09 <\/p>\n<\/li>\n<li>\n<p>\u5220\u9664\u5b57\u7b26\uff08black \u2192 lack\uff09<\/p>\n<\/li>\n<li>\n<p>\u63d2\u5165\u5b57\u7b26\uff08sic \u2192 sick\uff09 <\/p>\n<\/li>\n<li>\n<p>\u8f6c\u7f6e\u4e24\u4e2a\u76f8\u90bb\u5b57\u7b26\uff08act \u2192 cat\uff09 <\/p>\n<\/li>\n<\/ul>\n<p>\u4e3a\u4e86\u627e\u5230\u76f8\u4f3c\u7684\u672f\u8bed\uff0cfuzzy \u67e5\u8be2\u4f1a\u5728\u6307\u5b9a\u7684\u7f16\u8f91\u8ddd\u79bb\u5185\u521b\u5efa\u4e00\u7ec4\u641c\u7d22\u8bcd\u7684\u6240\u6709\u53ef\u80fd\u7684\u53d8\u4f53 \u6216\u6269\u5c55\u3002\u7136\u540e\u67e5\u8be2\u8fd4\u56de\u6bcf\u4e2a\u6269\u5c55\u7684\u5b8c\u5168\u5339\u914d\u3002 <\/p>\n<p>\u901a\u8fc7 fuzziness \u4fee\u6539\u7f16\u8f91\u8ddd\u79bb\u3002\u4e00\u822c\u4f7f\u7528\u9ed8\u8ba4\u503c AUTO\uff0c\u6839\u636e\u672f\u8bed\u7684\u957f\u5ea6\u751f\u6210\u7f16\u8f91\u8ddd\u79bb\u3002 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;fuzzy&quot;: {\n            &quot;title&quot;: {\n                &quot;value&quot;: &quot;zhangsan&quot;\n            }\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143133887.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143133887.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525143133887\" \/><\/div><\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;fuzzy&quot;: {\n            &quot;title&quot;: {\n                &quot;value&quot;: &quot;zhangsan&quot;,\n                &quot;fuzziness&quot;: 2\n            }\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143227478.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143227478.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525143227478\" \/><\/div><\/p>\n<p>11) \u5355\u5b57\u6bb5\u6392\u5e8f<\/p>\n<p>sort \u53ef\u4ee5\u8ba9\u6211\u4eec\u6309\u7167\u4e0d\u540c\u7684\u5b57\u6bb5\u8fdb\u884c\u6392\u5e8f\uff0c\u5e76\u4e14\u901a\u8fc7 order \u6307\u5b9a\u6392\u5e8f\u7684\u65b9\u5f0f\u3002desc \u964d\u5e8f\uff0casc \u5347\u5e8f\u3002 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;match&quot;: {\n            &quot;name&quot;: &quot;zhangsan&quot;\n        }\n    },\n    &quot;sort&quot;: [\n        {\n            &quot;age&quot;: {\n                &quot;order&quot;: &quot;desc&quot;\n            }\n        }\n    ]\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143324350.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143324350.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525143324350\" \/><\/div><\/p>\n<p>12) \u591a\u5b57\u6bb5\u6392\u5e8f<\/p>\n<p>\u5047\u5b9a\u6211\u4eec\u60f3\u8981\u7ed3\u5408\u4f7f\u7528 age \u548c _score \u8fdb\u884c\u67e5\u8be2\uff0c\u5e76\u4e14\u5339\u914d\u7684\u7ed3\u679c\u9996\u5148\u6309\u7167\u5e74\u9f84\u6392\u5e8f\uff0c\u7136\u540e \u6309\u7167\u76f8\u5173\u6027\u5f97\u5206\u6392\u5e8f <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;match_all&quot;: {}\n    },\n    &quot;sort&quot;: [\n        {\n            &quot;age&quot;: {\n                &quot;order&quot;: &quot;desc&quot;\n            }\n        },\n        {\n            &quot;_score&quot;: {\n                &quot;order&quot;: &quot;desc&quot;\n            }\n        }\n    ]\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143548661.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143548661.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525143548661\" \/><\/div><\/p>\n<p>13) \u9ad8\u4eae\u67e5\u8be2 <\/p>\n<p>\u5728\u8fdb\u884c\u5173\u952e\u5b57\u641c\u7d22\u65f6\uff0c\u641c\u7d22\u51fa\u7684\u5185\u5bb9\u4e2d\u7684\u5173\u952e\u5b57\u4f1a\u663e\u793a\u4e0d\u540c\u7684\u989c\u8272\uff0c\u79f0\u4e4b\u4e3a\u9ad8\u4eae\u3002 <\/p>\n<p>\u5728\u767e\u5ea6\u641c\u7d22&quot;\u4eac\u4e1c&quot; <\/p>\n<p>Elasticsearch \u53ef\u4ee5\u5bf9\u67e5\u8be2\u5185\u5bb9\u4e2d\u7684\u5173\u952e\u5b57\u90e8\u5206\uff0c\u8fdb\u884c\u6807\u7b7e\u548c\u6837\u5f0f(\u9ad8\u4eae)\u7684\u8bbe\u7f6e\u3002 \u5728\u4f7f\u7528 match \u67e5\u8be2\u7684\u540c\u65f6\uff0c\u52a0\u4e0a\u4e00\u4e2a highlight \u5c5e\u6027\uff1a <\/p>\n<ul>\n<li>\n<p>pre_tags\uff1a\u524d\u7f6e\u6807\u7b7e <\/p>\n<\/li>\n<li>\n<p>post_tags\uff1a\u540e\u7f6e\u6807\u7b7e <\/p>\n<\/li>\n<li>\n<p>fields\uff1a\u9700\u8981\u9ad8\u4eae\u7684\u5b57\u6bb5 <\/p>\n<\/li>\n<li>\n<p>title\uff1a\u8fd9\u91cc\u58f0\u660e title \u5b57\u6bb5\u9700\u8981\u9ad8\u4eae\uff0c\u540e\u9762\u53ef\u4ee5\u4e3a\u8fd9\u4e2a\u5b57\u6bb5\u8bbe\u7f6e\u7279\u6709\u914d\u7f6e\uff0c\u4e5f\u53ef\u4ee5\u7a7a \u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;match&quot;: {\n            &quot;name&quot;: &quot;zhangsan&quot;\n        }\n    },\n    &quot;highlight&quot;: {\n        &quot;pre_tags&quot;: &quot;&quot;,\n        &quot;post_tags&quot;: &quot;&quot;,\n        &quot;fields&quot;: {\n            &quot;name&quot;: {}\n        }\n    }\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143832059.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143832059.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525143832059\" \/><\/div><\/p>\n<p>14) \u5206\u9875\u67e5\u8be2 <\/p>\n<p>from\uff1a\u5f53\u524d\u9875\u7684\u8d77\u59cb\u7d22\u5f15\uff0c\u9ed8\u8ba4\u4ece 0 \u5f00\u59cb\u3002 from = (pageNum - 1) * size <\/p>\n<p>size\uff1a\u6bcf\u9875\u663e\u793a\u591a\u5c11\u6761 <\/p>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;query&quot;: {\n        &quot;match_all&quot;: {}\n    },\n    &quot;sort&quot;: [\n        {\n            &quot;age&quot;: {\n                &quot;order&quot;: &quot;desc&quot;\n            }\n        }\n    ],\n    &quot;from&quot;: 0,\n    &quot;size&quot;: 2\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143939386.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525143939386.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525143939386\" \/><\/div> <\/p>\n<p>15) \u805a\u5408\u67e5\u8be2 <\/p>\n<p>\u805a\u5408\u5141\u8bb8\u4f7f\u7528\u8005\u5bf9 es \u6587\u6863\u8fdb\u884c\u7edf\u8ba1\u5206\u6790\uff0c\u7c7b\u4f3c\u4e0e\u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\u7684 group by\uff0c\u5f53\u7136\u8fd8\u6709\u5f88 \u591a\u5176\u4ed6\u7684\u805a\u5408\uff0c\u4f8b\u5982\u53d6\u6700\u5927\u503c\u3001\u5e73\u5747\u503c\u7b49\u7b49\u3002 <\/p>\n<ul>\n<li>\u5bf9\u67d0\u4e2a\u5b57\u6bb5\u53d6\u6700\u5927\u503c max <\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;aggs&quot;: {\n        &quot;max_age&quot;: {\n            &quot;max&quot;: {\n                &quot;field&quot;: &quot;age&quot;\n            }\n        }\n    },\n    &quot;size&quot;: 0\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144435275.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144435275.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525144435275\" \/><\/div><\/p>\n<ul>\n<li>\u5bf9\u67d0\u4e2a\u5b57\u6bb5\u53d6\u6700\u5c0f\u503c min <\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;aggs&quot;: {\n        &quot;min_age&quot;: {\n            &quot;min&quot;: {\n                &quot;field&quot;: &quot;age&quot;\n            }\n        }\n    },\n    &quot;size&quot;: 0\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144541918.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144541918.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525144541918\" \/><\/div><\/p>\n<ul>\n<li>\u5bf9\u67d0\u4e2a\u5b57\u6bb5\u6c42\u548c sum <\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;aggs&quot;: {\n        &quot;sum_age&quot;: {\n            &quot;sum&quot;: {\n                &quot;field&quot;: &quot;age&quot;\n            }\n        }\n    },\n    &quot;size&quot;: 0\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144630683.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144630683.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525144630683\" \/><\/div><\/p>\n<ul>\n<li>\u5bf9\u67d0\u4e2a\u5b57\u6bb5\u53d6\u5e73\u5747\u503c avg <\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;aggs&quot;: {\n        &quot;avg_age&quot;: {\n            &quot;avg&quot;: {\n                &quot;field&quot;: &quot;age&quot;\n            }\n        }\n    },\n    &quot;size&quot;: 0\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144720134.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144720134.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525144720134\" \/><\/div><\/p>\n<ul>\n<li>\u5bf9\u67d0\u4e2a\u5b57\u6bb5\u7684\u503c\u8fdb\u884c\u53bb\u91cd\u4e4b\u540e\u518d\u53d6\u603b\u6570 <\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;aggs&quot;: {\n        &quot;distinct_age&quot;: {\n            &quot;cardinality&quot;: {\n                &quot;field&quot;: &quot;age&quot;\n            }\n        }\n    },\n    &quot;size&quot;: 0\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144807184.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144807184.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525144807184\" \/><\/div><\/p>\n<ul>\n<li>\n<p>State \u805a\u5408<\/p>\n<p>stats \u805a\u5408\uff0c\u5bf9\u67d0\u4e2a\u5b57\u6bb5\u4e00\u6b21\u6027\u8fd4\u56de count\uff0cmax\uff0cmin\uff0cavg \u548c sum \u4e94\u4e2a\u6307\u6807 <\/p>\n<\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;aggs&quot;: {\n        &quot;stats_age&quot;: {\n            &quot;stats&quot;: {\n                &quot;field&quot;: &quot;age&quot;\n            }\n        }\n    },\n    &quot;size&quot;: 0\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144904312.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525144904312.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525144904312\" \/><\/div><\/p>\n<p>16) \u6876\u805a\u5408\u67e5\u8be2 \u6876\u805a\u548c\u76f8\u5f53\u4e8e sql \u4e2d\u7684 group by \u8bed\u53e5 <\/p>\n<ul>\n<li>terms \u805a\u5408\uff0c\u5206\u7ec4\u7edf\u8ba1 <\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;aggs&quot;: {\n        &quot;age_groupby&quot;: {\n            &quot;terms&quot;: {\n                &quot;field&quot;: &quot;age&quot;\n            }\n        }\n    },\n    &quot;size&quot;: 0\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525145000480.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525145000480.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525145000480\" \/><\/div><\/p>\n<ul>\n<li>\u5728 terms \u5206\u7ec4\u4e0b\u518d\u8fdb\u884c\u805a\u5408 <\/li>\n<\/ul>\n<p>\u5728 Postman \u4e2d\uff0c\u5411 ES \u670d\u52a1\u5668\u53d1 GET \u8bf7\u6c42 \uff1a<a href=\"http:\/\/127.0.0.1:9200\/student\/_search\">http:\/\/127.0.0.1:9200\/student\/_search<\/a> <\/p>\n<pre><code class=\"language-json\">{\n    &quot;aggs&quot;: {\n        &quot;age_groupby&quot;: {\n            &quot;terms&quot;: {\n                &quot;field&quot;: &quot;age&quot;\n            }\n        }\n    },\n    &quot;size&quot;: 0\n}<\/code><\/pre>\n<p>\u670d\u52a1\u5668\u54cd\u5e94\u7ed3\u679c\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525145055185.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525145055185.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525145055185\" \/><\/div><\/p>\n<p>2.2.5 Java API \u64cd\u4f5c <\/p>\n<p>Elasticsearch \u8f6f\u4ef6\u662f\u7531 Java \u8bed\u8a00\u5f00\u53d1\u7684\uff0c\u6240\u4ee5\u4e5f\u53ef\u4ee5\u901a\u8fc7 Java API \u7684\u65b9\u5f0f\u5bf9 Elasticsearch \u670d\u52a1\u8fdb\u884c\u8bbf\u95ee <\/p>\n<p>2.2.5.1 \u521b\u5efa Maven \u9879\u76ee <\/p>\n<p>\u6211\u4eec\u5728 IDEA \u5f00\u53d1\u5de5\u5177\u4e2d\u521b\u5efa Maven \u9879\u76ee(\u6a21\u5757\u4e5f\u53ef)ES <\/p>\n<p>\u4fee\u6539 pom \u6587\u4ef6\uff0c\u589e\u52a0 Maven \u4f9d\u8d56\u5173\u7cfb<\/p>\n<pre><code class=\"language-xml\">&lt;dependencies&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.elasticsearch&lt;\/groupId&gt;\n        &lt;artifactId&gt;elasticsearch&lt;\/artifactId&gt;\n        &lt;version&gt;7.8.0&lt;\/version&gt;\n    &lt;\/dependency&gt;\n    &lt;!--elasticsearch\u7684\u5ba2\u6237\u7aef\n--&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.elasticsearch.client&lt;\/groupId&gt;\n        &lt;artifactId&gt;elasticsearch-rest-high-level-client&lt;\/artifactId&gt;\n        &lt;version&gt;7.8.0&lt;\/version&gt;\n    &lt;\/dependency&gt;\n    &lt;!--e1 asticsearch\u4f9d\u8d562.x\u76841og4j--&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.apache.logging.log4j&lt;\/groupId&gt;\n        &lt;artifactId&gt;log4j-api&lt;\/artifactId&gt;\n        &lt;version&gt;2.8.2&lt;\/version&gt;\n    &lt;\/dependency&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.apache.logging.log4j&lt;\/groupId&gt;\n        &lt;artifactId&gt;log4j-core&lt;\/artifactId&gt;\n        &lt;version&gt;2.8.2&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;version&gt;2.9.9&lt;\/version&gt;\n    &lt;\/dependency&gt;\n    &lt;!--junit\u5355\u5143\u6d4b\u8bd5\n--&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;junit&lt;\/groupId&gt;\n        &lt;artifactId&gt;junit&lt;\/artifactId&gt;\n        &lt;version&gt;4.12&lt;\/version&gt;\n    &lt;\/dependency&gt;\n&lt;\/dependencies&gt;<\/code><\/pre>\n<p>2.2.5.2 \u5ba2\u6237\u7aef\u5bf9\u8c61 <\/p>\n<p>\u521b\u5efa com.atguigu.es.test.Elasticsearch01_Client \u7c7b\uff0c\u4ee3\u7801\u4e2d\u521b\u5efa Elasticsearch \u5ba2\u6237\u7aef\u5bf9\u8c61 \u56e0\u4e3a\u65e9\u671f\u7248\u672c\u7684\u5ba2\u6237\u7aef\u5bf9\u8c61\u5df2\u7ecf\u4e0d\u518d\u63a8\u8350\u4f7f\u7528\uff0c\u4e14\u5728\u672a\u6765\u7248\u672c\u4e2d\u4f1a\u88ab\u5220\u9664\uff0c\u6240\u4ee5\u8fd9\u91cc\u6211\u4eec\u91c7 \u7528\u9ad8\u7ea7 REST \u5ba2\u6237\u7aef\u5bf9\u8c61 <\/p>\n<pre><code class=\"language-java\">\/\/ \u521b\u5efa\u5ba2\u6237\u7aef\u5bf9\u8c61\nRestHighLevelClient client = new RestHighLevelClient(\n    RestClient.builder(new HttpHost(&quot;localhost&quot;, 9200, &quot;http&quot;))\n);\n...\n\/\/ \u5173\u95ed\u5ba2\u6237\u7aef\u8fde\u63a5 client.close();<\/code><\/pre>\n<p><strong>\u6ce8\u610f<\/strong>\uff1a9200 \u7aef\u53e3\u4e3a Elasticsearch \u7684 Web \u901a\u4fe1\u7aef\u53e3\uff0clocalhost \u4e3a\u542f\u52a8 ES \u670d\u52a1\u7684\u4e3b\u673a\u540d \u6267\u884c\u4ee3\u7801\uff0c\u67e5\u770b\u63a7\u5236\u53f0\u4fe1\u606f\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525145550638.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525145550638.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525145550638\" \/><\/div><\/p>\n<p>2.2.5.3 \u7d22\u5f15\u64cd\u4f5c<\/p>\n<p>ES \u670d\u52a1\u5668\u6b63\u5e38\u542f\u52a8\u540e\uff0c\u53ef\u4ee5\u901a\u8fc7 Java API \u5ba2\u6237\u7aef\u5bf9\u8c61\u5bf9 ES \u7d22\u5f15\u8fdb\u884c\u64cd\u4f5c <\/p>\n<p>1) \u521b\u5efa\u7d22\u5f15 <\/p>\n<pre><code class=\"language-java\">\/\/ \u521b\u5efa\u7d22\u5f15 - \u8bf7\u6c42\u5bf9\u8c61\nCreateIndexRequest request = new CreateIndexRequest(&quot;user&quot;);\n\/\/ \u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\nCreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT); boolean acknowledged = response.isAcknowledged();\n\/\/ \u54cd\u5e94\u72b6\u6001\nSystem.out.println(&quot;\u64cd\u4f5c\u72b6\u6001 = &quot; + acknowledged); <\/code><\/pre>\n<p>\u64cd\u4f5c\u7ed3\u679c: <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525145718704.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525145718704.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525145718704\" \/><\/div><\/p>\n<p>2) \u67e5\u770b\u7d22\u5f15 <\/p>\n<pre><code class=\"language-java\">\/\/ \u67e5\u8be2\u7d22\u5f15 - \u8bf7\u6c42\u5bf9\u8c61\nGetIndexRequest request = new GetIndexRequest(&quot;user&quot;);\n\/\/ \u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\nGetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT); System.out.println(&quot;aliases:&quot;+response.getAliases()); System.out.println(&quot;mappings:&quot;+response.getMappings()); System.out.println(&quot;settings:&quot;+response.getSettings()); <\/code><\/pre>\n<p>\u64cd\u4f5c\u7ed3\u679c: <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525150330189.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525150330189.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525150330189\" \/><\/div><\/p>\n<p>3) \u5220\u9664\u7d22\u5f15 <\/p>\n<pre><code class=\"language-java\">\/\/ \u5220\u9664\u7d22\u5f15 - \u8bf7\u6c42\u5bf9\u8c61\nDeleteIndexRequest request = new DeleteIndexRequest(&quot;user&quot;);\n\/\/ \u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\nAcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT); \/\/ \u64cd\u4f5c\u7ed3\u679c\nSystem.out.println(&quot;\u64cd\u4f5c\u7ed3\u679c \uff1a &quot; + response.isAcknowledged()); <\/code><\/pre>\n<p>\u64cd\u4f5c\u7ed3\u679c: <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525150422778.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525150422778.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525150422778\" \/><\/div><\/p>\n<p>2.2.5.4 \u6587\u6863\u64cd\u4f5c <\/p>\n<p>1) \u65b0\u589e\u6587\u6863 <\/p>\n<p>\u521b\u5efa\u6570\u636e\u6a21\u578b <\/p>\n<pre><code class=\"language-java\">class User {\n    private String name;\n    private Integer age;\n    private String sex;\n\n    public String getName() {\n        return name;\n    }\n    public void setName(String name) this.name = name;\n}\npublic Integer getAge() {\n    return age;\n}\npublic void setAge(Integer age) {\n    this.age = age;\n}\npublic String getSex() {\n    return sex;\n}\npublic void setSex(String sex) {\n    this.sex = sex;\n}\n}<\/code><\/pre>\n<p>\u521b\u5efa\u6570\u636e\uff0c\u6dfb\u52a0\u5230\u6587\u6863\u4e2d<\/p>\n<pre><code class=\"language-java\">\/\/ \u65b0\u589e\u6587\u6863 - \u8bf7\u6c42\u5bf9\u8c61\nIndexRequest request = new IndexRequest();\n\/\/ \u8bbe\u7f6e\u7d22\u5f15\u53ca\u552f\u4e00\u6027\u6807\u8bc6\nrequest.index(&quot;user&quot;).id(&quot;1001&quot;);\n\/\/ \u521b\u5efa\u6570\u636e\u5bf9\u8c61\nUser user = new User();\nuser.setName(&quot;zhangsan&quot;);\nuser.setAge(30);\nuser.setSex(&quot;\u7537&quot;);\nObjectMapper objectMapper = new ObjectMapper();\nString productJson = objectMapper.writeValueAsString(user);\n\/\/ \u6dfb\u52a0\u6587\u6863\u6570\u636e\uff0c\u6570\u636e\u683c\u5f0f\u4e3a JSON \u683c\u5f0f\nrequest.source(productJson,XContentType.JSON);\n\/\/ \u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nIndexResponse response = client.index(request, RequestOptions.DEFAULT);\n\/\/\/\/3.\u6253\u5370\u7ed3\u679c\u4fe1\u606f\nSystem.out.println(&quot;_index:&quot; + response.getIndex());\nSystem.out.println(&quot;_id:&quot; + response.getId());\nSystem.out.println(&quot;_result:&quot; + response.getResult());<\/code><\/pre>\n<p>\u64cd\u4f5c\u7ed3\u679c:<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525150901379.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525150901379.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525150901379\" \/><\/div><\/p>\n<p>2) \u4fee\u6539\u6587\u6863 <\/p>\n<pre><code class=\"language-java\">\/\/ \u4fee\u6539\u6587\u6863 - \u8bf7\u6c42\u5bf9\u8c61\nUpdateRequest request = new UpdateRequest();\n\/\/ \u914d\u7f6e\u4fee\u6539\u53c2\u6570\nrequest.index(&quot;user&quot;).id(&quot;1001&quot;);\n\/\/ \u8bbe\u7f6e\u8bf7\u6c42\u4f53\uff0c\u5bf9\u6570\u636e\u8fdb\u884c\u4fee\u6539\nrequest.doc(XContentType.JSON, &quot;sex&quot;, &quot;\u5973&quot;);\n\/\/ \u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nUpdateResponse response = client.update(request, RequestOptions.DEFAULT);\nSystem.out.println(&quot;_index:&quot; + response.getIndex());\nSystem.out.println(&quot;_id:&quot; + response.getId());\nSystem.out.println(&quot;_result:&quot; + response.getResult());<\/code><\/pre>\n<p>\u6267\u884c\u7ed3\u679c\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151016824.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151016824.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525151016824\" \/><\/div><\/p>\n<p>3) \u67e5\u8be2\u6587\u6863<\/p>\n<pre><code class=\"language-java\">\/\/1.\u521b\u5efa\u8bf7\u6c42\u5bf9\u8c61\nGetRequest request = new GetRequest().index(&quot;user&quot;).id(&quot;1001&quot;);\n\/\/2.\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nGetResponse response = client.get(request, RequestOptions.DEFAULT);\n\/\/\/\/3.\u6253\u5370\u7ed3\u679c\u4fe1\u606f\nSystem.out.println(&quot;_index:&quot; + response.getIndex());\nSystem.out.println(&quot;_type:&quot; + response.getType());\nSystem.out.println(&quot;_id:&quot; + response.getId());\nSystem.out.println(&quot;source:&quot; + response.getSourceAsString()); <\/code><\/pre>\n<p>\u6267\u884c\u7ed3\u679c\u4e3a\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151152939.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151152939.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525151152939\" \/><\/div><\/p>\n<p>4) \u5220\u9664\u6587\u6863 <\/p>\n<pre><code class=\"language-java\">\/\/\u521b\u5efa\u8bf7\u6c42\u5bf9\u8c61\nDeleteRequest request = new DeleteRequest().index(&quot;user&quot;).id(&quot;1&quot;);\n\/\/\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nDeleteResponse response = client.delete(request, RequestOptions.DEFAULT);\n\/\/\u6253\u5370\u4fe1\u606f\nSystem.out.println(response.toString()); <\/code><\/pre>\n<p>\u6267\u884c\u7ed3\u679c\u4e3a\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151237333.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151237333.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525151237333\" \/><\/div><\/p>\n<p>5) \u6279\u91cf\u64cd\u4f5c <\/p>\n<ul>\n<li>\u6279\u91cf\u65b0\u589e\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/\u521b\u5efa\u6279\u91cf\u65b0\u589e\u8bf7\u6c42\u5bf9\u8c61\nBulkRequest request = new BulkRequest();\nrequest.add(new IndexRequest().index(&quot;user&quot;).id(&quot;1001&quot;).source(XContentType.JSON, &quot;name&quot;, &quot;zhangsan&quot;));\nrequest.add(new IndexRequest().index(&quot;user&quot;).id(&quot;1002&quot;).source(XContentType.JSON, &quot;name&quot;, &quot;lisi&quot;));\nrequest.add(new IndexRequest().index(&quot;user&quot;).id(&quot;1003&quot;).source(XContentType.JSON, &quot;name&quot;, &quot;wangwu&quot;));\n\/\/\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nBulkResponse responses = client.bulk(request, RequestOptions.DEFAULT);\n\/\/\u6253\u5370\u7ed3\u679c\u4fe1\u606f\nSystem.out.println(&quot;took:&quot; + responses.getTook());\nSystem.out.println(&quot;items:&quot; + responses.getItems()); <\/code><\/pre>\n<p>\u6267\u884c\u7ed3\u679c\u4e3a\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151333544.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151333544.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525151333544\" \/><\/div><\/p>\n<ul>\n<li>\u6279\u91cf\u5220\u9664\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-java\"> \/\/\u521b\u5efa\u6279\u91cf\u5220\u9664\u8bf7\u6c42\u5bf9\u8c61\nBulkRequest request = new BulkRequest();\nrequest.add(new DeleteRequest().index(&quot;user&quot;).id(&quot;1001&quot;));\nrequest.add(new DeleteRequest().index(&quot;user&quot;).id(&quot;1002&quot;));\nrequest.add(new DeleteRequest().index(&quot;user&quot;).id(&quot;1003&quot;));\n\/\/\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nBulkResponse responses = client.bulk(request, RequestOptions.DEFAULT);\n\/\/\u6253\u5370\u7ed3\u679c\u4fe1\u606f\nSystem.out.println(&quot;took:&quot; + responses.getTook());\nSystem.out.println(&quot;items:&quot; + responses.getItems()); <\/code><\/pre>\n<p>\u6267\u884c\u7ed3\u679c\u4e3a\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151602254.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151602254.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525151602254\" \/><\/div><\/p>\n<p>2.2.5.5 \u9ad8\u7ea7\u67e5\u8be2 <\/p>\n<p>1) \u8bf7\u6c42\u4f53\u67e5\u8be2 <\/p>\n<ul>\n<li>\u67e5\u8be2\u6240\u6709\u7d22\u5f15\u6570\u636e <\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u521b\u5efa\u641c\u7d22\u8bf7\u6c42\u5bf9\u8c61\nSearchRequest request = new SearchRequest(); request.indices(&quot;student&quot;);\n\/\/ \u6784\u5efa\u67e5\u8be2\u7684\u8bf7\u6c42\u4f53\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder();\n\/\/ \u67e5\u8be2\u6240\u6709\u6570\u636e\nsourceBuilder.query(QueryBuilders.matchAllQuery());\nrequest.source(sourceBuilder);\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\/\/ \u67e5\u8be2\u5339\u914d\nSearchHits hits = response.getHits();\nSystem.out.println(&quot;took:&quot; + response.getTook());\nSystem.out.println(&quot;timeout:&quot; + response.isTimedOut());\nSystem.out.println(&quot;total:&quot; + hits.getTotalHits());\nSystem.out.println(&quot;MaxScore:&quot; + hits.getMaxScore()); System.out.println(&quot;hits========&gt;&gt;&quot;);\nfor (SearchHit hit : hits) {\n    \/\/\u8f93\u51fa\u6bcf\u6761\u67e5\u8be2\u7684\u7ed3\u679c\u4fe1\u606f\n    System.out.println(hit.getSourceAsString());\n}\nSystem.out.println(&quot;&lt;&lt;========&quot;); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151826788.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525151826788.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525151826788\" \/><\/div><\/p>\n<ul>\n<li>term \u67e5\u8be2\uff0c\u67e5\u8be2\u6761\u4ef6\u4e3a\u5173\u952e\u5b57 <\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u521b\u5efa\u641c\u7d22\u8bf7\u6c42\u5bf9\u8c61\nSearchRequest request = new SearchRequest();\nrequest.indices(&quot;student&quot;);\n\n\/\/ \u6784\u5efa\u67e5\u8be2\u7684\u8bf7\u6c42\u4f53\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.termQuery(&quot;age&quot;, &quot;30&quot;));\nrequest.source(sourceBuilder);\n\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\n\/\/ \u67e5\u8be2\u5339\u914d\nSearchHits hits = response.getHits();\nSystem.out.println(&quot;took:&quot; + response.getTook());\nSystem.out.println(&quot;timeout:&quot; + response.isTimedOut());\nSystem.out.println(&quot;total:&quot; + hits.getTotalHits());\nSystem.out.println(&quot;MaxScore:&quot; + hits.getMaxScore()); System.out.println(&quot;hits========&gt;&gt;&quot;);\nfor (SearchHit hit : hits) {\n    \/\/\u8f93\u51fa\u6bcf\u6761\u67e5\u8be2\u7684\u7ed3\u679c\u4fe1\u606f System.out.println(hit.getSourceAsString());\n}\nSystem.out.println(&quot;&lt;&lt;========&quot;); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152143125.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152143125.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525152143125\" \/><\/div><\/p>\n<ul>\n<li>\u5206\u9875\u67e5\u8be2<\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u521b\u5efa\u641c\u7d22\u8bf7\u6c42\u5bf9\u8c61\nSearchRequest request = new SearchRequest(); request.indices(&quot;student&quot;);\n\/\/ \u6784\u5efa\u67e5\u8be2\u7684\u8bf7\u6c42\u4f53\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchAllQuery());\n\/\/ \u5206\u9875\u67e5\u8be2\n\/\/ \u5f53\u524d\u9875\u5176\u5b9e\u7d22\u5f15(\u7b2c\u4e00\u6761\u6570\u636e\u7684\u987a\u5e8f\u53f7)\uff0c\nfrom sourceBuilder.from(0);\n\/\/ \u6bcf\u9875\u663e\u793a\u591a\u5c11\u6761\nsize sourceBuilder.size(2);\nrequest.source(sourceBuilder);\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\/\/ \u67e5\u8be2\u5339\u914d\nSearchHits hits = response.getHits();\nSystem.out.println(&quot;took:&quot; + response.getTook());\nSystem.out.println(&quot;timeout:&quot; + response.isTimedOut());\nSystem.out.println(&quot;total:&quot; + hits.getTotalHits());\nSystem.out.println(&quot;MaxScore:&quot; + hits.getMaxScore()); System.out.println(&quot;hits========&gt;&gt;&quot;);\nfor (SearchHit hit : hits) {\n    \/\/\u8f93\u51fa\u6bcf\u6761\u67e5\u8be2\u7684\u7ed3\u679c\u4fe1\u606f\n    System.out.println(hit.getSourceAsString());\n}\nSystem.out.println(&quot;&lt;&lt;========&quot;);<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152404954.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152404954.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525152404954\" \/><\/div><\/p>\n<ul>\n<li>\u6570\u636e\u6392\u5e8f <\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u6784\u5efa\u67e5\u8be2\u7684\u8bf7\u6c42\u4f53\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchAllQuery());\n\/\/ \u6392\u5e8f\nsourceBuilder.sort(&quot;age&quot;, SortOrder.ASC);\nrequest.source(sourceBuilder);\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\/\/ \u67e5\u8be2\u5339\u914d\nSearchHits hits = response.getHits();\n\nSystem.out.println(&quot;took:&quot; + response.getTook());\nSystem.out.println(&quot;timeout:&quot; + response.isTimedOut());\nSystem.out.println(&quot;total:&quot; + hits.getTotalHits());\nSystem.out.println(&quot;MaxScore:&quot; + hits.getMaxScore()); System.out.println(&quot;hits========&gt;&gt;&quot;);\nfor (SearchHit hit : hits) {\n    \/\/\u8f93\u51fa\u6bcf\u6761\u67e5\u8be2\u7684\u7ed3\u679c\u4fe1\u606f\n    System.out.println(hit.getSourceAsString());\n} System.out.println(&quot;&lt;&lt;========&quot;); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152458745.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152458745.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525152458745\" \/><\/div><\/p>\n<ul>\n<li>\u8fc7\u6ee4\u5b57\u6bb5 <\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u521b\u5efa\u641c\u7d22\u8bf7\u6c42\u5bf9\u8c61\nSearchRequest request = new SearchRequest();\nrequest.indices(&quot;student&quot;);\n\n\/\/ \u6784\u5efa\u67e5\u8be2\u7684\u8bf7\u6c42\u4f53\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchAllQuery());\n\n\/\/\u67e5\u8be2\u5b57\u6bb5\u8fc7\u6ee4\n\nString[] excludes = {}; String[] includes = {&quot;name&quot;, &quot;age&quot;}; sourceBuilder.fetchSource(includes, excludes);\nrequest.source(sourceBuilder);\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\n\/\/ \u67e5\u8be2\u5339\u914d\nSearchHits hits = response.getHits();\nSystem.out.println(&quot;took:&quot; + response.getTook());\nSystem.out.println(&quot;timeout:&quot; + response.isTimedOut());\nSystem.out.println(&quot;total:&quot; + hits.getTotalHits());\nSystem.out.println(&quot;MaxScore:&quot; + hits.getMaxScore()); System.out.println(&quot;hits========&gt;&gt;&quot;);\n\nfor (SearchHit hit : hits) {\n    \/\/\u8f93\u51fa\u6bcf\u6761\u67e5\u8be2\u7684\u7ed3\u679c\u4fe1\u606f\n    System.out.println(hit.getSourceAsString());\n}\n\nSystem.out.println(&quot;&lt;&lt;========&quot;); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152629894.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152629894.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525152629894\" \/><\/div><\/p>\n<ul>\n<li>Bool \u67e5\u8be2<\/li>\n<\/ul>\n<pre><code class=\"language-java\"> \/\/ \u521b\u5efa\u641c\u7d22\u8bf7\u6c42\u5bf9\u8c61\nSearchRequest request = new SearchRequest();\n\nrequest.indices(&quot;student&quot;);\n\n\/\/ \u6784\u5efa\u67e5\u8be2\u7684\u8bf7\u6c42\u4f53\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder();\nBoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();\n\n\/\/ \u5fc5\u987b\u5305\u542b\nboolQueryBuilder.must(QueryBuilders.matchQuery(&quot;age&quot;, &quot;30&quot;));\n\n\/\/ \u4e00\u5b9a\u4e0d\u542b\nboolQueryBuilder.mustNot(QueryBuilders.matchQuery(&quot;name&quot;, &quot;zhangsan&quot;));\n\n\/\/ \u53ef\u80fd\u5305\u542b\nboolQueryBuilder.should(QueryBuilders.matchQuery(&quot;sex&quot;, &quot;\u7537&quot;)); sourceBuilder.query(boolQueryBuilder);\nrequest.source(sourceBuilder);\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\n\/\/ \u67e5\u8be2\u5339\u914d\nSearchHits hits = response.getHits();\nSystem.out.println(&quot;took:&quot; + response.getTook());\nSystem.out.println(&quot;timeout:&quot; + response.isTimedOut());\nSystem.out.println(&quot;total:&quot; + hits.getTotalHits());\nSystem.out.println(&quot;MaxScore:&quot; + hits.getMaxScore()); System.out.println(&quot;hits========&gt;&gt;&quot;);\n\nfor (SearchHit hit : hits) {\n    \/\/\u8f93\u51fa\u6bcf\u6761\u67e5\u8be2\u7684\u7ed3\u679c\u4fe1\u606f\n    System.out.println(hit.getSourceAsString());\n}\nSystem.out.println(&quot;&lt;&lt;========&quot;); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152816100.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525152816100.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525152816100\" \/><\/div><\/p>\n<ul>\n<li>\u8303\u56f4\u67e5\u8be2<\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u521b\u5efa\u641c\u7d22\u8bf7\u6c42\u5bf9\u8c61\nSearchRequest request = new SearchRequest(); request.indices(&quot;student&quot;);\n\n\/\/ \u6784\u5efa\u67e5\u8be2\u7684\u8bf7\u6c42\u4f53\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder();\nRangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery(&quot;age&quot;);\n\n\/\/ \u5927\u4e8e\u7b49\u4e8e\nrangeQuery.gte(&quot;30&quot;);\n\/\/ \u5c0f\u4e8e\u7b49\u4e8e\nrangeQuery.lte(&quot;40&quot;);\nsourceBuilder.query(rangeQuery);\nrequest.source(sourceBuilder);\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\n\/\/ \u67e5\u8be2\u5339\u914d\nSearchHits hits = response.getHits();\nSystem.out.println(&quot;took:&quot; + response.getTook());\nSystem.out.println(&quot;timeout:&quot; + response.isTimedOut());\nSystem.out.println(&quot;total:&quot; + hits.getTotalHits());\nSystem.out.println(&quot;MaxScore:&quot; + hits.getMaxScore()); System.out.println(&quot;hits========&gt;&gt;&quot;);\n\nfor (SearchHit hit : hits) {\n    \/\/\u8f93\u51fa\u6bcf\u6761\u67e5\u8be2\u7684\u7ed3\u679c\u4fe1\u606f\n    System.out.println(hit.getSourceAsString());\n}\nSystem.out.println(&quot;&lt;&lt;========&quot;);\n<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153004699.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153004699.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525153004699\" \/><\/div><\/p>\n<ul>\n<li>\u6a21\u7cca\u67e5\u8be2<\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u521b\u5efa\u641c\u7d22\u8bf7\u6c42\u5bf9\u8c61\nSearchRequest request = new SearchRequest();\nrequest.indices(&quot;student&quot;);\n\/\/ \u6784\u5efa\u67e5\u8be2\u7684\u8bf7\u6c42\u4f53\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.fuzzyQuery(&quot;name&quot;,&quot;zhangsan&quot;).fuzziness(Fu zziness.ONE));\nrequest.source(sourceBuilder);\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\/\/ \u67e5\u8be2\u5339\u914d\nSearchHits hits = response.getHits();\nSystem.out.println(&quot;took:&quot; + response.getTook());\nSystem.out.println(&quot;timeout:&quot; + response.isTimedOut());\nSystem.out.println(&quot;total:&quot; + hits.getTotalHits());\nSystem.out.println(&quot;MaxScore:&quot; + hits.getMaxScore()); System.out.println(&quot;hits========&gt;&gt;&quot;);\n\nfor (SearchHit hit : hits) {\n    \/\/\u8f93\u51fa\u6bcf\u6761\u67e5\u8be2\u7684\u7ed3\u679c\u4fe1\u606f\n    System.out.println(hit.getSourceAsString());\n}\nSystem.out.println(&quot;&lt;&lt;========&quot;); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153136012.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153136012.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525153136012\" \/><\/div><\/p>\n<p>2) \u9ad8\u4eae\u67e5\u8be2 <\/p>\n<pre><code class=\"language-java\">\/\/ \u9ad8\u4eae\u67e5\u8be2\nSearchRequest request = new SearchRequest().indices(&quot;student&quot;);\n\n\/\/2.\u521b\u5efa\u67e5\u8be2\u8bf7\u6c42\u4f53\u6784\u5efa\u5668\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder();\n\/\/\u6784\u5efa\u67e5\u8be2\u65b9\u5f0f\uff1a\u9ad8\u4eae\u67e5\u8be2\nTermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(&quot;name&quot;,&quot;zhangsan&quot;);\n\/\/\u8bbe\u7f6e\u67e5\u8be2\u65b9\u5f0f\nsourceBuilder.query(termsQueryBuilder);\n\n\/\/\u6784\u5efa\u9ad8\u4eae\u5b57\u6bb5\nHighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.preTags(&quot;&quot;);\n\/\/\u8bbe\u7f6e\u6807\u7b7e\u524d\u7f00\nhighlightBuilder.postTags(&quot;&quot;);\n\/\/\u8bbe\u7f6e\u6807\u7b7e\u540e\u7f00\nhighlightBuilder.field(&quot;name&quot;);\n\/\/\u8bbe\u7f6e\u9ad8\u4eae\u5b57\u6bb5\n\/\/\u8bbe\u7f6e\u9ad8\u4eae\u6784\u5efa\u5bf9\u8c61\nsourceBuilder.highlighter(highlightBuilder);\n\/\/\u8bbe\u7f6e\u8bf7\u6c42\u4f53\nrequest.source(sourceBuilder);\n\/\/3.\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\/\/4.\u6253\u5370\u54cd\u5e94\u7ed3\u679c\nSearchHits hits = response.getHits();\nSystem.out.println(&quot;took::&quot;+response.getTook()); System.out.println(&quot;time_out::&quot;+response.isTimedOut()); System.out.println(&quot;total::&quot;+hits.getTotalHits()); System.out.println(&quot;max_score::&quot;+hits.getMaxScore());\nSystem.out.println(&quot;hits::::&gt;&gt;&quot;);\nfor (SearchHit hit : hits) {\n    String sourceAsString = hit.getSourceAsString();\n    System.out.println(sourceAsString);\n    \/\/\u6253\u5370\u9ad8\u4eae\u7ed3\u679c Map\n    highlightFields = hit.getHighlightFields();\n    System.out.println(highlightFields);\n}\nSystem.out.println(&quot;&lt;&lt;::::&quot;); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153204717.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153204717.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525153204717\" \/><\/div><\/p>\n<p>3) \u805a\u5408\u67e5\u8be2 <\/p>\n<ul>\n<li>\u6700\u5927\u5e74\u9f84<\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u9ad8\u4eae\u67e5\u8be2\nSearchRequest request = new SearchRequest().indices(&quot;student&quot;);\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.aggregation(AggregationBuilders.max(&quot;maxAge&quot;).field(&quot;age&quot;));\n\n\/\/\u8bbe\u7f6e\u8bf7\u6c42\u4f53\nrequest.source(sourceBuilder);\n\n\/\/3.\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\/\/4.\u6253\u5370\u54cd\u5e94\u7ed3\u679c\nSearchHits hits = response.getHits();\nSystem.out.println(response); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153502083.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153502083.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525153502083\" \/><\/div><\/p>\n<ul>\n<li>\u5206\u7ec4\u7edf\u8ba1 <\/li>\n<\/ul>\n<pre><code class=\"language-java\">\/\/ \u9ad8\u4eae\u67e5\u8be2\nSearchRequest request = new SearchRequest().indices(&quot;student&quot;);\nSearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.aggregation(AggregationBuilders.terms(&quot;age_groupby&quot;).field(&quot;ag e&quot;));\n\/\/\u8bbe\u7f6e\u8bf7\u6c42\u4f53\nrequest.source(sourceBuilder);\n\/\/3.\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\nSearchResponse response = client.search(request, RequestOptions.DEFAULT);\n\/\/4.\u6253\u5370\u54cd\u5e94\u7ed3\u679c\nSearchHits hits = response.getHits();\nSystem.out.println(response); <\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153607257.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525153607257.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525153607257\" \/><\/div><\/p>\n<h2>\u7b2c3\u7ae0 Elasticsearch \u73af\u5883<\/h2>\n<h3>3.1 \u76f8\u5173\u6982\u5ff5<\/h3>\n<p>3.1.1 \u5355\u673a &amp; \u96c6\u7fa4 <\/p>\n<p>\u5355\u53f0 Elasticsearch \u670d\u52a1\u5668\u63d0\u4f9b\u670d\u52a1\uff0c\u5f80\u5f80\u90fd\u6709\u6700\u5927\u7684\u8d1f\u8f7d\u80fd\u529b\uff0c\u8d85\u8fc7\u8fd9\u4e2a\u9608\u503c\uff0c\u670d\u52a1\u5668 \u6027\u80fd\u5c31\u4f1a\u5927\u5927\u964d\u4f4e\u751a\u81f3\u4e0d\u53ef\u7528\uff0c\u6240\u4ee5\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u4e00\u822c\u90fd\u662f\u8fd0\u884c\u5728\u6307\u5b9a\u670d\u52a1\u5668\u96c6\u7fa4\u4e2d\u3002 <\/p>\n<p>\u9664\u4e86\u8d1f\u8f7d\u80fd\u529b\uff0c\u5355\u70b9\u670d\u52a1\u5668\u4e5f\u5b58\u5728\u5176\u4ed6\u95ee\u9898\uff1a<\/p>\n<ul>\n<li>\n<p>\u5355\u53f0\u673a\u5668\u5b58\u50a8\u5bb9\u91cf\u6709\u9650 <\/p>\n<\/li>\n<li>\n<p>\u5355\u670d\u52a1\u5668\u5bb9\u6613\u51fa\u73b0\u5355\u70b9\u6545\u969c\uff0c\u65e0\u6cd5\u5b9e\u73b0\u9ad8\u53ef\u7528 <\/p>\n<\/li>\n<li>\n<p>\u5355\u670d\u52a1\u7684\u5e76\u53d1\u5904\u7406\u80fd\u529b\u6709\u9650 <\/p>\n<\/li>\n<\/ul>\n<p>\u914d\u7f6e\u670d\u52a1\u5668\u96c6\u7fa4\u65f6\uff0c\u96c6\u7fa4\u4e2d\u8282\u70b9\u6570\u91cf\u6ca1\u6709\u9650\u5236\uff0c\u5927\u4e8e\u7b49\u4e8e 2 \u4e2a\u8282\u70b9\u5c31\u53ef\u4ee5\u770b\u505a\u662f\u96c6\u7fa4\u4e86\u3002\u4e00 \u822c\u51fa\u4e8e\u9ad8\u6027\u80fd\u53ca\u9ad8\u53ef\u7528\u65b9\u9762\u6765\u8003\u8651\u96c6\u7fa4\u4e2d\u8282\u70b9\u6570\u91cf\u90fd\u662f 3 \u4e2a\u4ee5\u4e0a\u3002<\/p>\n<p>3.1.2 \u96c6\u7fa4 Cluster <\/p>\n<p>\u200b   \u4e00\u4e2a\u96c6\u7fa4\u5c31\u662f\u7531\u4e00\u4e2a\u6216\u591a\u4e2a\u670d\u52a1\u5668\u8282\u70b9\u7ec4\u7ec7\u5728\u4e00\u8d77\uff0c\u5171\u540c\u6301\u6709\u6574\u4e2a\u7684\u6570\u636e\uff0c\u5e76\u4e00\u8d77\u63d0\u4f9b \u7d22\u5f15\u548c\u641c\u7d22\u529f\u80fd\u3002\u4e00\u4e2a Elasticsearch \u96c6\u7fa4\u6709\u4e00\u4e2a\u552f\u4e00\u7684\u540d\u5b57\u6807\u8bc6\uff0c\u8fd9\u4e2a\u540d\u5b57\u9ed8\u8ba4\u5c31 \u662f\u201delasticsearch\u201d\u3002\u8fd9\u4e2a\u540d\u5b57\u662f\u91cd\u8981\u7684\uff0c\u56e0\u4e3a\u4e00\u4e2a\u8282\u70b9\u53ea\u80fd\u901a\u8fc7\u6307\u5b9a\u67d0\u4e2a\u96c6\u7fa4\u7684\u540d\u5b57\uff0c\u6765\u52a0\u5165 \u8fd9\u4e2a\u96c6\u7fa4\u3002 <\/p>\n<p>3.1.3 \u8282\u70b9 <\/p>\n<p>Node \u96c6\u7fa4\u4e2d\u5305\u542b\u5f88\u591a\u670d\u52a1\u5668\uff0c\u4e00\u4e2a\u8282\u70b9\u5c31\u662f\u5176\u4e2d\u7684\u4e00\u4e2a\u670d\u52a1\u5668\u3002\u4f5c\u4e3a\u96c6\u7fa4\u7684\u4e00\u90e8\u5206\uff0c\u5b83\u5b58\u50a8 \u6570\u636e\uff0c\u53c2\u4e0e\u96c6\u7fa4\u7684\u7d22\u5f15\u548c\u641c\u7d22\u529f\u80fd\u3002 <\/p>\n<p>\u4e00\u4e2a\u8282\u70b9\u4e5f\u662f\u7531\u4e00\u4e2a\u540d\u5b57\u6765\u6807\u8bc6\u7684\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8fd9\u4e2a\u540d\u5b57\u662f\u4e00\u4e2a\u968f\u673a\u7684\u6f2b\u5a01\u6f2b\u753b\u89d2\u8272 \u7684\u540d\u5b57\uff0c\u8fd9\u4e2a\u540d\u5b57\u4f1a\u5728\u542f\u52a8\u7684\u65f6\u5019\u8d4b\u4e88\u8282\u70b9\u3002\u8fd9\u4e2a\u540d\u5b57\u5bf9\u4e8e\u7ba1\u7406\u5de5\u4f5c\u6765\u8bf4\u633a\u91cd\u8981\u7684\uff0c\u56e0\u4e3a\u5728 \u8fd9\u4e2a\u7ba1\u7406\u8fc7\u7a0b\u4e2d\uff0c\u4f60\u4f1a\u53bb\u786e\u5b9a\u7f51\u7edc\u4e2d\u7684\u54ea\u4e9b\u670d\u52a1\u5668\u5bf9\u5e94\u4e8e Elasticsearch \u96c6\u7fa4\u4e2d\u7684\u54ea\u4e9b\u8282\u70b9\u3002<\/p>\n<p>\u4e00\u4e2a\u8282\u70b9\u53ef\u4ee5\u901a\u8fc7\u914d\u7f6e\u96c6\u7fa4\u540d\u79f0\u7684\u65b9\u5f0f\u6765\u52a0\u5165\u4e00\u4e2a\u6307\u5b9a\u7684\u96c6\u7fa4\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6bcf\u4e2a\u8282\u70b9 \u90fd\u4f1a\u88ab\u5b89\u6392\u52a0\u5165\u5230\u4e00\u4e2a\u53eb\u505a\u201celasticsearch\u201d\u7684\u96c6\u7fa4\u4e2d\uff0c\u8fd9\u610f\u5473\u7740\uff0c\u5982\u679c\u4f60\u5728\u4f60\u7684\u7f51\u7edc\u4e2d\u542f\u52a8\u4e86 \u82e5\u5e72\u4e2a\u8282\u70b9\uff0c\u5e76\u5047\u5b9a\u5b83\u4eec\u80fd\u591f\u76f8\u4e92\u53d1\u73b0\u5f7c\u6b64\uff0c\u5b83\u4eec\u5c06\u4f1a\u81ea\u52a8\u5730\u5f62\u6210\u5e76\u52a0\u5165\u5230\u4e00\u4e2a\u53eb\u505a \u201celasticsearch\u201d\u7684\u96c6\u7fa4\u4e2d\u3002<\/p>\n<p>\u5728\u4e00\u4e2a\u96c6\u7fa4\u91cc\uff0c\u53ea\u8981\u4f60\u60f3\uff0c\u53ef\u4ee5\u62e5\u6709\u4efb\u610f\u591a\u4e2a\u8282\u70b9\u3002\u800c\u4e14\uff0c\u5982\u679c\u5f53\u524d\u4f60\u7684\u7f51\u7edc\u4e2d\u6ca1\u6709\u8fd0 \u884c\u4efb\u4f55 Elasticsearch \u8282\u70b9\uff0c\u8fd9\u65f6\u542f\u52a8\u4e00\u4e2a\u8282\u70b9\uff0c\u4f1a\u9ed8\u8ba4\u521b\u5efa\u5e76\u52a0\u5165\u4e00\u4e2a\u53eb\u505a\u201celasticsearch\u201d\u7684 \u96c6\u7fa4\u3002 <\/p>\n<h3>3.2 Windows \u96c6\u7fa4<\/h3>\n<p>3.2.1 \u90e8\u7f72\u96c6\u7fa4 <\/p>\n<p>1) \u521b\u5efa elasticsearch-cluster \u6587\u4ef6\u5939\uff0c\u5728\u5185\u90e8\u590d\u5236\u4e09\u4e2a elasticsearch \u670d\u52a1<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525154058035.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525154058035.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525154058035\" \/><\/div><\/p>\n<p>2) \u4fee\u6539\u96c6\u7fa4\u6587\u4ef6\u76ee\u5f55\u4e2d\u6bcf\u4e2a\u8282\u70b9\u7684 config\/elasticsearch.yml \u914d\u7f6e\u6587\u4ef6 <\/p>\n<ul>\n<li>node-1001 \u8282\u70b9 <\/li>\n<\/ul>\n<pre><code class=\"language-properties\">#\u8282\u70b9 1 \u7684\u914d\u7f6e\u4fe1\u606f\uff1a\n#\u96c6\u7fa4\u540d\u79f0\uff0c\u8282\u70b9\u4e4b\u95f4\u8981\u4fdd\u6301\u4e00\u81f4\ncluster.name: my-elasticsearch\n#\u8282\u70b9\u540d\u79f0\uff0c\u96c6\u7fa4\u5185\u8981\u552f\u4e00\nnode.name: node-1001\nnode.master: true\nnode.data: true\n#ip \u5730\u5740\nnetwork.host: localhost\n#http \u7aef\u53e3\nhttp.port: 1001\n#tcp \u76d1\u542c\u7aef\u53e3\ntransport.tcp.port: 9301\n#discovery.seed_hosts: [&quot;localhost:9301&quot;, &quot;localhost:9302&quot;,&quot;localhost:9303&quot;]\n#discovery.zen.fd.ping_timeout: 1m\n#discovery.zen.fd.ping_retries: 5\n\n#\u96c6\u7fa4\u5185\u7684\u53ef\u4ee5\u88ab\u9009\u4e3a\u4e3b\u8282\u70b9\u7684\u8282\u70b9\u5217\u8868\n#cluster.initial_master_nodes: [&quot;node-1&quot;, &quot;node-2&quot;,&quot;node-3&quot;]\n\n#\u8de8\u57df\u914d\u7f6e\n#action.destructive_requires_name: true\nhttp.cors.enabled: true http.cors.allow-origin: &quot;*&quot; <\/code><\/pre>\n<ul>\n<li>node-1002 \u8282\u70b9 <\/li>\n<\/ul>\n<pre><code class=\"language-properties\">#\u8282\u70b9 2 \u7684\u914d\u7f6e\u4fe1\u606f\uff1a\n#\u96c6\u7fa4\u540d\u79f0\uff0c\u8282\u70b9\u4e4b\u95f4\u8981\u4fdd\u6301\u4e00\u81f4\ncluster.name: my-elasticsearch\n\n#\u8282\u70b9\u540d\u79f0\uff0c\u96c6\u7fa4\u5185\u8981\u552f\u4e00\nnode.name: node-1002\nnode.master: true\nnode.data: true\n\n#ip \u5730\u5740\nnetwork.host: localhost\n#http \u7aef\u53e3\nhttp.port: 1002\n#tcp \u76d1\u542c\u7aef\u53e3\ntransport.tcp.port: 9302\n\ndiscovery.seed_hosts: [&quot;localhost:9301&quot;]\ndiscovery.zen.fd.ping_timeout: 1m\ndiscovery.zen.fd.ping_retries: 5\n\n#\u96c6\u7fa4\u5185\u7684\u53ef\u4ee5\u88ab\u9009\u4e3a\u4e3b\u8282\u70b9\u7684\u8282\u70b9\u5217\u8868\n#cluster.initial_master_nodes: [&quot;node-1&quot;, &quot;node-2&quot;,&quot;node-3&quot;]\n\n#\u8de8\u57df\u914d\u7f6e\n#action.destructive_requires_name: true\nhttp.cors.enabled: true\nhttp.cors.allow-origin: &quot;*&quot; <\/code><\/pre>\n<ul>\n<li>node-1003 \u8282\u70b9<\/li>\n<\/ul>\n<pre><code class=\"language-properties\">#\u8282\u70b9 3 \u7684\u914d\u7f6e\u4fe1\u606f\uff1a\n#\u96c6\u7fa4\u540d\u79f0\uff0c\u8282\u70b9\u4e4b\u95f4\u8981\u4fdd\u6301\u4e00\u81f4\ncluster.name: my-elasticsearch\n\n#\u8282\u70b9\u540d\u79f0\uff0c\u96c6\u7fa4\u5185\u8981\u552f\u4e00\nnode.name: node-1003\nnode.master: true\nnode.data: true\n#ip \u5730\u5740\nnetwork.host: localhost\n\n#http \u7aef\u53e3\nhttp.port: 1003\n\n#tcp \u76d1\u542c\u7aef\u53e3\ntransport.tcp.port: 9303\n#\u5019\u9009\u4e3b\u8282\u70b9\u7684\u5730\u5740\uff0c\u5728\u5f00\u542f\u670d\u52a1\u540e\u53ef\u4ee5\u88ab\u9009\u4e3a\u4e3b\u8282\u70b9\ndiscovery.seed_hosts: [&quot;localhost:9301&quot;, &quot;localhost:9302&quot;]\ndiscovery.zen.fd.ping_timeout: 1m\ndiscovery.zen.fd.ping_retries: 5\n\n#\u96c6\u7fa4\u5185\u7684\u53ef\u4ee5\u88ab\u9009\u4e3a\u4e3b\u8282\u70b9\u7684\u8282\u70b9\u5217\u8868\n#cluster.initial_master_nodes: [&quot;node-1&quot;, &quot;node-2&quot;,&quot;node-3&quot;]\n\n#\u8de8\u57df\u914d\u7f6e\n#action.destructive_requires_name: true\nhttp.cors.enabled: true\nhttp.cors.allow-origin: &quot;*&quot; <\/code><\/pre>\n<p>3.2.2 \u542f\u52a8\u96c6\u7fa4 <\/p>\n<p>1) \u542f\u52a8\u524d\u5148\u5220\u9664\u6bcf\u4e2a\u8282\u70b9\u4e2d\u7684 data \u76ee\u5f55\u4e2d\u6240\u6709\u5185\u5bb9\uff08\u5982\u679c\u5b58\u5728\uff09 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525155008995.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525155008995.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525155008995\" \/><\/div><\/p>\n<p>2) \u5206\u522b\u53cc\u51fb\u6267\u884c bin\/elasticsearch.bat, \u542f\u52a8\u8282\u70b9\u670d\u52a1\u5668\uff0c\u542f\u52a8\u540e\uff0c\u4f1a\u81ea\u52a8\u52a0\u5165\u6307\u5b9a\u540d\u79f0\u7684 \u96c6\u7fa4 <\/p>\n<p>3.2.3 \u6d4b\u8bd5\u96c6\u7fa4 \u67e5\u770b\u96c6\u7fa4\u72b6\u6001 <\/p>\n<ul>\n<li>\n<p>node-1001 \u8282\u70b9 <\/p>\n<\/li>\n<li>\n<p>node-1002 \u8282\u70b9 <\/p>\n<\/li>\n<li>\n<p>node-1003 \u8282\u70b9<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"language-markdown\">status\u5b57\u6bb5\u6307\u793a\u7740\u5f53\u524d\u96c6\u7fa4\u5728\u603b\u4f53\u4e0a\u662f\u5426\u5de5\u4f5c\u6b63\u5e38\u3002\u5b83\u7684\u4e09\u79cd\u989c\u8272\u542b\u4e49\u5982\u4e0b\uff1a\ngreen\n    \u6240\u6709\u7684\u4e3b\u5206\u7247\u548c\u526f\u672c\u5206\u7247\u90fd\u6b63\u5e38\u8fd0\u884c\u3002\nyellow\n    \u6240\u6709\u7684\u4e3b\u5206\u7247\u90fd\u6b63\u5e38\u8fd0\u884c\uff0c\u4f46\u4e0d\u662f\u6240\u6709\u7684\u526f\u672c\u5206\u7247\u90fd\u6b63\u5e38\u8fd0\u884c\u3002\nred\n    \u6709\u4e3b\u5206\u7247\u6ca1\u80fd\u6b63\u5e38\u8fd0\u884c\u3002<\/code><\/pre>\n<p>\u5411\u96c6\u7fa4\u4e2d\u7684 node-1001 \u8282\u70b9\u589e\u52a0\u7d22\u5f15 \u5411\u96c6\u7fa4\u4e2d\u7684 node-1002 \u8282\u70b9\u67e5\u8be2\u7d22\u5f15 <\/p>\n<h3>3.3 Linux \u5355\u673a<\/h3>\n<p>3.3.1 \u8f6f\u4ef6\u4e0b\u8f7d <\/p>\n<p>\u8f6f\u4ef6\u4e0b\u8f7d\u5730\u5740\uff1a<a href=\"https:\/\/www.elastic.co\/cn\/downloads\/past-releases\/elasticsearch-7-8-0\">https:\/\/www.elastic.co\/cn\/downloads\/past-releases\/elasticsearch-7-8-0<\/a> <\/p>\n<p>3.3.2 \u8f6f\u4ef6\u5b89\u88c5 <\/p>\n<p>1) \u89e3\u538b\u8f6f\u4ef6 <\/p>\n<p>\u5c06\u4e0b\u8f7d\u7684\u8f6f\u4ef6\u89e3\u538b\u7f29 <\/p>\n<pre><code class=\"language-shell\">#\u89e3\u538b\u7f29\ntar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C \/opt\/module\n# \u6539\u540d\nmv elasticsearch-7.8.0 es  <\/code><\/pre>\n<p>2)\u521b\u5efa\u7528\u6237 <\/p>\n<p>\u56e0\u4e3a\u5b89\u5168\u95ee\u9898\uff0cElasticsearch \u4e0d\u5141\u8bb8 root \u7528\u6237\u76f4\u63a5\u8fd0\u884c\uff0c\u6240\u4ee5\u8981\u521b\u5efa\u65b0\u7528\u6237\uff0c\u5728 root \u7528 \u6237\u4e2d\u521b\u5efa\u65b0\u7528\u6237 <\/p>\n<pre><code class=\"language-shell\">useradd es #\u65b0\u589e es \u7528\u6237\npasswd es #\u4e3a es \u7528\u6237\u8bbe\u7f6e\u5bc6\u7801\nuserdel -r es #\u5982\u679c\u9519\u4e86\uff0c\u53ef\u4ee5\u5220\u9664\u518d\u52a0\nchown -R es:es \/opt\/module\/es #\u6587\u4ef6\u5939\u6240\u6709\u8005 <\/code><\/pre>\n<p>3) \u4fee\u6539\u914d\u7f6e\u6587\u4ef6 <\/p>\n<p>\u4fee\u6539\/opt\/module\/es\/config\/elasticsearch.yml \u6587\u4ef6<\/p>\n<pre><code class=\"language-shell\">#\u52a0\u5165\u5982\u4e0b\u914d\u7f6e\ncluster.name: elasticsearch\nnode.name: node-1\nnetwork.host: 0.0.0.0\nhttp.port: 9200\ncluster.initial_master_nodes: [&quot;node-1&quot;] <\/code><\/pre>\n<p>\u4fee\u6539\/etc\/security\/limits.conf<\/p>\n<pre><code class=\"language-shell\"># \u5728\u6587\u4ef6\u672b\u5c3e\u4e2d\u589e\u52a0\u4e0b\u9762\u5185\u5bb9\n# \u6bcf\u4e2a\u8fdb\u7a0b\u53ef\u4ee5\u6253\u5f00\u7684\u6587\u4ef6\u6570\u7684\u9650\u5236\nes soft nofile 65536\nes hard nofile 65536 <\/code><\/pre>\n<p>\u4fee\u6539\/etc\/security\/limits.d\/20-nproc.conf<\/p>\n<pre><code class=\"language-shell\"># \u5728\u6587\u4ef6\u672b\u5c3e\u4e2d\u589e\u52a0\u4e0b\u9762\u5185\u5bb9\n# \u6bcf\u4e2a\u8fdb\u7a0b\u53ef\u4ee5\u6253\u5f00\u7684\u6587\u4ef6\u6570\u7684\u9650\u5236\nes soft nofile 65536\nes hard nofile 65536\n\n# \u64cd\u4f5c\u7cfb\u7edf\u7ea7\u522b\u5bf9\u6bcf\u4e2a\u7528\u6237\u521b\u5efa\u7684\u8fdb\u7a0b\u6570\u7684\u9650\u5236\n* hard nproc 4096\n# \u6ce8\uff1a* \u5e26\u8868 Linux \u6240\u6709\u7528\u6237\u540d\u79f0 <\/code><\/pre>\n<p>\u4fee\u6539\/etc\/sysctl.conf <\/p>\n<pre><code class=\"language-shell\"># \u5728\u6587\u4ef6\u4e2d\u589e\u52a0\u4e0b\u9762\u5185\u5bb9\n#\u4e00\u4e2a\u8fdb\u7a0b\u53ef\u4ee5\u62e5\u6709\u7684 VMA(\u865a\u62df\u5185\u5b58\u533a\u57df)\u7684\u6570\u91cf,\u9ed8\u8ba4\u503c\u4e3a 65536\nvm.max_map_count=655360 <\/code><\/pre>\n<p>\u91cd\u65b0\u52a0\u8f7d <\/p>\n<pre><code class=\"language-shell\">sysctl -p <\/code><\/pre>\n<p>3.3.3 \u542f\u52a8\u8f6f\u4ef6 <\/p>\n<p>\u4f7f\u7528 ES \u7528\u6237\u542f\u52a8 <\/p>\n<pre><code class=\"language-shell\">cd \/opt\/module\/es\/\n#\u542f\u52a8\nbin\/elasticsearch\n#\u540e\u53f0\u542f\u52a8\nbin\/elasticsearch -d<\/code><\/pre>\n<p>\u542f\u52a8\u65f6\uff0c\u4f1a\u52a8\u6001\u751f\u6210\u6587\u4ef6\uff0c\u5982\u679c\u6587\u4ef6\u6240\u5c5e\u7528\u6237\u4e0d\u5339\u914d\uff0c\u4f1a\u53d1\u751f\u9519\u8bef\uff0c\u9700\u8981\u91cd\u65b0\u8fdb\u884c\u4fee\u6539\u7528\u6237 \u548c\u7528\u6237\u7ec4 <\/p>\n<p>\u5173\u95ed\u9632\u706b\u5899 <\/p>\n<pre><code class=\"language-shell\">#\u6682\u65f6\u5173\u95ed\u9632\u706b\u5899\nsystemctl stop firewalld\n#\u6c38\u4e45\u5173\u95ed\u9632\u706b\u5899\nsystemctl enable firewalld.service #\u6253\u5f00\u653e\u8d27\u62a2\u6c38\u4e45\u6027\u751f\u6548\uff0c\u91cd\u542f\u540e\u4e0d\u4f1a\u590d\u539f\nsystemctl disable firewalld.service #\u5173\u95ed\u9632\u706b\u5899\uff0c\u6c38\u4e45\u6027\u751f\u6548\uff0c\u91cd\u542f\u540e\u4e0d\u4f1a\u590d\u539f<\/code><\/pre>\n<p>3.3.3 \u6d4b\u8bd5\u8f6f\u4ef6 \u6d4f\u89c8\u5668\u4e2d\u8f93\u5165\u5730\u5740\uff1a<a href=\"http:\/\/linux1:9200\/\">http:\/\/linux1:9200\/<\/a> <\/p>\n<h3>3.4 Linux \u96c6\u7fa4<\/h3>\n<p>3.4.1 \u8f6f\u4ef6\u4e0b\u8f7d <\/p>\n<p>\u8f6f\u4ef6\u4e0b\u8f7d\u5730\u5740\uff1a<a href=\"https:\/\/www.elastic.co\/cn\/downloads\/past-releases\/elasticsearch-7-8-0\">https:\/\/www.elastic.co\/cn\/downloads\/past-releases\/elasticsearch-7-8-0<\/a> <\/p>\n<p>3.4.2 \u8f6f\u4ef6\u5b89\u88c5 <\/p>\n<p>1) \u89e3\u538b\u8f6f\u4ef6 <\/p>\n<p>\u5c06\u4e0b\u8f7d\u7684\u8f6f\u4ef6\u89e3\u538b\u7f29 <\/p>\n<pre><code class=\"language-shell\"># \u89e3\u538b\u7f29\ntar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C \/opt\/module\n# \u6539\u540d\nmv elasticsearch-7.8.0 es-cluster <\/code><\/pre>\n<p>\u5c06\u8f6f\u4ef6\u5206\u53d1\u5230\u5176\u4ed6\u8282\u70b9\uff1alinux2, linux3 <\/p>\n<p>2) \u521b\u5efa\u7528\u6237 <\/p>\n<p>\u56e0\u4e3a\u5b89\u5168\u95ee\u9898\uff0cElasticsearch \u4e0d\u5141\u8bb8 root \u7528\u6237\u76f4\u63a5\u8fd0\u884c\uff0c\u6240\u4ee5\u8981\u5728\u6bcf\u4e2a\u8282\u70b9\u4e2d\u521b\u5efa\u65b0\u7528 \u6237\uff0c\u5728 root \u7528\u6237\u4e2d\u521b\u5efa\u65b0\u7528\u6237 <\/p>\n<pre><code class=\"language-shell\">useradd es #\u65b0\u589e es \u7528\u6237\npasswd es #\u4e3a es \u7528\u6237\u8bbe\u7f6e\u5bc6\u7801\nuserdel -r es #\u5982\u679c\u9519\u4e86\uff0c\u53ef\u4ee5\u5220\u9664\u518d\u52a0\nchown -R es:es \/opt\/module\/es-cluster #\u6587\u4ef6\u5939\u6240\u6709\u8005 <\/code><\/pre>\n<p>3) \u4fee\u6539\u914d\u7f6e\u6587\u4ef6 \u4fee\u6539\/opt\/module\/es\/config\/elasticsearch.yml \u6587\u4ef6\uff0c\u5206\u53d1\u6587\u4ef6 <\/p>\n<pre><code class=\"language-yaml\"># \u52a0\u5165\u5982\u4e0b\u914d\u7f6e\n#\u96c6\u7fa4\u540d\u79f0\ncluster.name: cluster-es\n\n#\u8282\u70b9\u540d\u79f0\uff0c\u6bcf\u4e2a\u8282\u70b9\u7684\u540d\u79f0\u4e0d\u80fd\u91cd\u590d\nnode.name: node-1\n\n#ip \u5730\u5740\uff0c\u6bcf\u4e2a\u8282\u70b9\u7684\u5730\u5740\u4e0d\u80fd\u91cd\u590d\nnetwork.host: linux1\n#\u662f\u4e0d\u662f\u6709\u8d44\u683c\u4e3b\u8282\u70b9\nnode.master: true\nnode.data: true\nhttp.port: 9200\n\n# head \u63d2\u4ef6\u9700\u8981\u8fd9\u6253\u5f00\u8fd9\u4e24\u4e2a\u914d\u7f6e\nhttp.cors.allow-origin: &quot;*&quot;\nhttp.cors.enabled: true\nhttp.max_content_length: 200mb\n\n#es7.x \u4e4b\u540e\u65b0\u589e\u7684\u914d\u7f6e\uff0c\u521d\u59cb\u5316\u4e00\u4e2a\u65b0\u7684\u96c6\u7fa4\u65f6\u9700\u8981\u6b64\u914d\u7f6e\u6765\u9009\u4e3e master\ncluster.initial_master_nodes: [&quot;node-1&quot;]\n\n#es7.x \u4e4b\u540e\u65b0\u589e\u7684\u914d\u7f6e\uff0c\u8282\u70b9\u53d1\u73b0\ndiscovery.seed_hosts: [&quot;linux1:9300&quot;,&quot;linux2:9300&quot;,&quot;linux3:9300&quot;] gateway.recover_after_nodes: 2\nnetwork.tcp.keep_alive: true\nnetwork.tcp.no_delay: true\ntransport.tcp.compress: true\n\n#\u96c6\u7fa4\u5185\u540c\u65f6\u542f\u52a8\u7684\u6570\u636e\u4efb\u52a1\u4e2a\u6570\uff0c\u9ed8\u8ba4\u662f 2 \u4e2a cluster.routing.allocation.cluster_concurrent_rebalance: 16\n\n#\u6dfb\u52a0\u6216\u5220\u9664\u8282\u70b9\u53ca\u8d1f\u8f7d\u5747\u8861\u65f6\u5e76\u53d1\u6062\u590d\u7684\u7ebf\u7a0b\u4e2a\u6570\uff0c\u9ed8\u8ba4 4 \u4e2a cluster.routing.allocation.node_concurrent_recoveries: 16\n\n#\u521d\u59cb\u5316\u6570\u636e\u6062\u590d\u65f6\uff0c\u5e76\u53d1\u6062\u590d\u7ebf\u7a0b\u7684\u4e2a\u6570\uff0c\u9ed8\u8ba4 4 \u4e2a cluster.routing.allocation.node_initial_primaries_recoveries: 16 <\/code><\/pre>\n<p>\u4fee\u6539\/etc\/security\/limits.conf \uff0c\u5206\u53d1\u6587\u4ef6<\/p>\n<pre><code class=\"language-shell\"># \u5728\u6587\u4ef6\u672b\u5c3e\u4e2d\u589e\u52a0\u4e0b\u9762\u5185\u5bb9\nes soft nofile 65536\nes hard nofile 65536<\/code><\/pre>\n<p>\u4fee\u6539\/etc\/security\/limits.d\/20-nproc.conf\uff0c\u5206\u53d1\u6587\u4ef6<\/p>\n<pre><code class=\"language-shell\"># \u5728\u6587\u4ef6\u672b\u5c3e\u4e2d\u589e\u52a0\u4e0b\u9762\u5185\u5bb9\nes soft nofile 65536\nes hard nofile 65536\n* hard nproc 4096\n# \u6ce8\uff1a* \u5e26\u8868 Linux \u6240\u6709\u7528\u6237\u540d\u79f0 <\/code><\/pre>\n<p>\u4fee\u6539\/etc\/sysctl.conf<\/p>\n<pre><code class=\"language-shell\"># \u5728\u6587\u4ef6\u4e2d\u589e\u52a0\u4e0b\u9762\u5185\u5bb9\nvm.max_map_count=655360 <\/code><\/pre>\n<p>\u91cd\u65b0\u52a0\u8f7d <\/p>\n<pre><code class=\"language-shell\">sysctl -p <\/code><\/pre>\n<p>3.4.3 \u542f\u52a8\u8f6f\u4ef6 <\/p>\n<p>\u5206\u522b\u5728\u4e0d\u540c\u8282\u70b9\u4e0a\u542f\u52a8 ES \u8f6f\u4ef6 <\/p>\n<pre><code class=\"language-shell\">cd \/opt\/module\/es-cluster\n#\u542f\u52a8\nbin\/elasticsearch\n#\u540e\u53f0\u542f\u52a8\nbin\/elasticsearch -d <\/code><\/pre>\n<p>3.4.4 \u6d4b\u8bd5\u96c6\u7fa4 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525165616505.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525165616505.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525165616505\" \/><\/div><\/p>\n<h2>\u7b2c4\u7ae0 Elasticsearch \u8fdb\u9636<\/h2>\n<h3>4.1 \u6838\u5fc3\u6982\u5ff5<\/h3>\n<p>4.1.1 \u7d22\u5f15\uff08Index\uff09 <\/p>\n<p>\u200b   \u4e00\u4e2a\u7d22\u5f15\u5c31\u662f\u4e00\u4e2a\u62e5\u6709\u51e0\u5206\u76f8\u4f3c\u7279\u5f81\u7684\u6587\u6863\u7684\u96c6\u5408\u3002\u6bd4\u5982\u8bf4\uff0c\u4f60\u53ef\u4ee5\u6709\u4e00\u4e2a\u5ba2\u6237\u6570\u636e\u7684 \u7d22\u5f15\uff0c\u53e6\u4e00\u4e2a\u4ea7\u54c1\u76ee\u5f55\u7684\u7d22\u5f15\uff0c\u8fd8\u6709\u4e00\u4e2a\u8ba2\u5355\u6570\u636e\u7684\u7d22\u5f15\u3002\u4e00\u4e2a\u7d22\u5f15\u7531\u4e00\u4e2a\u540d\u5b57\u6765\u6807\u8bc6\uff08\u5fc5 \u987b\u5168\u90e8\u662f\u5c0f\u5199\u5b57\u6bcd\uff09\uff0c\u5e76\u4e14\u5f53\u6211\u4eec\u8981\u5bf9\u8fd9\u4e2a\u7d22\u5f15\u4e2d\u7684\u6587\u6863\u8fdb\u884c\u7d22\u5f15\u3001\u641c\u7d22\u3001\u66f4\u65b0\u548c\u5220\u9664\u7684\u65f6 \u5019\uff0c\u90fd\u8981\u4f7f\u7528\u5230\u8fd9\u4e2a\u540d\u5b57\u3002\u5728\u4e00\u4e2a\u96c6\u7fa4\u4e2d\uff0c\u53ef\u4ee5\u5b9a\u4e49\u4efb\u610f\u591a\u7684\u7d22\u5f15\u3002 <\/p>\n<p>\u200b   \u80fd\u641c\u7d22\u7684\u6570\u636e\u5fc5\u987b\u7d22\u5f15\uff0c\u8fd9\u6837\u7684\u597d\u5904\u662f\u53ef\u4ee5\u63d0\u9ad8\u67e5\u8be2\u901f\u5ea6\uff0c\u6bd4\u5982\uff1a\u65b0\u534e\u5b57\u5178\u524d\u9762\u7684\u76ee\u5f55 \u5c31\u662f\u7d22\u5f15\u7684\u610f\u601d\uff0c\u76ee\u5f55\u53ef\u4ee5\u63d0\u9ad8\u67e5\u8be2\u901f\u5ea6\u3002 <\/p>\n<p><strong>Elasticsearch \u7d22\u5f15\u7684\u7cbe\u9ad3\uff1a\u4e00\u5207\u8bbe\u8ba1\u90fd\u662f\u4e3a\u4e86\u63d0\u9ad8\u641c\u7d22\u7684\u6027\u80fd\u3002<\/strong> <\/p>\n<p>4.1.2 \u7c7b\u578b\uff08Type\uff09 <\/p>\n<p>\u200b   \u5728\u4e00\u4e2a\u7d22\u5f15\u4e2d\uff0c\u4f60\u53ef\u4ee5\u5b9a\u4e49\u4e00\u79cd\u6216\u591a\u79cd\u7c7b\u578b\u3002 <\/p>\n<p>\u200b   \u4e00\u4e2a\u7c7b\u578b\u662f\u4f60\u7684\u7d22\u5f15\u7684\u4e00\u4e2a\u903b\u8f91\u4e0a\u7684\u5206\u7c7b\/\u5206\u533a\uff0c\u5176\u8bed\u4e49\u5b8c\u5168\u7531\u4f60\u6765\u5b9a\u3002\u901a\u5e38\uff0c\u4f1a\u4e3a\u5177 \u6709\u4e00\u7ec4\u5171\u540c\u5b57\u6bb5\u7684\u6587\u6863\u5b9a\u4e49\u4e00\u4e2a\u7c7b\u578b\u3002\u4e0d\u540c\u7684\u7248\u672c\uff0c\u7c7b\u578b\u53d1\u751f\u4e86\u4e0d\u540c\u7684\u53d8\u5316 <\/p>\n<table>\n<thead>\n<tr>\n<th>\u7248\u672c<\/th>\n<th>Type<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>5.x<\/td>\n<td>\u652f\u6301\u591a\u79cdtype<\/td>\n<\/tr>\n<tr>\n<td>6.x<\/td>\n<td>\u53ea\u80fd\u6709\u4e00\u79cd type<\/td>\n<\/tr>\n<tr>\n<td>7.x<\/td>\n<td>\u9ed8\u8ba4\u4e0d\u518d\u652f\u6301\u81ea\u5b9a\u4e49\u7d22\u5f15\u7c7b\u578b\uff08\u9ed8\u8ba4\u7c7b\u578b\u4e3a\uff1a_doc\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u200b    <\/p>\n<p>4.1.3 \u6587\u6863\uff08Document\uff09 <\/p>\n<p>\u200b   \u4e00\u4e2a\u6587\u6863\u662f\u4e00\u4e2a\u53ef\u88ab\u7d22\u5f15\u7684\u57fa\u7840\u4fe1\u606f\u5355\u5143\uff0c\u4e5f\u5c31\u662f\u4e00\u6761\u6570\u636e <\/p>\n<p>\u200b   \u6bd4\u5982\uff1a\u4f60\u53ef\u4ee5\u62e5\u6709\u67d0\u4e00\u4e2a\u5ba2\u6237\u7684\u6587\u6863\uff0c\u67d0\u4e00\u4e2a\u4ea7\u54c1\u7684\u4e00\u4e2a\u6587\u6863\uff0c\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u62e5\u6709\u67d0\u4e2a \u8ba2\u5355\u7684\u4e00\u4e2a\u6587\u6863\u3002\u6587\u6863\u4ee5 JSON\uff08Javascript Object Notation\uff09\u683c\u5f0f\u6765\u8868\u793a\uff0c\u800c JSON \u662f\u4e00\u4e2a \u5230\u5904\u5b58\u5728\u7684\u4e92\u8054\u7f51\u6570\u636e\u4ea4\u4e92\u683c\u5f0f\u3002 <\/p>\n<p>\u200b   \u5728\u4e00\u4e2a index\/type \u91cc\u9762\uff0c\u4f60\u53ef\u4ee5\u5b58\u50a8\u4efb\u610f\u591a\u7684\u6587\u6863\u3002 <\/p>\n<p>4.1.3 \u5b57\u6bb5\uff08Field\uff09 <\/p>\n<p>\u200b   \u76f8\u5f53\u4e8e\u662f\u6570\u636e\u8868\u7684\u5b57\u6bb5\uff0c\u5bf9\u6587\u6863\u6570\u636e\u6839\u636e\u4e0d\u540c\u5c5e\u6027\u8fdb\u884c\u7684\u5206\u7c7b\u6807\u8bc6\u3002 <\/p>\n<p>4.1.5 \u6620\u5c04\uff08Mapping\uff09 <\/p>\n<p>\u200b   mapping \u662f\u5904\u7406\u6570\u636e\u7684\u65b9\u5f0f\u548c\u89c4\u5219\u65b9\u9762\u505a\u4e00\u4e9b\u9650\u5236\uff0c\u5982\uff1a\u67d0\u4e2a\u5b57\u6bb5\u7684\u6570\u636e\u7c7b\u578b\u3001\u9ed8\u8ba4\u503c\u3001 \u5206\u6790\u5668\u3001\u662f\u5426\u88ab\u7d22\u5f15\u7b49\u7b49\u3002\u8fd9\u4e9b\u90fd\u662f\u6620\u5c04\u91cc\u9762\u53ef\u4ee5\u8bbe\u7f6e\u7684\uff0c\u5176\u5b83\u5c31\u662f\u5904\u7406 ES \u91cc\u9762\u6570\u636e\u7684\u4e00 \u4e9b\u4f7f\u7528\u89c4\u5219\u8bbe\u7f6e\u4e5f\u53eb\u505a\u6620\u5c04\uff0c\u6309\u7740\u6700\u4f18\u89c4\u5219\u5904\u7406\u6570\u636e\u5bf9\u6027\u80fd\u63d0\u9ad8\u5f88\u5927\uff0c\u56e0\u6b64\u624d\u9700\u8981\u5efa\u7acb\u6620\u5c04\uff0c \u5e76\u4e14\u9700\u8981\u601d\u8003\u5982\u4f55\u5efa\u7acb\u6620\u5c04\u624d\u80fd\u5bf9\u6027\u80fd\u66f4\u597d\u3002 <\/p>\n<p>4.1.6 \u5206\u7247\uff08Shards\uff09 <\/p>\n<p>\u200b   \u4e00\u4e2a\u7d22\u5f15\u53ef\u4ee5\u5b58\u50a8\u8d85\u51fa\u5355\u4e2a\u8282\u70b9\u786c\u4ef6\u9650\u5236\u7684\u5927\u91cf\u6570\u636e\u3002\u6bd4\u5982\uff0c\u4e00\u4e2a\u5177\u6709 10 \u4ebf\u6587\u6863\u6570\u636e \u7684\u7d22\u5f15\u5360\u636e 1TB \u7684\u78c1\u76d8\u7a7a\u95f4\uff0c\u800c\u4efb\u4e00\u8282\u70b9\u90fd\u53ef\u80fd\u6ca1\u6709\u8fd9\u6837\u5927\u7684\u78c1\u76d8\u7a7a\u95f4\u3002\u6216\u8005\u5355\u4e2a\u8282\u70b9\u5904 \u7406\u641c\u7d22\u8bf7\u6c42\uff0c\u54cd\u5e94\u592a\u6162\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0cElasticsearch \u63d0\u4f9b\u4e86\u5c06\u7d22\u5f15\u5212\u5206\u6210\u591a\u4efd\u7684\u80fd\u529b\uff0c \u6bcf\u4e00\u4efd\u5c31\u79f0\u4e4b\u4e3a\u5206\u7247\u3002\u5f53\u4f60\u521b\u5efa\u4e00\u4e2a\u7d22\u5f15\u7684\u65f6\u5019\uff0c\u4f60\u53ef\u4ee5\u6307\u5b9a\u4f60\u60f3\u8981\u7684\u5206\u7247\u7684\u6570\u91cf\u3002\u6bcf\u4e2a\u5206 \u7247\u672c\u8eab\u4e5f\u662f\u4e00\u4e2a\u529f\u80fd\u5b8c\u5584\u5e76\u4e14\u72ec\u7acb\u7684\u201c\u7d22\u5f15\u201d\uff0c\u8fd9\u4e2a\u201c\u7d22\u5f15\u201d\u53ef\u4ee5\u88ab\u653e\u7f6e\u5230\u96c6\u7fa4\u4e2d\u7684\u4efb\u4f55\u8282\u70b9 \u4e0a\u3002 \u5206\u7247\u5f88\u91cd\u8981\uff0c\u4e3b\u8981\u6709\u4e24\u65b9\u9762\u7684\u539f\u56e0\uff1a <\/p>\n<p>1\uff09\u5141\u8bb8\u4f60\u6c34\u5e73\u5206\u5272 \/ \u6269\u5c55\u4f60\u7684\u5185\u5bb9\u5bb9\u91cf\u3002 <\/p>\n<p>2\uff09\u5141\u8bb8\u4f60\u5728\u5206\u7247\u4e4b\u4e0a\u8fdb\u884c\u5206\u5e03\u5f0f\u7684\u3001\u5e76\u884c\u7684\u64cd\u4f5c\uff0c\u8fdb\u800c\u63d0\u9ad8\u6027\u80fd\/\u541e\u5410\u91cf\u3002 <\/p>\n<p>\u200b   \u81f3\u4e8e\u4e00\u4e2a\u5206\u7247\u600e\u6837\u5206\u5e03\uff0c\u5b83\u7684\u6587\u6863\u600e\u6837\u805a\u5408\u548c\u641c\u7d22\u8bf7\u6c42\uff0c\u662f\u5b8c\u5168\u7531 Elasticsearch \u7ba1\u7406\u7684\uff0c \u5bf9\u4e8e\u4f5c\u4e3a\u7528\u6237\u7684\u4f60\u6765\u8bf4\uff0c\u8fd9\u4e9b\u90fd\u662f\u900f\u660e\u7684\uff0c\u65e0\u9700\u8fc7\u5206\u5173\u5fc3\u3002 <\/p>\n<p>\u200b   <strong>\u88ab\u6df7\u6dc6\u7684\u6982\u5ff5\u662f\uff0c\u4e00\u4e2a Lucene \u7d22\u5f15 \u6211\u4eec\u5728 Elasticsearch \u79f0\u4f5c \u5206\u7247 \u3002 \u4e00\u4e2a Elasticsearch \u7d22\u5f15 \u662f\u5206\u7247\u7684\u96c6\u5408\u3002 \u5f53 Elasticsearch \u5728\u7d22\u5f15\u4e2d\u641c\u7d22\u7684\u65f6\u5019\uff0c \u4ed6\u53d1\u9001\u67e5\u8be2 \u5230\u6bcf\u4e00\u4e2a\u5c5e\u4e8e\u7d22\u5f15\u7684\u5206\u7247(Lucene \u7d22\u5f15)\uff0c\u7136\u540e\u5408\u5e76\u6bcf\u4e2a\u5206\u7247\u7684\u7ed3\u679c\u5230\u4e00\u4e2a\u5168\u5c40\u7684\u7ed3\u679c\u96c6\u3002<\/strong> <\/p>\n<p>4.1.7 \u526f\u672c\uff08Replicas\uff09 <\/p>\n<p>\u5728\u4e00\u4e2a\u7f51\u7edc \/ \u4e91\u7684\u73af\u5883\u91cc\uff0c\u5931\u8d25\u968f\u65f6\u90fd\u53ef\u80fd\u53d1\u751f\uff0c\u5728\u67d0\u4e2a\u5206\u7247\/\u8282\u70b9\u4e0d\u77e5\u600e\u4e48\u7684\u5c31\u5904\u4e8e \u79bb\u7ebf\u72b6\u6001\uff0c\u6216\u8005\u7531\u4e8e\u4efb\u4f55\u539f\u56e0\u6d88\u5931\u4e86\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6709\u4e00\u4e2a\u6545\u969c\u8f6c\u79fb\u673a\u5236\u662f\u975e\u5e38\u6709\u7528\u5e76\u4e14\u662f \u5f3a\u70c8\u63a8\u8350\u7684\u3002\u4e3a\u6b64\u76ee\u7684\uff0cElasticsearch \u5141\u8bb8\u4f60\u521b\u5efa\u5206\u7247\u7684\u4e00\u4efd\u6216\u591a\u4efd\u62f7\u8d1d\uff0c\u8fd9\u4e9b\u62f7\u8d1d\u53eb\u505a\u590d \u5236\u5206\u7247(\u526f\u672c)\u3002 <\/p>\n<p>\u590d\u5236\u5206\u7247\u4e4b\u6240\u4ee5\u91cd\u8981\uff0c\u6709\u4e24\u4e2a\u4e3b\u8981\u539f\u56e0\uff1a <\/p>\n<ul>\n<li>\n<p>\u5728\u5206\u7247\/\u8282\u70b9\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\uff0c\u63d0\u4f9b\u4e86\u9ad8\u53ef\u7528\u6027\u3002\u56e0\u4e3a\u8fd9\u4e2a\u539f\u56e0\uff0c\u6ce8\u610f\u5230\u590d\u5236\u5206\u7247\u4ece\u4e0d\u4e0e \u539f\/\u4e3b\u8981\uff08original\/primary\uff09\u5206\u7247\u7f6e\u4e8e\u540c\u4e00\u8282\u70b9\u4e0a\u662f\u975e\u5e38\u91cd\u8981\u7684\u3002 <\/p>\n<\/li>\n<li>\n<p>\u6269\u5c55\u4f60\u7684\u641c\u7d22\u91cf\/\u541e\u5410\u91cf\uff0c\u56e0\u4e3a\u641c\u7d22\u53ef\u4ee5\u5728\u6240\u6709\u7684\u526f\u672c\u4e0a\u5e76\u884c\u8fd0\u884c\u3002 <\/p>\n<\/li>\n<\/ul>\n<p>\u603b\u4e4b\uff0c\u6bcf\u4e2a\u7d22\u5f15\u53ef\u4ee5\u88ab\u5206\u6210\u591a\u4e2a\u5206\u7247\u3002\u4e00\u4e2a\u7d22\u5f15\u4e5f\u53ef\u4ee5\u88ab\u590d\u5236 0 \u6b21\uff08\u610f\u601d\u662f\u6ca1\u6709\u590d\u5236\uff09 \u6216\u591a\u6b21\u3002\u4e00\u65e6\u590d\u5236\u4e86\uff0c\u6bcf\u4e2a\u7d22\u5f15\u5c31\u6709\u4e86\u4e3b\u5206\u7247\uff08\u4f5c\u4e3a\u590d\u5236\u6e90\u7684\u539f\u6765\u7684\u5206\u7247\uff09\u548c\u590d\u5236\u5206\u7247\uff08\u4e3b \u5206\u7247\u7684\u62f7\u8d1d\uff09\u4e4b\u522b\u3002\u5206\u7247\u548c\u590d\u5236\u7684\u6570\u91cf\u53ef\u4ee5\u5728\u7d22\u5f15\u521b\u5efa\u7684\u65f6\u5019\u6307\u5b9a\u3002\u5728\u7d22\u5f15\u521b\u5efa\u4e4b\u540e\uff0c\u4f60\u53ef \u4ee5\u5728\u4efb\u4f55\u65f6\u5019\u52a8\u6001\u5730\u6539\u53d8\u590d\u5236\u7684\u6570\u91cf\uff0c\u4f46\u662f\u4f60\u4e8b\u540e\u4e0d\u80fd\u6539\u53d8\u5206\u7247\u7684\u6570\u91cf\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c Elasticsearch \u4e2d\u7684\u6bcf\u4e2a\u7d22\u5f15\u88ab\u5206\u7247 1 \u4e2a\u4e3b\u5206\u7247\u548c 1 \u4e2a\u590d\u5236\uff0c\u8fd9\u610f\u5473\u7740\uff0c\u5982\u679c\u4f60\u7684\u96c6\u7fa4\u4e2d\u81f3\u5c11 \u6709\u4e24\u4e2a\u8282\u70b9\uff0c\u4f60\u7684\u7d22\u5f15\u5c06\u4f1a\u6709 1 \u4e2a\u4e3b\u5206\u7247\u548c\u53e6\u5916 1 \u4e2a\u590d\u5236\u5206\u7247\uff081 \u4e2a\u5b8c\u5168\u62f7\u8d1d\uff09\uff0c\u8fd9\u6837\u7684\u8bdd \u6bcf\u4e2a\u7d22\u5f15\u603b\u5171\u5c31\u6709 2 \u4e2a\u5206\u7247\uff0c\u6211\u4eec\u9700\u8981\u6839\u636e\u7d22\u5f15\u9700\u8981\u786e\u5b9a\u5206\u7247\u4e2a\u6570\u3002 <\/p>\n<p>4.1.8 \u5206\u914d\uff08Allocation\uff09 <\/p>\n<p>\u5c06\u5206\u7247\u5206\u914d\u7ed9\u67d0\u4e2a\u8282\u70b9\u7684\u8fc7\u7a0b\uff0c\u5305\u62ec\u5206\u914d\u4e3b\u5206\u7247\u6216\u8005\u526f\u672c\u3002\u5982\u679c\u662f\u526f\u672c\uff0c\u8fd8\u5305\u542b\u4ece\u4e3b\u5206 \u7247\u590d\u5236\u6570\u636e\u7684\u8fc7\u7a0b\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u662f\u7531 master \u8282\u70b9\u5b8c\u6210\u7684\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525170939292.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525170939292.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525170939292\" \/><\/div><\/p>\n<h3>4.2 \u7cfb\u7edf\u67b6\u6784<\/h3>\n<p>\u4e00\u4e2a\u8fd0\u884c\u4e2d\u7684 Elasticsearch \u5b9e\u4f8b\u79f0\u4e3a\u4e00\u4e2a\u8282\u70b9\uff0c\u800c\u96c6\u7fa4\u662f\u7531\u4e00\u4e2a\u6216\u8005\u591a\u4e2a\u62e5\u6709\u76f8\u540c cluster.name \u914d\u7f6e\u7684\u8282\u70b9\u7ec4\u6210\uff0c \u5b83\u4eec\u5171\u540c\u627f\u62c5\u6570\u636e\u548c\u8d1f\u8f7d\u7684\u538b\u529b\u3002\u5f53\u6709\u8282\u70b9\u52a0\u5165\u96c6\u7fa4\u4e2d\u6216\u8005 \u4ece\u96c6\u7fa4\u4e2d\u79fb\u9664\u8282\u70b9\u65f6\uff0c\u96c6\u7fa4\u5c06\u4f1a\u91cd\u65b0\u5e73\u5747\u5206\u5e03\u6240\u6709\u7684\u6570\u636e\u3002 <\/p>\n<p>\u5f53\u4e00\u4e2a\u8282\u70b9\u88ab\u9009\u4e3e\u6210\u4e3a\u4e3b\u8282\u70b9\u65f6\uff0c \u5b83\u5c06\u8d1f\u8d23\u7ba1\u7406\u96c6\u7fa4\u8303\u56f4\u5185\u7684\u6240\u6709\u53d8\u66f4\uff0c\u4f8b\u5982\u589e\u52a0\u3001 \u5220\u9664\u7d22\u5f15\uff0c\u6216\u8005\u589e\u52a0\u3001\u5220\u9664\u8282\u70b9\u7b49\u3002 \u800c\u4e3b\u8282\u70b9\u5e76\u4e0d\u9700\u8981\u6d89\u53ca\u5230\u6587\u6863\u7ea7\u522b\u7684\u53d8\u66f4\u548c\u641c\u7d22\u7b49\u64cd \u4f5c\uff0c\u6240\u4ee5\u5f53\u96c6\u7fa4\u53ea\u62e5\u6709\u4e00\u4e2a\u4e3b\u8282\u70b9\u7684\u60c5\u51b5\u4e0b\uff0c\u5373\u4f7f\u6d41\u91cf\u7684\u589e\u52a0\u5b83\u4e5f\u4e0d\u4f1a\u6210\u4e3a\u74f6\u9888\u3002 \u4efb\u4f55\u8282 \u70b9\u90fd\u53ef\u4ee5\u6210\u4e3a\u4e3b\u8282\u70b9\u3002\u6211\u4eec\u7684\u793a\u4f8b\u96c6\u7fa4\u5c31\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\uff0c\u6240\u4ee5\u5b83\u540c\u65f6\u4e5f\u6210\u4e3a\u4e86\u4e3b\u8282\u70b9\u3002 <\/p>\n<p>\u4f5c\u4e3a\u7528\u6237\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u8bf7\u6c42\u53d1\u9001\u5230\u96c6\u7fa4\u4e2d\u7684\u4efb\u4f55\u8282\u70b9 \uff0c\u5305\u62ec\u4e3b\u8282\u70b9\u3002 \u6bcf\u4e2a\u8282\u70b9\u90fd\u77e5\u9053 \u4efb\u610f\u6587\u6863\u6240\u5904\u7684\u4f4d\u7f6e\uff0c\u5e76\u4e14\u80fd\u591f\u5c06\u6211\u4eec\u7684\u8bf7\u6c42\u76f4\u63a5\u8f6c\u53d1\u5230\u5b58\u50a8\u6211\u4eec\u6240\u9700\u6587\u6863\u7684\u8282\u70b9\u3002 \u65e0\u8bba \u6211\u4eec\u5c06\u8bf7\u6c42\u53d1\u9001\u5230\u54ea\u4e2a\u8282\u70b9\uff0c\u5b83\u90fd\u80fd\u8d1f\u8d23\u4ece\u5404\u4e2a\u5305\u542b\u6211\u4eec\u6240\u9700\u6587\u6863\u7684\u8282\u70b9\u6536\u96c6\u56de\u6570\u636e\uff0c\u5e76\u5c06 \u6700\u7ec8\u7ed3\u679c\u8fd4\u56de\u7d66\u5ba2\u6237\u7aef\u3002 Elasticsearch \u5bf9\u8fd9\u4e00\u5207\u7684\u7ba1\u7406\u90fd\u662f\u900f\u660e\u7684\u3002 <\/p>\n<h3>4.3 \u5206\u5e03\u5f0f\u96c6\u7fa4<\/h3>\n<p>4.3.1 \u5355\u8282\u70b9\u96c6\u7fa4 <\/p>\n<p>\u6211\u4eec\u5728\u5305\u542b\u4e00\u4e2a\u7a7a\u8282\u70b9\u7684\u96c6\u7fa4\u5185\u521b\u5efa\u540d\u4e3a users \u7684\u7d22\u5f15\uff0c\u4e3a\u4e86\u6f14\u793a\u76ee\u7684\uff0c\u6211\u4eec\u5c06\u5206\u914d 3 \u4e2a\u4e3b\u5206\u7247\u548c\u4e00\u4efd\u526f\u672c\uff08\u6bcf\u4e2a\u4e3b\u5206\u7247\u62e5\u6709\u4e00\u4e2a\u526f\u672c\u5206\u7247\uff09 <\/p>\n<pre><code class=\"language-json\">{\n    &quot;settings&quot;: {\n        &quot;number_of_shards&quot;: 3,\n        &quot;number_of_replicas&quot;: 1\n    }\n}<\/code><\/pre>\n<p>\u6211\u4eec\u7684\u96c6\u7fa4\u73b0\u5728\u662f\u62e5\u6709\u4e00\u4e2a\u7d22\u5f15\u7684\u5355\u8282\u70b9\u96c6\u7fa4\u3002\u6240\u6709 3 \u4e2a\u4e3b\u5206\u7247\u90fd\u88ab\u5206\u914d\u5728 node-1 \u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171654454.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171654454.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525171654454\" \/><\/div><\/p>\n<p>\u901a\u8fc7 elasticsearch-head \u63d2\u4ef6\u67e5\u770b\u96c6\u7fa4\u60c5\u51b5 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171712906.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171712906.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525171712906\" \/><\/div><\/p>\n<p>\u5f53\u524d\u6211\u4eec\u7684\u96c6\u7fa4\u662f\u6b63\u5e38\u8fd0\u884c\u7684\uff0c\u4f46\u662f\u5728\u786c\u4ef6\u6545\u969c\u65f6\u6709\u4e22\u5931\u6570\u636e\u7684\u98ce\u9669\u3002 <\/p>\n<p>4.3.2 \u6545\u969c\u8f6c\u79fb <\/p>\n<p>\u200b   \u5f53\u96c6\u7fa4\u4e2d\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\u5728\u8fd0\u884c\u65f6\uff0c\u610f\u5473\u7740\u4f1a\u6709\u4e00\u4e2a\u5355\u70b9\u6545\u969c\u95ee\u9898\u2014\u2014\u6ca1\u6709\u5197\u4f59\u3002 \u5e78\u8fd0 \u7684\u662f\uff0c\u6211\u4eec\u53ea\u9700\u518d\u542f\u52a8\u4e00\u4e2a\u8282\u70b9\u5373\u53ef\u9632\u6b62\u6570\u636e\u4e22\u5931\u3002\u5f53\u4f60\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\u542f\u52a8\u4e86\u7b2c\u4e8c\u4e2a\u8282\u70b9 \u65f6\uff0c\u53ea\u8981\u5b83\u548c\u7b2c\u4e00\u4e2a\u8282\u70b9\u6709\u540c\u6837\u7684 cluster.name \u914d\u7f6e\uff0c\u5b83\u5c31\u4f1a\u81ea\u52a8\u53d1\u73b0\u96c6\u7fa4\u5e76\u52a0\u5165\u5230\u5176\u4e2d\u3002 \u4f46\u662f\u5728\u4e0d\u540c\u673a\u5668\u4e0a\u542f\u52a8\u8282\u70b9\u7684\u65f6\u5019\uff0c\u4e3a\u4e86\u52a0\u5165\u5230\u540c\u4e00\u96c6\u7fa4\uff0c\u4f60\u9700\u8981\u914d\u7f6e\u4e00\u4e2a\u53ef\u8fde\u63a5\u5230\u7684\u5355\u64ad \u4e3b\u673a\u5217\u8868\u3002\u4e4b\u6240\u4ee5\u914d\u7f6e\u4e3a\u4f7f\u7528\u5355\u64ad\u53d1\u73b0\uff0c\u4ee5\u9632\u6b62\u8282\u70b9\u65e0\u610f\u4e2d\u52a0\u5165\u96c6\u7fa4\u3002\u53ea\u6709\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a \u8fd0\u884c\u7684\u8282\u70b9\u624d\u4f1a\u81ea\u52a8\u7ec4\u6210\u96c6\u7fa4\u3002 <\/p>\n<p>\u200b   \u5982\u679c\u542f\u52a8\u4e86\u7b2c\u4e8c\u4e2a\u8282\u70b9\uff0c\u6211\u4eec\u7684\u96c6\u7fa4\u5c06\u4f1a\u62e5\u6709\u4e24\u4e2a\u8282\u70b9\u7684\u96c6\u7fa4 : \u6240\u6709\u4e3b\u5206\u7247\u548c\u526f\u672c\u5206 \u7247\u90fd\u5df2\u88ab\u5206\u914d<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171831283.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171831283.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525171831283\" \/><\/div><\/p>\n<p>\u901a\u8fc7 elasticsearch-head \u63d2\u4ef6\u67e5\u770b\u96c6\u7fa4\u60c5\u51b5 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171913856.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171913856.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525171913856\" \/><\/div><\/p>\n<p>4.3.3 \u6c34\u5e73\u6269\u5bb9<\/p>\n<p>\u600e\u6837\u4e3a\u6211\u4eec\u7684\u6b63\u5728\u589e\u957f\u4e2d\u7684\u5e94\u7528\u7a0b\u5e8f\u6309\u9700\u6269\u5bb9\u5462\uff1f\u5f53\u542f\u52a8\u4e86\u7b2c\u4e09\u4e2a\u8282\u70b9\uff0c\u6211\u4eec\u7684\u96c6\u7fa4\u5c06 \u4f1a\u62e5\u6709\u4e09\u4e2a\u8282\u70b9\u7684\u96c6\u7fa4 : \u4e3a\u4e86\u5206\u6563\u8d1f\u8f7d\u800c\u5bf9\u5206\u7247\u8fdb\u884c\u91cd\u65b0\u5206\u914d <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171955006.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525171955006.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525171955006\" \/><\/div><\/p>\n<p>\u901a\u8fc7 elasticsearch-head \u63d2\u4ef6\u67e5\u770b\u96c6\u7fa4\u60c5\u51b5 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525173440418.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525173440418.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525173440418\" \/><\/div><\/p>\n<p>\u4f46\u662f\u5982\u679c\u6211\u4eec\u60f3\u8981\u6269\u5bb9\u8d85\u8fc7 6 \u4e2a\u8282\u70b9\u600e\u4e48\u529e\u5462\uff1f <\/p>\n<p>\u200b   \u4e3b\u5206\u7247\u7684\u6570\u76ee\u5728\u7d22\u5f15\u521b\u5efa\u65f6\u5c31\u5df2\u7ecf\u786e\u5b9a\u4e86\u4e0b\u6765\u3002\u5b9e\u9645\u4e0a\uff0c\u8fd9\u4e2a\u6570\u76ee\u5b9a\u4e49\u4e86\u8fd9\u4e2a\u7d22\u5f15\u80fd\u591f \u5b58\u50a8 \u7684\u6700\u5927\u6570\u636e\u91cf\u3002\uff08\u5b9e\u9645\u5927\u5c0f\u53d6\u51b3\u4e8e\u4f60\u7684\u6570\u636e\u3001\u786c\u4ef6\u548c\u4f7f\u7528\u573a\u666f\u3002\uff09 \u4f46\u662f\uff0c\u8bfb\u64cd\u4f5c\u2014\u2014 \u641c\u7d22\u548c\u8fd4\u56de\u6570\u636e\u2014\u2014\u53ef\u4ee5\u540c\u65f6\u88ab\u4e3b\u5206\u7247 \u6216 \u526f\u672c\u5206\u7247\u6240\u5904\u7406\uff0c\u6240\u4ee5\u5f53\u4f60\u62e5\u6709\u8d8a\u591a\u7684\u526f\u672c\u5206\u7247 \u65f6\uff0c\u4e5f\u5c06\u62e5\u6709\u8d8a\u9ad8\u7684\u541e\u5410\u91cf\u3002<\/p>\n<pre><code>\u5728\u8fd0\u884c\u4e2d\u7684\u96c6\u7fa4\u4e0a\u662f\u53ef\u4ee5\u52a8\u6001\u8c03\u6574\u526f\u672c\u5206\u7247\u6570\u76ee\u7684\uff0c\u6211\u4eec\u53ef\u4ee5\u6309\u9700\u4f38\u7f29\u96c6\u7fa4\u3002\u8ba9\u6211\u4eec\u628a \u526f\u672c\u6570\u4ece\u9ed8\u8ba4\u7684 1 \u589e\u52a0\u5230 2 <\/code><\/pre>\n<pre><code class=\"language-json\">{ &quot;number_of_replicas&quot; : 2 } <\/code><\/pre>\n<p>users \u7d22\u5f15\u73b0\u5728\u62e5\u6709 9 \u4e2a\u5206\u7247\uff1a3 \u4e2a\u4e3b\u5206\u7247\u548c 6 \u4e2a\u526f\u672c\u5206\u7247\u3002 \u8fd9\u610f\u5473\u7740\u6211\u4eec\u53ef\u4ee5\u5c06\u96c6\u7fa4 \u6269\u5bb9\u5230 9 \u4e2a\u8282\u70b9\uff0c\u6bcf\u4e2a\u8282\u70b9\u4e0a\u4e00\u4e2a\u5206\u7247\u3002\u76f8\u6bd4\u539f\u6765 3 \u4e2a\u8282\u70b9\u65f6\uff0c\u96c6\u7fa4\u641c\u7d22\u6027\u80fd\u53ef\u4ee5\u63d0\u5347 3 \u500d\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525173637487.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525173637487.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525173637487\" \/><\/div><\/p>\n<p>\u901a\u8fc7 elasticsearch-head \u63d2\u4ef6\u67e5\u770b\u96c6\u7fa4\u60c5\u51b5 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525173651573.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525173651573.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525173651573\" \/><\/div><\/p>\n<p>\u200b   \u5f53\u7136\uff0c\u5982\u679c\u53ea\u662f\u5728\u76f8\u540c\u8282\u70b9\u6570\u76ee\u7684\u96c6\u7fa4\u4e0a\u589e\u52a0\u66f4\u591a\u7684\u526f\u672c\u5206\u7247\u5e76\u4e0d\u80fd\u63d0\u9ad8\u6027\u80fd\uff0c\u56e0\u4e3a\u6bcf \u4e2a\u5206\u7247\u4ece\u8282\u70b9\u4e0a\u83b7\u5f97\u7684\u8d44\u6e90\u4f1a\u53d8\u5c11\u3002 \u4f60\u9700\u8981\u589e\u52a0\u66f4\u591a\u7684\u786c\u4ef6\u8d44\u6e90\u6765\u63d0\u5347\u541e\u5410\u91cf\u3002 <\/p>\n<p>\u200b   \u4f46\u662f\u66f4\u591a\u7684\u526f\u672c\u5206\u7247\u6570\u63d0\u9ad8\u4e86\u6570\u636e\u5197\u4f59\u91cf\uff1a\u6309\u7167\u4e0a\u9762\u7684\u8282\u70b9\u914d\u7f6e\uff0c\u6211\u4eec\u53ef\u4ee5\u5728\u5931\u53bb 2 \u4e2a\u8282\u70b9 \u7684\u60c5\u51b5\u4e0b\u4e0d\u4e22\u5931\u4efb\u4f55\u6570\u636e\u3002 <\/p>\n<p>4.3.4 \u5e94\u5bf9\u6545\u969c <\/p>\n<p>\u6211\u4eec\u5173\u95ed\u7b2c\u4e00\u4e2a\u8282\u70b9\uff0c\u8fd9\u65f6\u96c6\u7fa4\u7684\u72b6\u6001\u4e3a:\u5173\u95ed\u4e86\u4e00\u4e2a\u8282\u70b9\u540e\u7684\u96c6\u7fa4\u3002 <\/p>\n<p>\u6211\u4eec\u5173\u95ed\u7684\u8282\u70b9\u662f\u4e00\u4e2a\u4e3b\u8282\u70b9\u3002\u800c\u96c6\u7fa4\u5fc5\u987b\u62e5\u6709\u4e00\u4e2a\u4e3b\u8282\u70b9\u6765\u4fdd\u8bc1\u6b63\u5e38\u5de5\u4f5c\uff0c\u6240\u4ee5\u53d1\u751f \u7684\u7b2c\u4e00\u4ef6\u4e8b\u60c5\u5c31\u662f\u9009\u4e3e\u4e00\u4e2a\u65b0\u7684\u4e3b\u8282\u70b9\uff1a Node 2 \u3002\u5728\u6211\u4eec\u5173\u95ed Node 1 \u7684\u540c\u65f6\u4e5f\u5931\u53bb\u4e86\u4e3b \u5206\u7247 1 \u548c 2 \uff0c\u5e76\u4e14\u5728\u7f3a\u5931\u4e3b\u5206\u7247\u7684\u65f6\u5019\u7d22\u5f15\u4e5f\u4e0d\u80fd\u6b63\u5e38\u5de5\u4f5c\u3002 \u5982\u679c\u6b64\u65f6\u6765\u68c0\u67e5\u96c6\u7fa4\u7684\u72b6 \u51b5\uff0c\u6211\u4eec\u770b\u5230\u7684\u72b6\u6001\u5c06\u4f1a\u4e3a red \uff1a\u4e0d\u662f\u6240\u6709\u4e3b\u5206\u7247\u90fd\u5728\u6b63\u5e38\u5de5\u4f5c\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525195826216.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525195826216.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525195826216\" \/><\/div><\/p>\n<p>\u5e78\u8fd0\u7684\u662f\uff0c\u5728\u5176\u5b83\u8282\u70b9\u4e0a\u5b58\u5728\u7740\u8fd9\u4e24\u4e2a\u4e3b\u5206\u7247\u7684\u5b8c\u6574\u526f\u672c\uff0c \u6240\u4ee5\u65b0\u7684\u4e3b\u8282\u70b9\u7acb\u5373\u5c06\u8fd9 \u4e9b\u5206\u7247\u5728 Node 2 \u548c Node 3 \u4e0a\u5bf9\u5e94\u7684\u526f\u672c\u5206\u7247\u63d0\u5347\u4e3a\u4e3b\u5206\u7247\uff0c \u6b64\u65f6\u96c6\u7fa4\u7684\u72b6\u6001\u5c06\u4f1a\u4e3a yellow\u3002\u8fd9\u4e2a\u63d0\u5347\u4e3b\u5206\u7247\u7684\u8fc7\u7a0b\u662f\u77ac\u95f4\u53d1\u751f\u7684\uff0c\u5982\u540c\u6309\u4e0b\u4e00\u4e2a\u5f00\u5173\u4e00\u822c\u3002 <\/p>\n<p>\u4e3a\u4ec0\u4e48\u6211\u4eec\u96c6\u7fa4\u72b6\u6001\u662f yellow \u800c\u4e0d\u662f green \u5462\uff1f<\/p>\n<p>\u867d\u7136\u6211\u4eec\u62e5\u6709\u6240\u6709\u7684\u4e09\u4e2a\u4e3b\u5206\u7247\uff0c\u4f46\u662f\u540c\u65f6\u8bbe\u7f6e\u4e86\u6bcf\u4e2a\u4e3b\u5206\u7247\u9700\u8981\u5bf9\u5e94 2 \u4efd\u526f\u672c\u5206\u7247\uff0c\u800c\u6b64 \u65f6\u53ea\u5b58\u5728\u4e00\u4efd\u526f\u672c\u5206\u7247\u3002 \u6240\u4ee5\u96c6\u7fa4\u4e0d\u80fd\u4e3a green \u7684\u72b6\u6001\uff0c\u4e0d\u8fc7\u6211\u4eec\u4e0d\u5fc5\u8fc7\u4e8e\u62c5\u5fc3\uff1a\u5982\u679c\u6211 \u4eec\u540c\u6837\u5173\u95ed\u4e86 Node 2 \uff0c\u6211\u4eec\u7684\u7a0b\u5e8f \u4f9d\u7136 \u53ef\u4ee5\u4fdd\u6301\u5728\u4e0d\u4e22\u4efb\u4f55\u6570\u636e\u7684\u60c5\u51b5\u4e0b\u8fd0\u884c\uff0c\u56e0\u4e3a Node 3 \u4e3a\u6bcf\u4e00\u4e2a\u5206\u7247\u90fd\u4fdd\u7559\u7740\u4e00\u4efd\u526f\u672c\u3002<\/p>\n<p>\u5982\u679c\u6211\u4eec\u91cd\u65b0\u542f\u52a8 Node 1 \uff0c\u96c6\u7fa4\u53ef\u4ee5\u5c06\u7f3a\u5931\u7684\u526f\u672c\u5206\u7247\u518d\u6b21\u8fdb\u884c\u5206\u914d\uff0c\u90a3\u4e48\u96c6\u7fa4\u7684\u72b6 \u6001\u4e5f\u5c06\u6062\u590d\u6210\u4e4b\u524d\u7684\u72b6\u6001\u3002 \u5982\u679c Node 1 \u4f9d\u7136\u62e5\u6709\u7740\u4e4b\u524d\u7684\u5206\u7247\uff0c\u5b83\u5c06\u5c1d\u8bd5\u53bb\u91cd\u7528\u5b83\u4eec\uff0c \u540c\u65f6\u4ec5\u4ece\u4e3b\u5206\u7247\u590d\u5236\u53d1\u751f\u4e86\u4fee\u6539\u7684\u6570\u636e\u6587\u4ef6\u3002\u548c\u4e4b\u524d\u7684\u96c6\u7fa4\u76f8\u6bd4\uff0c\u53ea\u662f Master \u8282\u70b9\u5207\u6362\u4e86\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525195942490.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525195942490.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525195942490\" \/><\/div><\/p>\n<h3>4.4 \u8def\u7531\u8ba1\u7b97<\/h3>\n<p>\u5f53\u7d22\u5f15\u4e00\u4e2a\u6587\u6863\u7684\u65f6\u5019\uff0c\u6587\u6863\u4f1a\u88ab\u5b58\u50a8\u5230\u4e00\u4e2a\u4e3b\u5206\u7247\u4e2d\u3002 Elasticsearch \u5982\u4f55\u77e5\u9053\u4e00\u4e2a \u6587\u6863\u5e94\u8be5\u5b58\u653e\u5230\u54ea\u4e2a\u5206\u7247\u4e2d\u5462\uff1f\u5f53\u6211\u4eec\u521b\u5efa\u6587\u6863\u65f6\uff0c\u5b83\u5982\u4f55\u51b3\u5b9a\u8fd9\u4e2a\u6587\u6863\u5e94\u5f53\u88ab\u5b58\u50a8\u5728\u5206\u7247 1 \u8fd8\u662f\u5206\u7247 2 \u4e2d\u5462\uff1f\u9996\u5148\u8fd9\u80af\u5b9a\u4e0d\u4f1a\u662f\u968f\u673a\u7684\uff0c\u5426\u5219\u5c06\u6765\u8981\u83b7\u53d6\u6587\u6863\u7684\u65f6\u5019\u6211\u4eec\u5c31\u4e0d\u77e5\u9053 \u4ece\u4f55\u5904\u5bfb\u627e\u4e86\u3002\u5b9e\u9645\u4e0a\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u662f\u6839\u636e\u4e0b\u9762\u8fd9\u4e2a\u516c\u5f0f\u51b3\u5b9a\u7684\uff1a <\/p>\n<pre><code class=\"language-markdown\">shard = hash(routing) % number_of_primary_shards<\/code><\/pre>\n<p>routing \u662f\u4e00\u4e2a\u53ef\u53d8\u503c\uff0c\u9ed8\u8ba4\u662f\u6587\u6863\u7684 _id \uff0c\u4e5f\u53ef\u4ee5\u8bbe\u7f6e\u6210\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684\u503c\u3002 routing \u901a\u8fc7 hash \u51fd\u6570\u751f\u6210\u4e00\u4e2a\u6570\u5b57\uff0c\u7136\u540e\u8fd9\u4e2a\u6570\u5b57\u518d\u9664\u4ee5 number_of_primary_shards \uff08\u4e3b\u5206\u7247\u7684\u6570\u91cf\uff09 \u540e\u5f97\u5230\u4f59\u6570 \u3002\u8fd9\u4e2a\u5206\u5e03\u5728 0 \u5230 number_of_primary_shards-1 \u4e4b\u95f4\u7684\u4f59\u6570\uff0c\u5c31\u662f\u6211\u4eec\u6240\u5bfb\u6c42 \u7684\u6587\u6863\u6240\u5728\u5206\u7247\u7684\u4f4d\u7f6e\u3002 <\/p>\n<p>\u200b   \u8fd9\u5c31\u89e3\u91ca\u4e86\u4e3a\u4ec0\u4e48\u6211\u4eec\u8981\u5728\u521b\u5efa\u7d22\u5f15\u7684\u65f6\u5019\u5c31\u786e\u5b9a\u597d\u4e3b\u5206\u7247\u7684\u6570\u91cf \u5e76\u4e14\u6c38\u8fdc\u4e0d\u4f1a\u6539\u53d8 \u8fd9\u4e2a\u6570\u91cf\uff1a\u56e0\u4e3a\u5982\u679c\u6570\u91cf\u53d8\u5316\u4e86\uff0c\u90a3\u4e48\u6240\u6709\u4e4b\u524d\u8def\u7531\u7684\u503c\u90fd\u4f1a\u65e0\u6548\uff0c\u6587\u6863\u4e5f\u518d\u4e5f\u627e\u4e0d\u5230\u4e86\u3002 <\/p>\n<p>\u200b   \u6240\u6709\u7684\u6587\u6863 API\uff08 get \u3001 index \u3001 delete \u3001 bulk \u3001 update \u4ee5\u53ca mget \uff09\u90fd\u63a5\u53d7\u4e00 \u4e2a\u53eb\u505a routing \u7684\u8def\u7531\u53c2\u6570 \uff0c\u901a\u8fc7\u8fd9\u4e2a\u53c2\u6570\u6211\u4eec\u53ef\u4ee5\u81ea\u5b9a\u4e49\u6587\u6863\u5230\u5206\u7247\u7684\u6620\u5c04\u3002\u4e00\u4e2a\u81ea\u5b9a \u4e49\u7684\u8def\u7531\u53c2\u6570\u53ef\u4ee5\u7528\u6765\u786e\u4fdd\u6240\u6709\u76f8\u5173\u7684\u6587\u6863\u2014\u2014\u4f8b\u5982\u6240\u6709\u5c5e\u4e8e\u540c\u4e00\u4e2a\u7528\u6237\u7684\u6587\u6863\u2014\u2014\u90fd\u88ab \u5b58\u50a8\u5230\u540c\u4e00\u4e2a\u5206\u7247\u4e2d\u3002 <\/p>\n<h3>4.5 \u5206\u7247\u63a7\u5236<\/h3>\n<p>\u6211\u4eec\u5047\u8bbe\u6709\u4e00\u4e2a\u96c6\u7fa4\u7531\u4e09\u4e2a\u8282\u70b9\u7ec4\u6210\u3002 \u5b83\u5305\u542b\u4e00\u4e2a\u53eb emps \u7684\u7d22\u5f15\uff0c\u6709\u4e24\u4e2a\u4e3b\u5206\u7247\uff0c \u6bcf\u4e2a\u4e3b\u5206\u7247\u6709\u4e24\u4e2a\u526f\u672c\u5206\u7247\u3002\u76f8\u540c\u5206\u7247\u7684\u526f\u672c\u4e0d\u4f1a\u653e\u5728\u540c\u4e00\u8282\u70b9\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525200325918.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525200325918.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525200325918\" \/><\/div><\/p>\n<p>\u901a\u8fc7 elasticsearch-head \u63d2\u4ef6\u67e5\u770b\u96c6\u7fa4\u60c5\u51b5\uff0c\u6240\u4ee5\u6211\u4eec\u7684\u96c6\u7fa4\u662f\u4e00\u4e2a\u6709\u4e09\u4e2a\u8282\u70b9\u548c\u4e00\u4e2a\u7d22 \u5f15\u7684\u96c6\u7fa4\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525200346329.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525200346329.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525200346329\" \/><\/div><\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u53d1\u9001\u8bf7\u6c42\u5230\u96c6\u7fa4\u4e2d\u7684\u4efb\u4e00\u8282\u70b9\u3002 \u6bcf\u4e2a\u8282\u70b9\u90fd\u6709\u80fd\u529b\u5904\u7406\u4efb\u610f\u8bf7\u6c42\u3002 \u6bcf\u4e2a\u8282\u70b9\u90fd\u77e5 \u9053\u96c6\u7fa4\u4e2d\u4efb\u4e00\u6587\u6863\u4f4d\u7f6e\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u5c06\u8bf7\u6c42\u8f6c\u53d1\u5230\u9700\u8981\u7684\u8282\u70b9\u4e0a\u3002 \u5728\u4e0b\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u5c06 \u6240\u6709\u7684\u8bf7\u6c42\u53d1\u9001\u5230 Node 1\uff0c\u6211\u4eec\u5c06\u5176\u79f0\u4e3a \u534f\u8c03\u8282\u70b9(coordinating node) \u3002 <\/p>\n<p><strong>\u5f53\u53d1\u9001\u8bf7\u6c42\u7684\u65f6\u5019\uff0c \u4e3a\u4e86\u6269\u5c55\u8d1f\u8f7d\uff0c\u66f4\u597d\u7684\u505a\u6cd5\u662f\u8f6e\u8be2\u96c6\u7fa4\u4e2d\u6240\u6709\u7684\u8282\u70b9\u3002<\/strong> <\/p>\n<p>4.5.1 \u5199\u6d41\u7a0b<\/p>\n<p>\u65b0\u5efa\u3001\u7d22\u5f15\u548c\u5220\u9664 \u8bf7\u6c42\u90fd\u662f \u5199 \u64cd\u4f5c\uff0c \u5fc5\u987b\u5728\u4e3b\u5206\u7247\u4e0a\u9762\u5b8c\u6210\u4e4b\u540e\u624d\u80fd\u88ab\u590d\u5236\u5230\u76f8\u5173 \u7684\u526f\u672c\u5206\u7247<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525201935394.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525201935394.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525201935394\" \/><\/div><\/p>\n<p>\u65b0\u5efa\uff0c\u7d22\u5f15\u548c\u5220\u9664\u6587\u6863\u6240\u9700\u8981\u7684\u6b65\u9aa4\u987a\u5e8f\uff1a <\/p>\n<ol>\n<li>\n<p>\u5ba2\u6237\u7aef\u5411 Node 1 \u53d1\u9001\u65b0\u5efa\u3001\u7d22\u5f15\u6216\u8005\u5220\u9664\u8bf7\u6c42\u3002 <\/p>\n<\/li>\n<li>\n<p>\u8282\u70b9\u4f7f\u7528\u6587\u6863\u7684 _id \u786e\u5b9a\u6587\u6863\u5c5e\u4e8e\u5206\u7247 0 \u3002\u8bf7\u6c42\u4f1a\u88ab\u8f6c\u53d1\u5230 Node 3\uff0c\u56e0\u4e3a\u5206\u7247 0 \u7684 \u4e3b\u5206\u7247\u76ee\u524d\u88ab\u5206\u914d\u5728 Node 3 \u4e0a\u3002 <\/p>\n<\/li>\n<li>\n<p>Node 3 \u5728\u4e3b\u5206\u7247\u4e0a\u9762\u6267\u884c\u8bf7\u6c42\u3002\u5982\u679c\u6210\u529f\u4e86\uff0c\u5b83\u5c06\u8bf7\u6c42\u5e76\u884c\u8f6c\u53d1\u5230 Node 1 \u548c Node 2 \u7684\u526f\u672c\u5206\u7247\u4e0a\u3002\u4e00\u65e6\u6240\u6709\u7684\u526f\u672c\u5206\u7247\u90fd\u62a5\u544a\u6210\u529f, Node 3 \u5c06\u5411\u534f\u8c03\u8282\u70b9\u62a5\u544a\u6210\u529f\uff0c\u534f\u8c03 \u8282\u70b9\u5411\u5ba2\u6237\u7aef\u62a5\u544a\u6210\u529f\u3002 <\/p>\n<\/li>\n<\/ol>\n<p>\u5728\u5ba2\u6237\u7aef\u6536\u5230\u6210\u529f\u54cd\u5e94\u65f6\uff0c\u6587\u6863\u53d8\u66f4\u5df2\u7ecf\u5728\u4e3b\u5206\u7247\u548c\u6240\u6709\u526f\u672c\u5206\u7247\u6267\u884c\u5b8c\u6210\uff0c\u53d8\u66f4\u662f\u5b89\u5168\u7684\u3002 \u6709\u4e00\u4e9b\u53ef\u9009\u7684\u8bf7\u6c42\u53c2\u6570\u5141\u8bb8\u60a8\u5f71\u54cd\u8fd9\u4e2a\u8fc7\u7a0b\uff0c\u53ef\u80fd\u4ee5\u6570\u636e\u5b89\u5168\u4e3a\u4ee3\u4ef7\u63d0\u5347\u6027\u80fd\u3002\u8fd9\u4e9b\u9009\u9879\u5f88 \u5c11\u4f7f\u7528\uff0c\u56e0\u4e3a Elasticsearch \u5df2\u7ecf\u5f88\u5feb\uff0c\u4f46\u662f\u4e3a\u4e86\u5b8c\u6574\u8d77\u89c1\uff0c\u8bf7\u53c2\u8003\u4e0b\u9762\u8868\u683c\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th>\u53c2\u6570<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>consistency<\/td>\n<td>consistency\uff0c\u5373\u4e00\u81f4\u6027\u3002\u5728\u9ed8\u8ba4\u8bbe\u7f6e\u4e0b\uff0c\u5373\u4f7f\u4ec5\u4ec5\u662f\u5728\u8bd5\u56fe\u6267\u884c\u4e00\u4e2a_\u5199_\u64cd\u4f5c\u4e4b \u524d\uff0c\u4e3b\u5206\u7247\u90fd\u4f1a\u8981\u6c42 \u5fc5\u987b\u8981\u6709 \u89c4\u5b9a\u6570\u91cf(quorum)\uff08\u6216\u8005\u6362\u79cd\u8bf4\u6cd5\uff0c\u4e5f\u5373\u5fc5\u987b\u8981 \u6709\u5927\u591a\u6570\uff09\u7684\u5206\u7247\u526f\u672c\u5904\u4e8e\u6d3b\u8dc3\u53ef\u7528\u72b6\u6001\uff0c\u624d\u4f1a\u53bb\u6267\u884c_\u5199_\u64cd\u4f5c(\u5176\u4e2d\u5206\u7247\u526f\u672c \u53ef\u4ee5\u662f\u4e3b\u5206\u7247\u6216\u8005\u526f\u672c\u5206\u7247)\u3002\u8fd9\u662f\u4e3a\u4e86\u907f\u514d\u5728\u53d1\u751f\u7f51\u7edc\u5206\u533a\u6545\u969c\uff08network partition\uff09\u7684\u65f6\u5019\u8fdb\u884c_\u5199_\u64cd\u4f5c\uff0c\u8fdb\u800c\u5bfc\u81f4\u6570\u636e\u4e0d\u4e00\u81f4\u3002_\u89c4\u5b9a\u6570\u91cf_\u5373\uff1a <br \/>int( (primary + number_of_replicas) \/ 2 ) + 1 <br \/>consistency \u53c2\u6570\u7684\u503c\u53ef\u4ee5\u8bbe\u4e3a one \uff08\u53ea\u8981\u4e3b\u5206\u7247\u72b6\u6001 ok \u5c31\u5141\u8bb8\u6267\u884c_\u5199_\u64cd \u4f5c\uff09,all\uff08\u5fc5\u987b\u8981\u4e3b\u5206\u7247\u548c\u6240\u6709\u526f\u672c\u5206\u7247\u7684\u72b6\u6001\u6ca1\u95ee\u9898\u624d\u5141\u8bb8\u6267\u884c_\u5199_\u64cd\u4f5c\uff09, \u6216 quorum \u3002\u9ed8\u8ba4\u503c\u4e3a quorum , \u5373\u5927\u591a\u6570\u7684\u5206\u7247\u526f\u672c\u72b6\u6001\u6ca1\u95ee\u9898\u5c31\u5141\u8bb8\u6267\u884c<em>\u5199<\/em> \u64cd\u4f5c\u3002 <br \/>\u6ce8\u610f\uff0c\u89c4\u5b9a\u6570\u91cf\u7684\u8ba1\u7b97\u516c\u5f0f\u4e2dnumber_of_replicas\u6307\u7684\u662f\u5728\u7d22\u5f15\u8bbe\u7f6e\u4e2d\u7684\u8bbe\u5b9a\u526f\u672c\u5206\u7247\u6570\uff0c\u800c\u4e0d\u662f\u6307\u5f53\u524d\u5904\u7406\u6d3b\u52a8\u72b6\u6001\u7684\u526f\u672c\u5206\u7247\u6570\u3002\u5982\u679c\u4f60\u7684\u7d22\u5f15\u8bbe\u7f6e\u4e2d\u6307\u5b9a\u4e86\u5f53\u524d\u7d22\u5f15\u62e5\u6709\u4e09\u4e2a\u526f\u672c\u5206\u7247\uff0c\u90a3\u89c4\u5b9a\u6570\u91cf\u7684\u8ba1\u7b97\u7ed3\u679c\u5373\uff1a<br \/>int((primary+3 replicas)\/2 )+1 =  3<br \/>\u5982\u679c\u6b64\u65f6\u4f60\u53ea\u542f\u52a8\u4e24\u4e2a\u8282\u70b9\uff0c\u90a3\u4e48\u5904\u4e8e\u6d3b\u8dc3\u72b6\u6001\u7684\u5206\u7247\u526f\u672c\u6570\u91cf\u5c31\u8fbe\u4e0d\u5230\u89c4\u5b9a\u6570\u91cf\uff0c\u4e5f\u56e0\u6b64\u60a8\u5c06\u65e0\u6cd5\u7d22\u5f15\u548c\u5220\u9664\u4efb\u4f55\u6587\u6863\u3002<\/td>\n<\/tr>\n<tr>\n<td>timeout<\/td>\n<td>\u5982\u679c\u6ca1\u6709\u8db3\u591f\u7684\u526f\u672c\u5206\u7247\u4f1a\u53d1\u751f\u4ec0\u4e48\uff1f Elasticsearch \u4f1a\u7b49\u5f85\uff0c\u5e0c\u671b\u66f4\u591a\u7684\u5206\u7247\u51fa \u73b0\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u5b83\u6700\u591a\u7b49\u5f85 1 \u5206\u949f\u3002 \u5982\u679c\u4f60\u9700\u8981\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528 timeout \u53c2\u6570 \u4f7f\u5b83\u66f4\u65e9\u7ec8\u6b62\uff1a 100 100 \u6beb\u79d2\uff0c30s \u662f 30 \u79d2\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>\u65b0\u7d22\u5f15\u9ed8\u8ba4\u6709 1 \u4e2a\u526f\u672c\u5206\u7247\uff0c\u8fd9\u610f\u5473\u7740\u4e3a\u6ee1\u8db3\u89c4\u5b9a\u6570\u91cf\u5e94\u8be5\u9700\u8981\u4e24\u4e2a\u6d3b\u52a8\u7684\u5206\u7247\u526f\u672c\u3002 \u4f46\u662f\uff0c\u8fd9\u4e9b \u9ed8\u8ba4\u7684\u8bbe\u7f6e\u4f1a\u963b\u6b62\u6211\u4eec\u5728\u5355\u4e00\u8282\u70b9\u4e0a\u505a\u4efb\u4f55\u4e8b\u60c5\u3002\u4e3a\u4e86\u907f\u514d\u8fd9\u4e2a\u95ee\u9898\uff0c\u8981\u6c42\u53ea\u6709\u5f53 number_of_replicas \u5927 \u4e8e 1 \u7684\u65f6\u5019\uff0c\u89c4\u5b9a\u6570\u91cf\u624d\u4f1a\u6267\u884c\u3002<\/strong> <\/p>\n<p>4.5.2 \u8bfb\u6d41\u7a0b <\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u4ece\u4e3b\u5206\u7247\u6216\u8005\u4ece\u5176\u5b83\u4efb\u610f\u526f\u672c\u5206\u7247\u68c0\u7d22\u6587\u6863<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525203238455.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525203238455.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525203238455\" \/><\/div><\/p>\n<p><strong>\u4ece\u4e3b\u5206\u7247\u6216\u8005\u526f\u672c\u5206\u7247\u68c0\u7d22\u6587\u6863\u7684\u6b65\u9aa4\u987a\u5e8f\uff1a<\/strong> <\/p>\n<ol>\n<li>\u5ba2\u6237\u7aef\u5411 Node 1 \u53d1\u9001\u83b7\u53d6\u8bf7\u6c42\u3002 <\/li>\n<li>\u8282\u70b9\u4f7f\u7528\u6587\u6863\u7684 _id \u6765\u786e\u5b9a\u6587\u6863\u5c5e\u4e8e\u5206\u7247 0 \u3002\u5206\u7247 0 \u7684\u526f\u672c\u5206\u7247\u5b58\u5728\u4e8e\u6240\u6709\u7684\u4e09\u4e2a \u8282\u70b9\u4e0a\u3002 \u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5b83\u5c06\u8bf7\u6c42\u8f6c\u53d1\u5230 Node 2 \u3002<\/li>\n<li>Node 2 \u5c06\u6587\u6863\u8fd4\u56de\u7ed9 Node 1 \uff0c\u7136\u540e\u5c06\u6587\u6863\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef\u3002 \u5728\u5904\u7406\u8bfb\u53d6\u8bf7\u6c42\u65f6\uff0c\u534f\u8c03\u7ed3\u70b9\u5728\u6bcf\u6b21\u8bf7\u6c42\u7684\u65f6\u5019\u90fd\u4f1a\u901a\u8fc7\u8f6e\u8be2\u6240\u6709\u7684\u526f\u672c\u5206\u7247\u6765\u8fbe\u5230\u8d1f\u8f7d\u5747\u8861\u3002\u5728\u6587\u6863\u88ab\u68c0\u7d22\u65f6\uff0c\u5df2\u7ecf\u88ab\u7d22\u5f15\u7684\u6587\u6863\u53ef\u80fd\u5df2\u7ecf\u5b58\u5728\u4e8e\u4e3b\u5206\u7247\u4e0a\u4f46\u662f\u8fd8\u6ca1\u6709\u590d\u5236\u5230\u526f\u672c\u5206\u7247\u3002 \u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u526f\u672c\u5206\u7247\u53ef\u80fd\u4f1a\u62a5\u544a\u6587\u6863\u4e0d\u5b58\u5728\uff0c\u4f46\u662f\u4e3b\u5206\u7247\u53ef\u80fd\u6210\u529f\u8fd4\u56de\u6587\u6863\u3002 \u4e00\u65e6\u7d22\u5f15\u8bf7\u6c42\u6210\u529f\u8fd4\u56de\u7ed9\u7528\u6237\uff0c\u6587\u6863\u5728\u4e3b\u5206\u7247\u548c\u526f\u672c\u5206\u7247\u90fd\u662f\u53ef\u7528\u7684\u3002 <\/li>\n<\/ol>\n<p>4.5.3 \u66f4\u65b0\u6d41\u7a0b <\/p>\n<p>\u90e8\u5206\u66f4\u65b0\u4e00\u4e2a\u6587\u6863\u7ed3\u5408\u4e86\u5148\u524d\u8bf4\u660e\u7684\u8bfb\u53d6\u548c\u5199\u5165\u6d41\u7a0b\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525203418313.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525203418313.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525203418313\" \/><\/div><\/p>\n<p>\u90e8\u5206\u66f4\u65b0\u4e00\u4e2a\u6587\u6863\u7684\u6b65\u9aa4\u5982\u4e0b\uff1a <\/p>\n<ol>\n<li>\n<p>\u5ba2\u6237\u7aef\u5411 Node 1 \u53d1\u9001\u66f4\u65b0\u8bf7\u6c42\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5b83\u5c06\u8bf7\u6c42\u8f6c\u53d1\u5230\u4e3b\u5206\u7247\u6240\u5728\u7684 Node 3 \u3002<\/p>\n<\/li>\n<li>\n<p>Node 3 \u4ece\u4e3b\u5206\u7247\u68c0\u7d22\u6587\u6863\uff0c\u4fee\u6539 _source \u5b57\u6bb5\u4e2d\u7684 JSON \uff0c\u5e76\u4e14\u5c1d\u8bd5\u91cd\u65b0\u7d22\u5f15\u4e3b\u5206\u7247 \u7684\u6587\u6863\u3002\u5982\u679c\u6587\u6863\u5df2\u7ecf\u88ab\u53e6\u4e00\u4e2a\u8fdb\u7a0b\u4fee\u6539\uff0c\u5b83\u4f1a\u91cd\u8bd5\u6b65\u9aa4 3 \uff0c\u8d85\u8fc7 retry_on_conflict \u6b21 \u540e\u653e\u5f03\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c Node 3 \u6210\u529f\u5730\u66f4\u65b0\u6587\u6863\uff0c\u5b83\u5c06\u65b0\u7248\u672c\u7684\u6587\u6863\u5e76\u884c\u8f6c\u53d1\u5230 Node 1 \u548c Node 2 \u4e0a\u7684 \u526f\u672c\u5206\u7247\uff0c\u91cd\u65b0\u5efa\u7acb\u7d22\u5f15\u3002\u4e00\u65e6\u6240\u6709\u526f\u672c\u5206\u7247\u90fd\u8fd4\u56de\u6210\u529f\uff0c Node 3 \u5411\u534f\u8c03\u8282\u70b9\u4e5f\u8fd4\u56de \u6210\u529f\uff0c\u534f\u8c03\u8282\u70b9\u5411\u5ba2\u6237\u7aef\u8fd4\u56de\u6210\u529f\u3002 <\/p>\n<\/li>\n<\/ol>\n<p><strong>\u5f53\u4e3b\u5206\u7247\u628a\u66f4\u6539\u8f6c\u53d1\u5230\u526f\u672c\u5206\u7247\u65f6\uff0c \u5b83\u4e0d\u4f1a\u8f6c\u53d1\u66f4\u65b0\u8bf7\u6c42\u3002 \u76f8\u53cd\uff0c\u5b83\u8f6c\u53d1\u5b8c\u6574\u6587\u6863\u7684\u65b0\u7248\u672c\u3002\u8bf7\u8bb0\u4f4f\uff0c \u8fd9\u4e9b\u66f4\u6539\u5c06\u4f1a\u5f02\u6b65\u8f6c\u53d1\u5230\u526f\u672c\u5206\u7247\uff0c\u5e76\u4e14\u4e0d\u80fd\u4fdd\u8bc1\u5b83\u4eec\u4ee5\u53d1\u9001\u5b83\u4eec\u76f8\u540c\u7684\u987a\u5e8f\u5230\u8fbe\u3002 \u5982\u679c Elasticsearch \u4ec5 \u8f6c\u53d1\u66f4\u6539\u8bf7\u6c42\uff0c\u5219\u53ef\u80fd\u4ee5\u9519\u8bef\u7684\u987a\u5e8f\u5e94\u7528\u66f4\u6539\uff0c\u5bfc\u81f4\u5f97\u5230\u635f\u574f\u7684\u6587\u6863\u3002<\/strong> <\/p>\n<p>4.5.4 \u591a\u6587\u6863\u64cd\u4f5c\u6d41\u7a0b <\/p>\n<p>\u200b   mget \u548c bulk API \u7684\u6a21\u5f0f\u7c7b\u4f3c\u4e8e\u5355\u6587\u6863\u6a21\u5f0f\u3002\u533a\u522b\u5728\u4e8e\u534f\u8c03\u8282\u70b9\u77e5\u9053\u6bcf\u4e2a\u6587\u6863\u5b58\u5728\u4e8e \u54ea\u4e2a\u5206\u7247\u4e2d\u3002\u5b83\u5c06\u6574\u4e2a\u591a\u6587\u6863\u8bf7\u6c42\u5206\u89e3\u6210 \u6bcf\u4e2a\u5206\u7247 \u7684\u591a\u6587\u6863\u8bf7\u6c42\uff0c\u5e76\u4e14\u5c06\u8fd9\u4e9b\u8bf7\u6c42\u5e76\u884c\u8f6c \u53d1\u5230\u6bcf\u4e2a\u53c2\u4e0e\u8282\u70b9\u3002<\/p>\n<p>\u200b    \u534f\u8c03\u8282\u70b9\u4e00\u65e6\u6536\u5230\u6765\u81ea\u6bcf\u4e2a\u8282\u70b9\u7684\u5e94\u7b54\uff0c\u5c31\u5c06\u6bcf\u4e2a\u8282\u70b9\u7684\u54cd\u5e94\u6536\u96c6\u6574\u7406\u6210\u5355\u4e2a\u54cd\u5e94\uff0c\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525203824601.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525203824601.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525203824601\" \/><\/div><\/p>\n<p>\u200b   \u7528\u5355\u4e2a <strong>mget<\/strong> \u8bf7\u6c42\u53d6\u56de\u591a\u4e2a\u6587\u6863\u6240\u9700\u7684\u6b65\u9aa4\u987a\u5e8f: <\/p>\n<ol>\n<li>\u5ba2\u6237\u7aef\u5411 Node 1 \u53d1\u9001 mget \u8bf7\u6c42\u3002 <\/li>\n<li>Node 1 \u4e3a\u6bcf\u4e2a\u5206\u7247\u6784\u5efa\u591a\u6587\u6863\u83b7\u53d6\u8bf7\u6c42\uff0c\u7136\u540e\u5e76\u884c\u8f6c\u53d1\u8fd9\u4e9b\u8bf7\u6c42\u5230\u6258\u7ba1\u5728\u6bcf\u4e2a\u6240\u9700\u7684 \u4e3b\u5206\u7247\u6216\u8005\u526f\u672c\u5206\u7247\u7684\u8282\u70b9\u4e0a\u3002\u4e00\u65e6\u6536\u5230\u6240\u6709\u7b54\u590d\uff0c Node 1 \u6784\u5efa\u54cd\u5e94\u5e76\u5c06\u5176\u8fd4\u56de\u7ed9\u5ba2 \u6237\u7aef\u3002 <\/li>\n<\/ol>\n<p>\u53ef\u4ee5\u5bf9 docs \u6570\u7ec4\u4e2d\u6bcf\u4e2a\u6587\u6863\u8bbe\u7f6e routing \u53c2\u6570\u3002 <\/p>\n<p><strong>bulk API<\/strong>\uff0c \u5141\u8bb8\u5728\u5355\u4e2a\u6279\u91cf\u8bf7\u6c42\u4e2d\u6267\u884c\u591a\u4e2a\u521b\u5efa\u3001\u7d22\u5f15\u3001\u5220\u9664\u548c\u66f4\u65b0\u8bf7\u6c42\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525203945723.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525203945723.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525203945723\" \/><\/div><\/p>\n<p>bulk API \u6309\u5982\u4e0b\u6b65\u9aa4\u987a\u5e8f\u6267\u884c\uff1a <\/p>\n<ol>\n<li>\u5ba2\u6237\u7aef\u5411 Node 1 \u53d1\u9001 bulk \u8bf7\u6c42\u3002 <\/li>\n<li>Node 1 \u4e3a\u6bcf\u4e2a\u8282\u70b9\u521b\u5efa\u4e00\u4e2a\u6279\u91cf\u8bf7\u6c42\uff0c\u5e76\u5c06\u8fd9\u4e9b\u8bf7\u6c42\u5e76\u884c\u8f6c\u53d1\u5230\u6bcf\u4e2a\u5305\u542b\u4e3b\u5206\u7247\u7684\u8282\u70b9\u4e3b\u673a\u3002 <\/li>\n<li>\u4e3b\u5206\u7247\u4e00\u4e2a\u63a5\u4e00\u4e2a\u6309\u987a\u5e8f\u6267\u884c\u6bcf\u4e2a\u64cd\u4f5c\u3002\u5f53\u6bcf\u4e2a\u64cd\u4f5c\u6210\u529f\u65f6\uff0c\u4e3b\u5206\u7247\u5e76\u884c\u8f6c\u53d1\u65b0\u6587\u6863\uff08\u6216\u5220\u9664\uff09\u5230\u526f\u672c\u5206\u7247\uff0c\u7136\u540e\u6267\u884c\u4e0b\u4e00\u4e2a\u64cd\u4f5c\u3002 \u4e00\u65e6\u6240\u6709\u7684\u526f\u672c\u5206\u7247\u62a5\u544a\u6240\u6709\u64cd\u4f5c\u6210\u529f\uff0c \u8be5\u8282\u70b9\u5c06\u5411\u534f\u8c03\u8282\u70b9\u62a5\u544a\u6210\u529f\uff0c\u534f\u8c03\u8282\u70b9\u5c06\u8fd9\u4e9b\u54cd\u5e94\u6536\u96c6\u6574\u7406\u5e76\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef\u3002 <\/li>\n<\/ol>\n<h3>4.6 \u5206\u7247\u539f\u7406<\/h3>\n<p>\u200b   \u5206\u7247\u662f Elasticsearch \u6700\u5c0f\u7684\u5de5\u4f5c\u5355\u5143\u3002\u4f46\u662f\u7a76\u7adf\u4ec0\u4e48\u662f\u4e00\u4e2a\u5206\u7247\uff0c\u5b83\u662f\u5982\u4f55\u5de5\u4f5c\u7684\uff1f <\/p>\n<p>\u200b   \u4f20\u7edf\u7684\u6570\u636e\u5e93\u6bcf\u4e2a\u5b57\u6bb5\u5b58\u50a8\u5355\u4e2a\u503c\uff0c\u4f46\u8fd9\u5bf9\u5168\u6587\u68c0\u7d22\u5e76\u4e0d\u591f\u3002\u6587\u672c\u5b57\u6bb5\u4e2d\u7684\u6bcf\u4e2a\u5355\u8bcd\u9700 \u8981\u88ab\u641c\u7d22\uff0c\u5bf9\u6570\u636e\u5e93\u610f\u5473\u7740\u9700\u8981\u5355\u4e2a\u5b57\u6bb5\u6709\u7d22\u5f15\u591a\u503c\u7684\u80fd\u529b\u3002\u6700\u597d\u7684\u652f\u6301\u662f\u4e00\u4e2a\u5b57\u6bb5\u591a\u4e2a\u503c \u9700\u6c42\u7684\u6570\u636e\u7ed3\u6784\u662f<strong>\u5012\u6392\u7d22\u5f15<\/strong>\u3002 <\/p>\n<p>4.6.1 \u5012\u6392\u7d22\u5f15 <\/p>\n<p>\u200b   Elasticsearch \u4f7f\u7528\u4e00\u79cd\u79f0\u4e3a\u5012\u6392\u7d22\u5f15\u7684\u7ed3\u6784\uff0c\u5b83\u9002\u7528\u4e8e\u5feb\u901f\u7684\u5168\u6587\u641c\u7d22\u3002 <\/p>\n<p>\u200b   \u89c1\u5176\u540d\uff0c\u77e5\u5176\u610f\uff0c\u6709\u5012\u6392\u7d22\u5f15\uff0c\u80af\u5b9a\u4f1a\u5bf9\u5e94\u6709\u6b63\u5411\u7d22\u5f15\u3002\u6b63\u5411\u7d22\u5f15\uff08forward index\uff09\uff0c \u53cd\u5411\u7d22\u5f15\uff08inverted index\uff09\u66f4\u719f\u6089\u7684\u540d\u5b57\u662f\u5012\u6392\u7d22\u5f15\u3002 <\/p>\n<p>\u6240\u8c13\u7684\u6b63\u5411\u7d22\u5f15\uff0c\u5c31\u662f\u641c\u7d22\u5f15\u64ce\u4f1a\u5c06\u5f85\u641c\u7d22\u7684\u6587\u4ef6\u90fd\u5bf9\u5e94\u4e00\u4e2a\u6587\u4ef6 ID\uff0c\u641c\u7d22\u65f6\u5c06\u8fd9\u4e2a ID \u548c\u641c\u7d22\u5173\u952e\u5b57\u8fdb\u884c\u5bf9\u5e94\uff0c\u5f62\u6210 K-V \u5bf9\uff0c\u7136\u540e\u5bf9\u5173\u952e\u5b57\u8fdb\u884c\u7edf\u8ba1\u8ba1\u6570 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204225182.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204225182.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525204225182\" \/><\/div><\/p>\n<p>\u4f46\u662f\u4e92\u8054\u7f51\u4e0a\u6536\u5f55\u5728\u641c\u7d22\u5f15\u64ce\u4e2d\u7684\u6587\u6863\u7684\u6570\u76ee\u662f\u4e2a\u5929\u6587\u6570\u5b57\uff0c\u8fd9\u6837\u7684\u7d22\u5f15\u7ed3\u6784\u6839\u672c\u65e0\u6cd5\u6ee1\u8db3 \u5b9e\u65f6\u8fd4\u56de\u6392\u540d\u7ed3\u679c\u7684\u8981\u6c42\u3002\u6240\u4ee5\uff0c\u641c\u7d22\u5f15\u64ce\u4f1a\u5c06\u6b63\u5411\u7d22\u5f15\u91cd\u65b0\u6784\u5efa\u4e3a\u5012\u6392\u7d22\u5f15\uff0c\u5373\u628a\u6587\u4ef6 ID\u5bf9\u5e94\u5230\u5173\u952e\u8bcd\u7684\u6620\u5c04\u8f6c\u6362\u4e3a\u5173\u952e\u8bcd\u5230\u6587\u4ef6ID\u7684\u6620\u5c04\uff0c\u6bcf\u4e2a\u5173\u952e\u8bcd\u90fd\u5bf9\u5e94\u7740\u4e00\u7cfb\u5217\u7684\u6587\u4ef6\uff0c \u8fd9\u4e9b\u6587\u4ef6\u4e2d\u90fd\u51fa\u73b0\u8fd9\u4e2a\u5173\u952e\u8bcd\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204256430.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204256430.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525204256430\" \/><\/div><\/p>\n<p>\u4e00\u4e2a\u5012\u6392\u7d22\u5f15\u7531\u6587\u6863\u4e2d\u6240\u6709\u4e0d\u91cd\u590d\u8bcd\u7684\u5217\u8868\u6784\u6210\uff0c\u5bf9\u4e8e\u5176\u4e2d\u6bcf\u4e2a\u8bcd\uff0c\u6709\u4e00\u4e2a\u5305\u542b\u5b83\u7684\u6587 \u6863\u5217\u8868\u3002\u4f8b\u5982\uff0c\u5047\u8bbe\u6211\u4eec\u6709\u4e24\u4e2a\u6587\u6863\uff0c\u6bcf\u4e2a\u6587\u6863\u7684 content \u57df\u5305\u542b\u5982\u4e0b\u5185\u5bb9\uff1a<\/p>\n<ul>\n<li>\n<p>The quick brown fox jumped over the lazy dog <\/p>\n<\/li>\n<li>\n<p>Quick brown foxes leap over lazy dogs in summer <\/p>\n<\/li>\n<\/ul>\n<p>\u4e3a\u4e86\u521b\u5efa\u5012\u6392\u7d22\u5f15\uff0c\u6211\u4eec\u9996\u5148\u5c06\u6bcf\u4e2a\u6587\u6863\u7684 content \u57df\u62c6\u5206\u6210\u5355\u72ec\u7684 \u8bcd\uff08\u6211\u4eec\u79f0\u5b83\u4e3a \u8bcd\u6761 \u6216 tokens \uff09\uff0c\u521b\u5efa\u4e00\u4e2a\u5305\u542b\u6240\u6709\u4e0d\u91cd\u590d\u8bcd\u6761\u7684\u6392\u5e8f\u5217\u8868\uff0c\u7136\u540e\u5217\u51fa\u6bcf\u4e2a\u8bcd\u6761\u51fa\u73b0\u5728\u54ea\u4e2a\u6587 \u6863\u3002\u7ed3\u679c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204451756.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204451756.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525204451756\" \/><\/div><\/p>\n<p>\u73b0\u5728\uff0c\u5982\u679c\u6211\u4eec\u60f3\u641c\u7d22 <strong>quick<\/strong> <strong>brown<\/strong> \uff0c\u6211\u4eec\u53ea\u9700\u8981\u67e5\u627e\u5305\u542b\u6bcf\u4e2a\u8bcd\u6761\u7684\u6587\u6863\uff1a  <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204541394.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204541394.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525204541394\" \/><\/div><\/p>\n<p>\u4e24\u4e2a\u6587\u6863\u90fd\u5339\u914d\uff0c\u4f46\u662f\u7b2c\u4e00\u4e2a\u6587\u6863\u6bd4\u7b2c\u4e8c\u4e2a\u5339\u914d\u5ea6\u66f4\u9ad8\u3002\u5982\u679c\u6211\u4eec\u4f7f\u7528\u4ec5\u8ba1\u7b97\u5339\u914d\u8bcd\u6761\u6570\u91cf \u7684\u7b80\u5355\u76f8\u4f3c\u6027\u7b97\u6cd5\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u8bf4\uff0c\u5bf9\u4e8e\u6211\u4eec\u67e5\u8be2\u7684\u76f8\u5173\u6027\u6765\u8bb2\uff0c\u7b2c\u4e00\u4e2a\u6587\u6863\u6bd4\u7b2c\u4e8c\u4e2a\u6587 \u6863\u66f4\u4f73\u3002<\/p>\n<p>\u4f46\u662f\uff0c\u6211\u4eec\u76ee\u524d\u7684\u5012\u6392\u7d22\u5f15\u6709\u4e00\u4e9b\u95ee\u9898\uff1a<\/p>\n<ul>\n<li>\n<p>Quick \u548c quick \u4ee5\u72ec\u7acb\u7684\u8bcd\u6761\u51fa\u73b0\uff0c\u7136\u800c\u7528\u6237\u53ef\u80fd\u8ba4\u4e3a\u5b83\u4eec\u662f\u76f8\u540c\u7684\u8bcd\u3002 <\/p>\n<\/li>\n<li>\n<p>fox \u548c foxes \u975e\u5e38\u76f8\u4f3c, \u5c31\u50cf dog \u548c dogs \uff1b\u4ed6\u4eec\u6709\u76f8\u540c\u7684\u8bcd\u6839\u3002 <\/p>\n<\/li>\n<li>\n<p>jumped \u548c leap, \u5c3d\u7ba1\u6ca1\u6709\u76f8\u540c\u7684\u8bcd\u6839\uff0c\u4f46\u4ed6\u4eec\u7684\u610f\u601d\u5f88\u76f8\u8fd1\u3002\u4ed6\u4eec\u662f\u540c\u4e49\u8bcd\u3002 <\/p>\n<\/li>\n<\/ul>\n<p>\u4f7f\u7528\u524d\u9762\u7684\u7d22\u5f15\u641c\u7d22 <strong>+Quick +fox<\/strong> \u4e0d\u4f1a\u5f97\u5230\u4efb\u4f55\u5339\u914d\u6587\u6863\u3002\uff08\u8bb0\u4f4f\uff0c+ \u524d\u7f00\u8868\u660e\u8fd9\u4e2a\u8bcd\u5fc5 \u987b\u5b58\u5728\u3002\uff09\u53ea\u6709\u540c\u65f6\u51fa\u73b0 Quick \u548c fox \u7684\u6587\u6863\u624d\u6ee1\u8db3\u8fd9\u4e2a\u67e5\u8be2\u6761\u4ef6\uff0c\u4f46\u662f\u7b2c\u4e00\u4e2a\u6587\u6863\u5305\u542b quick fox \uff0c\u7b2c\u4e8c\u4e2a\u6587\u6863\u5305\u542b Quick foxes \u3002 <\/p>\n<p>\u6211\u4eec\u7684\u7528\u6237\u53ef\u4ee5\u5408\u7406\u7684\u671f\u671b\u4e24\u4e2a\u6587\u6863\u4e0e\u67e5\u8be2\u5339\u914d\u3002\u6211\u4eec\u53ef\u4ee5\u505a\u7684\u66f4\u597d\u3002 <\/p>\n<p>\u5982\u679c\u6211\u4eec\u5c06\u8bcd\u6761\u89c4\u8303\u4e3a\u6807\u51c6\u6a21\u5f0f\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u627e\u5230\u4e0e\u7528\u6237\u641c\u7d22\u7684\u8bcd\u6761\u4e0d\u5b8c\u5168\u4e00\u81f4\uff0c\u4f46\u5177\u6709 \u8db3\u591f\u76f8\u5173\u6027\u7684\u6587\u6863\u3002\u4f8b\u5982\uff1a <\/p>\n<ul>\n<li>\n<p>Quick \u53ef\u4ee5\u5c0f\u5199\u5316\u4e3a quick \u3002 <\/p>\n<\/li>\n<li>\n<p>foxes \u53ef\u4ee5 \u8bcd\u5e72\u63d0\u53d6 --\u53d8\u4e3a\u8bcd\u6839\u7684\u683c\u5f0f-- \u4e3a fox \u3002\u7c7b\u4f3c\u7684\uff0c dogs \u53ef\u4ee5\u4e3a\u63d0\u53d6\u4e3a dog \u3002 <\/p>\n<\/li>\n<li>\n<p>jumped \u548c leap \u662f\u540c\u4e49\u8bcd\uff0c\u53ef\u4ee5\u7d22\u5f15\u4e3a\u76f8\u540c\u7684\u5355\u8bcd jump \u3002 <\/p>\n<\/li>\n<\/ul>\n<p>\u73b0\u5728\u7d22\u5f15\u770b\u4e0a\u53bb\u50cf\u8fd9\u6837\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204921871.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525204921871.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525204921871\" \/><\/div><\/p>\n<p>\u8fd9\u8fd8\u8fdc\u8fdc\u4e0d\u591f\u3002\u6211\u4eec\u641c\u7d22 +Quick +fox \u4ecd\u7136 \u4f1a\u5931\u8d25\uff0c\u56e0\u4e3a\u5728\u6211\u4eec\u7684\u7d22\u5f15\u4e2d\uff0c\u5df2\u7ecf\u6ca1\u6709 Quick \u4e86\u3002\u4f46\u662f\uff0c\u5982\u679c\u6211\u4eec\u5bf9\u641c\u7d22\u7684\u5b57\u7b26\u4e32\u4f7f\u7528\u4e0e content \u57df\u76f8\u540c\u7684\u6807\u51c6\u5316\u89c4\u5219\uff0c\u4f1a\u53d8\u6210\u67e5\u8be2 +quick +fox\uff0c\u8fd9\u6837\u4e24\u4e2a\u6587\u6863\u90fd\u4f1a\u5339\u914d\uff01\u5206\u8bcd\u548c\u6807\u51c6\u5316\u7684\u8fc7\u7a0b\u79f0\u4e3a<strong>\u5206\u6790<\/strong>\u8fd9\u975e\u5e38\u91cd\u8981\u3002\u4f60\u53ea\u80fd\u641c\u7d22\u5728\u7d22\u5f15\u4e2d\u51fa\u73b0\u7684\u8bcd\u6761\uff0c\u6240\u4ee5\u7d22\u5f15\u6587\u672c\u548c\u67e5\u8be2\u5b57\u7b26\u4e32\u5fc5\u987b\u6807\u51c6\u5316\u4e3a\u76f8 \u540c\u7684\u683c\u5f0f\u3002 <\/p>\n<p>4.6.2 \u6587\u6863\u641c\u7d22 <\/p>\n<p>\u65e9\u671f\u7684\u5168\u6587\u68c0\u7d22\u4f1a\u4e3a\u6574\u4e2a\u6587\u6863\u96c6\u5408\u5efa\u7acb\u4e00\u4e2a\u5f88\u5927\u7684\u5012\u6392\u7d22\u5f15\u5e76\u5c06\u5176\u5199\u5165\u5230\u78c1\u76d8\u3002 \u4e00\u65e6\u65b0\u7684\u7d22\u5f15\u5c31\u7eea\uff0c\u65e7\u7684\u5c31\u4f1a\u88ab\u5176\u66ff\u6362\uff0c\u8fd9\u6837\u6700\u8fd1\u7684\u53d8\u5316\u4fbf\u53ef\u4ee5\u88ab\u68c0\u7d22\u5230\u3002 <\/p>\n<p>\u5012\u6392\u7d22\u5f15\u88ab\u5199\u5165\u78c1\u76d8\u540e\u662f \u4e0d\u53ef\u6539\u53d8 \u7684:\u5b83\u6c38\u8fdc\u4e0d\u4f1a\u4fee\u6539\u3002 <\/p>\n<p>\u4e0d\u53d8\u6027\u6709\u91cd\u8981\u7684\u4ef7\u503c\uff1a<\/p>\n<ul>\n<li>\n<p>\u4e0d\u9700\u8981\u9501\u3002\u5982\u679c\u4f60\u4ece\u6765\u4e0d\u66f4\u65b0\u7d22\u5f15\uff0c\u4f60\u5c31\u4e0d\u9700\u8981\u62c5\u5fc3\u591a\u8fdb\u7a0b\u540c\u65f6\u4fee\u6539\u6570\u636e\u7684\u95ee\u9898\u3002 <\/p>\n<\/li>\n<li>\n<p>\u4e00\u65e6\u7d22\u5f15\u88ab\u8bfb\u5165\u5185\u6838\u7684\u6587\u4ef6\u7cfb\u7edf\u7f13\u5b58\uff0c\u4fbf\u4f1a\u7559\u5728\u54ea\u91cc\uff0c\u7531\u4e8e\u5176\u4e0d\u53d8\u6027\u3002\u53ea\u8981\u6587\u4ef6\u7cfb\u7edf\u7f13\u5b58\u4e2d\u8fd8\u6709\u8db3\u591f \u7684\u7a7a\u95f4\uff0c\u90a3\u4e48\u5927\u90e8\u5206\u8bfb\u8bf7\u6c42\u4f1a\u76f4\u63a5\u8bf7\u6c42\u5185\u5b58\uff0c\u800c\u4e0d\u4f1a\u547d\u4e2d\u78c1\u76d8\u3002\u8fd9\u63d0\u4f9b\u4e86\u5f88\u5927\u7684\u6027\u80fd\u63d0\u5347\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5176\u5b83\u7f13\u5b58(\u50cf filter \u7f13\u5b58)\uff0c\u5728\u7d22\u5f15\u7684\u751f\u547d\u5468\u671f\u5185\u59cb\u7ec8\u6709\u6548\u3002\u5b83\u4eec\u4e0d\u9700\u8981\u5728\u6bcf\u6b21\u6570\u636e\u6539\u53d8\u65f6\u88ab\u91cd\u5efa\uff0c\u56e0\u4e3a \u6570\u636e\u4e0d\u4f1a\u53d8\u5316\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5199\u5165\u5355\u4e2a\u5927\u7684\u5012\u6392\u7d22\u5f15\u5141\u8bb8\u6570\u636e\u88ab\u538b\u7f29\uff0c\u51cf\u5c11\u78c1\u76d8 I\/O \u548c \u9700\u8981\u88ab\u7f13\u5b58\u5230\u5185\u5b58\u7684\u7d22\u5f15\u7684\u4f7f\u7528\u91cf\u3002 <\/p>\n<\/li>\n<\/ul>\n<p>\u200b   \u5f53\u7136\uff0c\u4e00\u4e2a\u4e0d\u53d8\u7684\u7d22\u5f15\u4e5f\u6709\u4e0d\u597d\u7684\u5730\u65b9\u3002\u4e3b\u8981\u4e8b\u5b9e\u662f\u5b83\u662f\u4e0d\u53ef\u53d8\u7684! \u4f60\u4e0d\u80fd\u4fee\u6539\u5b83\u3002\u5982 \u679c\u4f60\u9700\u8981\u8ba9\u4e00\u4e2a\u65b0\u7684\u6587\u6863 \u53ef\u88ab\u641c\u7d22\uff0c\u4f60\u9700\u8981\u91cd\u5efa\u6574\u4e2a\u7d22\u5f15\u3002\u8fd9\u8981\u4e48\u5bf9\u4e00\u4e2a\u7d22\u5f15\u6240\u80fd\u5305\u542b\u7684 \u6570\u636e\u91cf\u9020\u6210\u4e86\u5f88\u5927\u7684\u9650\u5236\uff0c\u8981\u4e48\u5bf9\u7d22\u5f15\u53ef\u88ab\u66f4\u65b0\u7684\u9891\u7387\u9020\u6210\u4e86\u5f88\u5927\u7684\u9650\u5236\u3002 <\/p>\n<p>4.6.3 \u52a8\u6001\u66f4\u65b0\u7d22\u5f15 <\/p>\n<p>\u200b   \u5982\u4f55\u5728\u4fdd\u7559\u4e0d\u53d8\u6027\u7684\u524d\u63d0\u4e0b\u5b9e\u73b0\u5012\u6392\u7d22\u5f15\u7684\u66f4\u65b0\uff1f <\/p>\n<p>\u200b   \u7b54\u6848\u662f: \u7528\u66f4\u591a\u7684\u7d22\u5f15\u3002\u901a\u8fc7\u589e\u52a0\u65b0\u7684\u8865\u5145\u7d22\u5f15\u6765\u53cd\u6620\u65b0\u8fd1\u7684\u4fee\u6539\uff0c\u800c\u4e0d\u662f\u76f4\u63a5\u91cd\u5199\u6574 \u4e2a\u5012\u6392\u7d22\u5f15\u3002\u6bcf\u4e00\u4e2a\u5012\u6392\u7d22\u5f15\u90fd\u4f1a\u88ab\u8f6e\u6d41\u67e5\u8be2\u5230\uff0c\u4ece\u6700\u65e9\u7684\u5f00\u59cb\u67e5\u8be2\u5b8c\u540e\u518d\u5bf9\u7ed3\u679c\u8fdb\u884c\u5408\u5e76\u3002 <\/p>\n<p>Elasticsearch \u57fa\u4e8e Lucene, \u8fd9\u4e2a java \u5e93\u5f15\u5165\u4e86<strong>\u6309\u6bb5\u641c\u7d22<\/strong>\u7684\u6982\u5ff5\u3002 \u6bcf\u4e00 \u6bb5 \u672c\u8eab\u90fd\u662f\u4e00 \u4e2a\u5012\u6392\u7d22\u5f15\uff0c \u4f46\u7d22\u5f15\u5728 Lucene \u4e2d\u9664\u8868\u793a\u6240\u6709\u6bb5\u7684\u96c6\u5408\u5916\uff0c \u8fd8\u589e\u52a0\u4e86\u63d0\u4ea4\u70b9\u7684\u6982\u5ff5 \u2014 \u4e00 \u4e2a\u5217\u51fa\u4e86\u6240\u6709\u5df2\u77e5\u6bb5\u7684\u6587\u4ef6 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525205326489.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525205326489.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525205326489\" \/><\/div><\/p>\n<p>\u6309\u6bb5\u641c\u7d22\u4f1a\u4ee5\u5982\u4e0b\u6d41\u7a0b\u6267\u884c\uff1a<\/p>\n<ol>\n<li>\n<p>\u65b0\u6587\u6863\u88ab\u6536\u96c6\u5230\u5185\u5b58\u7d22\u5f15\u7f13\u5b58 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525205506218.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525205506218.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525205506218\" \/><\/div><\/p>\n<\/li>\n<li>\n<p>\u4e0d\u65f6\u5730, \u7f13\u5b58\u88ab \u63d0\u4ea4<\/p>\n<p>(1) \u4e00\u4e2a\u65b0\u7684\u6bb5\u2014\u4e00\u4e2a\u8ffd\u52a0\u7684\u5012\u6392\u7d22\u5f15\u2014\u88ab\u5199\u5165\u78c1\u76d8\u3002<\/p>\n<p>(2) \u4e00\u4e2a\u65b0\u7684\u5305\u542b\u65b0\u6bb5\u540d\u5b57\u7684 \u63d0\u4ea4\u70b9 \u88ab\u5199\u5165\u78c1\u76d8 <\/p>\n<p>(3) \u78c1\u76d8\u8fdb\u884c \u540c\u6b65 \u2014 \u6240\u6709\u5728\u6587\u4ef6\u7cfb\u7edf\u7f13\u5b58\u4e2d\u7b49\u5f85\u7684\u5199\u5165\u90fd\u5237\u65b0\u5230\u78c1\u76d8\uff0c\u4ee5\u786e\u4fdd\u5b83\u4eec \u88ab\u5199\u5165\u7269\u7406\u6587\u4ef6 <\/p>\n<\/li>\n<li>\n<p>\u65b0\u7684\u6bb5\u88ab\u5f00\u542f\uff0c\u8ba9\u5b83\u5305\u542b\u7684\u6587\u6863\u53ef\u89c1\u4ee5\u88ab\u641c\u7d22 <\/p>\n<\/li>\n<li>\n<p>\u5185\u5b58\u7f13\u5b58\u88ab\u6e05\u7a7a\uff0c\u7b49\u5f85\u63a5\u6536\u65b0\u7684\u6587\u6863 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525205728251.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525205728251.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525205728251\" \/><\/div><\/p>\n<\/li>\n<\/ol>\n<p>\u5f53\u4e00\u4e2a\u67e5\u8be2\u88ab\u89e6\u53d1\uff0c\u6240\u6709\u5df2\u77e5\u7684\u6bb5\u6309\u987a\u5e8f\u88ab\u67e5\u8be2\u3002\u8bcd\u9879\u7edf\u8ba1\u4f1a\u5bf9\u6240\u6709\u6bb5\u7684\u7ed3\u679c\u8fdb\u884c\u805a\u5408\uff0c\u4ee5 \u4fdd\u8bc1\u6bcf\u4e2a\u8bcd\u548c\u6bcf\u4e2a\u6587\u6863\u7684\u5173\u8054\u90fd\u88ab\u51c6\u786e\u8ba1\u7b97\u3002 \u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u7528\u76f8\u5bf9\u8f83\u4f4e\u7684\u6210\u672c\u5c06\u65b0\u6587\u6863\u6dfb \u52a0\u5230\u7d22\u5f15\u3002 <\/p>\n<p>\u6bb5\u662f\u4e0d\u53ef\u6539\u53d8\u7684\uff0c\u6240\u4ee5\u65e2\u4e0d\u80fd\u4ece\u628a\u6587\u6863\u4ece\u65e7\u7684\u6bb5\u4e2d\u79fb\u9664\uff0c\u4e5f\u4e0d\u80fd\u4fee\u6539\u65e7\u7684\u6bb5\u6765\u8fdb\u884c\u53cd\u6620\u6587\u6863 \u7684\u66f4\u65b0\u3002 \u53d6\u800c\u4ee3\u4e4b\u7684\u662f\uff0c\u6bcf\u4e2a\u63d0\u4ea4\u70b9\u4f1a\u5305\u542b\u4e00\u4e2a .del \u6587\u4ef6\uff0c\u6587\u4ef6\u4e2d\u4f1a\u5217\u51fa\u8fd9\u4e9b\u88ab\u5220\u9664\u6587\u6863 \u7684\u6bb5\u4fe1\u606f\u3002 <\/p>\n<p>\u5f53\u4e00\u4e2a\u6587\u6863\u88ab \u201c\u5220\u9664\u201d \u65f6\uff0c\u5b83\u5b9e\u9645\u4e0a\u53ea\u662f\u5728 .del \u6587\u4ef6\u4e2d\u88ab \u6807\u8bb0 \u5220\u9664\u3002\u4e00\u4e2a\u88ab\u6807\u8bb0\u5220\u9664\u7684\u6587\u6863\u4ecd\u7136\u53ef\u4ee5\u88ab\u67e5\u8be2\u5339\u914d\u5230\uff0c \u4f46\u5b83\u4f1a\u5728\u6700\u7ec8\u7ed3\u679c\u88ab\u8fd4\u56de\u524d\u4ece\u7ed3\u679c\u96c6\u4e2d\u79fb\u9664\u3002 <\/p>\n<p>\u6587\u6863\u66f4\u65b0\u4e5f\u662f\u7c7b\u4f3c\u7684\u64cd\u4f5c\u65b9\u5f0f\uff1a\u5f53\u4e00\u4e2a\u6587\u6863\u88ab\u66f4\u65b0\u65f6\uff0c\u65e7\u7248\u672c\u6587\u6863\u88ab\u6807\u8bb0\u5220\u9664\uff0c\u6587\u6863\u7684\u65b0\u7248 \u672c\u88ab\u7d22\u5f15\u5230\u4e00\u4e2a\u65b0\u7684\u6bb5\u4e2d\u3002 \u53ef\u80fd\u4e24\u4e2a\u7248\u672c\u7684\u6587\u6863\u90fd\u4f1a\u88ab\u4e00\u4e2a\u67e5\u8be2\u5339\u914d\u5230\uff0c\u4f46\u88ab\u5220\u9664\u7684\u90a3\u4e2a \u65e7\u7248\u672c\u6587\u6863\u5728\u7ed3\u679c\u96c6\u8fd4\u56de\u524d\u5c31\u5df2\u7ecf\u88ab\u79fb\u9664\u3002 <\/p>\n<p>4.6.4 \u8fd1\u5b9e\u65f6\u641c\u7d22 <\/p>\n<p>\u968f\u7740\u6309\u6bb5\uff08per-segment\uff09\u641c\u7d22\u7684\u53d1\u5c55\uff0c\u4e00\u4e2a\u65b0\u7684\u6587\u6863\u4ece\u7d22\u5f15\u5230\u53ef\u88ab\u641c\u7d22\u7684\u5ef6\u8fdf\u663e\u8457\u964d\u4f4e \u4e86\u3002\u65b0\u6587\u6863\u5728\u51e0\u5206\u949f\u4e4b\u5185\u5373\u53ef\u88ab\u68c0\u7d22\uff0c\u4f46\u8fd9\u6837\u8fd8\u662f\u4e0d\u591f\u5feb\u3002\u78c1\u76d8\u5728\u8fd9\u91cc\u6210\u4e3a\u4e86\u74f6\u9888\u3002\u63d0\u4ea4 \uff08Commiting\uff09\u4e00\u4e2a\u65b0\u7684\u6bb5\u5230\u78c1\u76d8\u9700\u8981\u4e00\u4e2a fsync \u6765\u786e\u4fdd\u6bb5\u88ab\u7269\u7406\u6027\u5730\u5199\u5165\u78c1\u76d8\uff0c\u8fd9\u6837\u5728\u65ad \u7535\u7684\u65f6\u5019\u5c31\u4e0d\u4f1a\u4e22\u5931\u6570\u636e\u3002 \u4f46\u662f fsync \u64cd\u4f5c\u4ee3\u4ef7\u5f88\u5927; \u5982\u679c\u6bcf\u6b21\u7d22\u5f15\u4e00\u4e2a\u6587\u6863\u90fd\u53bb\u6267\u884c\u4e00 \u6b21\u7684\u8bdd\u4f1a\u9020\u6210\u5f88\u5927\u7684\u6027\u80fd\u95ee\u9898\u3002 <\/p>\n<p>\u6211\u4eec\u9700\u8981\u7684\u662f\u4e00\u4e2a\u66f4\u8f7b\u91cf\u7684\u65b9\u5f0f\u6765\u4f7f\u4e00\u4e2a\u6587\u6863\u53ef\u88ab\u641c\u7d22\uff0c\u8fd9\u610f\u5473\u7740 fsync \u8981\u4ece\u6574\u4e2a\u8fc7\u7a0b\u4e2d \u88ab\u79fb\u9664\u3002\u5728 Elasticsearch \u548c\u78c1\u76d8\u4e4b\u95f4\u662f\u6587\u4ef6\u7cfb\u7edf\u7f13\u5b58\u3002 \u50cf\u4e4b\u524d\u63cf\u8ff0\u7684\u4e00\u6837\uff0c \u5728\u5185\u5b58\u7d22\u5f15\u7f13 \u51b2\u533a\u4e2d\u7684\u6587\u6863\u4f1a\u88ab\u5199\u5165\u5230\u4e00\u4e2a\u65b0\u7684\u6bb5\u4e2d\u3002 \u4f46\u662f\u8fd9\u91cc\u65b0\u6bb5\u4f1a\u88ab\u5148\u5199\u5165\u5230\u6587\u4ef6\u7cfb\u7edf\u7f13\u5b58\u2014\u8fd9\u4e00 \u6b65\u4ee3\u4ef7\u4f1a\u6bd4\u8f83\u4f4e\uff0c\u7a0d\u540e\u518d\u88ab\u5237\u65b0\u5230\u78c1\u76d8\u2014\u8fd9\u4e00\u6b65\u4ee3\u4ef7\u6bd4\u8f83\u9ad8\u3002\u4e0d\u8fc7\u53ea\u8981\u6587\u4ef6\u5df2\u7ecf\u5728\u7f13\u5b58\u4e2d\uff0c \u5c31\u53ef\u4ee5\u50cf\u5176\u5b83\u6587\u4ef6\u4e00\u6837\u88ab\u6253\u5f00\u548c\u8bfb\u53d6\u4e86\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525210050264.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525210050264.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525210050264\" \/><\/div><\/p>\n<p>Lucene \u5141\u8bb8\u65b0\u6bb5\u88ab\u5199\u5165\u548c\u6253\u5f00\u2014\u4f7f\u5176\u5305\u542b\u7684\u6587\u6863\u5728\u672a\u8fdb\u884c\u4e00\u6b21\u5b8c\u6574\u63d0\u4ea4\u65f6\u4fbf\u5bf9\u641c\u7d22\u53ef\u89c1\u3002 \u8fd9\u79cd\u65b9\u5f0f\u6bd4\u8fdb\u884c\u4e00\u6b21\u63d0\u4ea4\u4ee3\u4ef7\u8981\u5c0f\u5f97\u591a\uff0c\u5e76\u4e14\u5728\u4e0d\u5f71\u54cd\u6027\u80fd\u7684\u524d\u63d0\u4e0b\u53ef\u4ee5\u88ab\u9891\u7e41\u5730\u6267\u884c\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525210232921.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525210232921.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525210232921\" \/><\/div><\/p>\n<p>\u5728 Elasticsearch \u4e2d\uff0c\u5199\u5165\u548c\u6253\u5f00\u4e00\u4e2a\u65b0\u6bb5\u7684\u8f7b\u91cf\u7684\u8fc7\u7a0b\u53eb\u505a refresh \u3002 \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u6bcf\u4e2a\u5206 \u7247\u4f1a\u6bcf\u79d2\u81ea\u52a8\u5237\u65b0\u4e00\u6b21\u3002\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u6211\u4eec\u8bf4 Elasticsearch \u662f \u8fd1 \u5b9e\u65f6\u641c\u7d22: \u6587\u6863\u7684\u53d8\u5316 \u5e76\u4e0d\u662f\u7acb\u5373\u5bf9\u641c\u7d22\u53ef\u89c1\uff0c\u4f46\u4f1a\u5728\u4e00\u79d2\u4e4b\u5185\u53d8\u4e3a\u53ef\u89c1\u3002 <\/p>\n<p>\u8fd9\u4e9b\u884c\u4e3a\u53ef\u80fd\u4f1a\u5bf9\u65b0\u7528\u6237\u9020\u6210\u56f0\u60d1: \u4ed6\u4eec\u7d22\u5f15\u4e86\u4e00\u4e2a\u6587\u6863\u7136\u540e\u5c1d\u8bd5\u641c\u7d22\u5b83\uff0c\u4f46\u5374\u6ca1\u6709\u641c\u5230\u3002 <\/p>\n<p>\u8fd9\u4e2a\u95ee\u9898\u7684\u89e3\u51b3\u529e\u6cd5\u662f\u7528 refresh API \u6267\u884c\u4e00\u6b21\u624b\u52a8\u5237\u65b0: \/users\/_refresh <\/p>\n<p><strong>\u5c3d\u7ba1\u5237\u65b0\u662f\u6bd4\u63d0\u4ea4\u8f7b\u91cf\u5f88\u591a\u7684\u64cd\u4f5c\uff0c\u5b83\u8fd8\u662f\u4f1a\u6709\u6027\u80fd\u5f00\u9500\u3002\u5f53\u5199\u6d4b\u8bd5\u7684\u65f6\u5019\uff0c \u624b\u52a8\u5237\u65b0\u5f88\u6709\u7528\uff0c\u4f46\u662f\u4e0d\u8981 \u5728\u751f\u4ea7\u73af\u5883\u4e0b\u6bcf\u6b21\u7d22\u5f15\u4e00\u4e2a\u6587\u6863\u90fd\u53bb\u624b\u52a8\u5237\u65b0\u3002 \u76f8\u53cd\uff0c\u4f60\u7684\u5e94\u7528\u9700\u8981\u610f\u8bc6\u5230 Elasticsearch \u7684\u8fd1\u5b9e\u65f6\u7684\u6027 \u8d28\uff0c\u5e76\u63a5\u53d7\u5b83\u7684\u4e0d\u8db3\u3002<\/strong> <\/p>\n<p>\u5e76\u4e0d\u662f\u6240\u6709\u7684\u60c5\u51b5\u90fd\u9700\u8981\u6bcf\u79d2\u5237\u65b0\u3002\u53ef\u80fd\u4f60\u6b63\u5728\u4f7f\u7528 Elasticsearch \u7d22\u5f15\u5927\u91cf\u7684\u65e5\u5fd7\u6587\u4ef6\uff0c \u4f60\u53ef\u80fd\u60f3\u4f18\u5316\u7d22\u5f15\u901f\u5ea6\u800c\u4e0d\u662f\u8fd1\u5b9e\u65f6\u641c\u7d22\uff0c \u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e refresh_interval \uff0c \u964d\u4f4e\u6bcf\u4e2a\u7d22 \u5f15\u7684\u5237\u65b0\u9891\u7387 <\/p>\n<pre><code class=\"language-json\">{ &quot;settings&quot;: { &quot;refresh_interval&quot;: &quot;30s&quot; } } <\/code><\/pre>\n<p>refresh_interval \u53ef\u4ee5\u5728\u65e2\u5b58\u7d22\u5f15\u4e0a\u8fdb\u884c\u52a8\u6001\u66f4\u65b0\u3002 \u5728\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u5f53\u4f60\u6b63\u5728\u5efa\u7acb\u4e00\u4e2a\u5927\u7684 \u65b0\u7d22\u5f15\u65f6\uff0c\u53ef\u4ee5\u5148\u5173\u95ed\u81ea\u52a8\u5237\u65b0\uff0c\u5f85\u5f00\u59cb\u4f7f\u7528\u8be5\u7d22\u5f15\u65f6\uff0c\u518d\u628a\u5b83\u4eec\u8c03\u56de\u6765 <\/p>\n<pre><code class=\"language-json\">#\u5173\u95ed\u81ea\u52a8\u5237\u65b0\nPUT \/users\/_settings\n{ &quot;refresh_interval&quot;: -1 }\n# \u6bcf\u4e00\u79d2\u5237\u65b0\nPUT \/users\/_settings\n{ &quot;refresh_interval&quot;: &quot;1s&quot; } <\/code><\/pre>\n<p>4.6.5 \u6301\u4e45\u5316\u53d8\u66f4 <\/p>\n<p>\u5982\u679c\u6ca1\u6709\u7528 fsync \u628a\u6570\u636e\u4ece\u6587\u4ef6\u7cfb\u7edf\u7f13\u5b58\u5237\uff08flush\uff09\u5230\u786c\u76d8\uff0c\u6211\u4eec\u4e0d\u80fd\u4fdd\u8bc1\u6570\u636e\u5728\u65ad \u7535\u751a\u81f3\u662f\u7a0b\u5e8f\u6b63\u5e38\u9000\u51fa\u4e4b\u540e\u4f9d\u7136\u5b58\u5728\u3002\u4e3a\u4e86\u4fdd\u8bc1 Elasticsearch \u7684\u53ef\u9760\u6027\uff0c\u9700\u8981\u786e\u4fdd\u6570\u636e\u53d8 \u5316\u88ab\u6301\u4e45\u5316\u5230\u78c1\u76d8\u3002\u5728 \u52a8\u6001\u66f4\u65b0\u7d22\u5f15\uff0c\u6211\u4eec\u8bf4\u4e00\u6b21\u5b8c\u6574\u7684\u63d0\u4ea4\u4f1a\u5c06\u6bb5\u5237\u5230\u78c1\u76d8\uff0c\u5e76\u5199\u5165\u4e00 \u4e2a\u5305\u542b\u6240\u6709\u6bb5\u5217\u8868\u7684\u63d0\u4ea4\u70b9\u3002Elasticsearch \u5728\u542f\u52a8\u6216\u91cd\u65b0\u6253\u5f00\u4e00\u4e2a\u7d22\u5f15\u7684\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u8fd9\u4e2a\u63d0 \u4ea4\u70b9\u6765\u5224\u65ad\u54ea\u4e9b\u6bb5\u96b6\u5c5e\u4e8e\u5f53\u524d\u5206\u7247\u3002 <\/p>\n<p>\u5373\u4f7f\u901a\u8fc7\u6bcf\u79d2\u5237\u65b0\uff08refresh\uff09\u5b9e\u73b0\u4e86\u8fd1\u5b9e\u65f6\u641c\u7d22\uff0c\u6211\u4eec\u4ecd\u7136\u9700\u8981\u7ecf\u5e38\u8fdb\u884c\u5b8c\u6574\u63d0\u4ea4\u6765\u786e \u4fdd\u80fd\u4ece\u5931\u8d25\u4e2d\u6062\u590d\u3002\u4f46\u5728\u4e24\u6b21\u63d0\u4ea4\u4e4b\u95f4\u53d1\u751f\u53d8\u5316\u7684\u6587\u6863\u600e\u4e48\u529e\uff1f\u6211\u4eec\u4e5f\u4e0d\u5e0c\u671b\u4e22\u5931\u6389\u8fd9\u4e9b\u6570 \u636e\u3002Elasticsearch \u589e\u52a0\u4e86\u4e00\u4e2a translog \uff0c\u6216\u8005\u53eb\u4e8b\u52a1\u65e5\u5fd7\uff0c\u5728\u6bcf\u4e00\u6b21\u5bf9 Elasticsearch \u8fdb\u884c \u64cd\u4f5c\u65f6\u5747\u8fdb\u884c\u4e86\u65e5\u5fd7\u8bb0\u5f55<\/p>\n<p>\u6574\u4e2a\u6d41\u7a0b\u5982\u4e0b\uff1a <\/p>\n<ol>\n<li>\u4e00\u4e2a\u6587\u6863\u88ab\u7d22\u5f15\u4e4b\u540e\uff0c\u5c31\u4f1a\u88ab\u6dfb\u52a0\u5230\u5185\u5b58\u7f13\u51b2\u533a\uff0c\u5e76\u4e14\u8ffd\u52a0\u5230\u4e86 translog<br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525210950000.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525210950000.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525210950000\" \/><\/div> <\/li>\n<li>\u5237\u65b0\uff08refresh\uff09\u4f7f\u5206\u7247\u6bcf\u79d2\u88ab\u5237\u65b0\uff08refresh\uff09\u4e00\u6b21\uff1a <\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u8fd9\u4e9b\u5728\u5185\u5b58\u7f13\u51b2\u533a\u7684\u6587\u6863\u88ab\u5199\u5165\u5230\u4e00\u4e2a\u65b0\u7684\u6bb5\u4e2d\uff0c\u4e14\u6ca1\u6709\u8fdb\u884c fsync \u64cd\u4f5c\u3002 <\/p>\n<\/li>\n<li>\n<p>\u8fd9\u4e2a\u6bb5\u88ab\u6253\u5f00\uff0c\u4f7f\u5176\u53ef\u88ab\u641c\u7d22 <\/p>\n<\/li>\n<li>\n<p>\u5185\u5b58\u7f13\u51b2\u533a\u88ab\u6e05\u7a7a <\/p>\n<\/li>\n<\/ul>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525211110817.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525211110817.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525211110817\" \/><\/div><\/p>\n<ol start=\"3\">\n<li>\n<p>\u8fd9\u4e2a\u8fdb\u7a0b\u7ee7\u7eed\u5de5\u4f5c\uff0c\u66f4\u591a\u7684\u6587\u6863\u88ab\u6dfb\u52a0\u5230\u5185\u5b58\u7f13\u51b2\u533a\u548c\u8ffd\u52a0\u5230\u4e8b\u52a1\u65e5\u5fd7<br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525211228378.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525211228378.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525211228378\" \/><\/div><\/p>\n<\/li>\n<li>\n<p>\u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u2014\u4f8b\u5982 translog \u53d8\u5f97\u8d8a\u6765\u8d8a\u5927\u2014\u7d22\u5f15\u88ab\u5237\u65b0\uff08flush\uff09\uff1b\u4e00\u4e2a\u65b0\u7684 translog \u88ab\u521b\u5efa\uff0c\u5e76\u4e14\u4e00\u4e2a\u5168\u91cf\u63d0\u4ea4\u88ab\u6267\u884c <\/p>\n<ul>\n<li>\u6240\u6709\u5728\u5185\u5b58\u7f13\u51b2\u533a\u7684\u6587\u6863\u90fd\u88ab\u5199\u5165\u4e00\u4e2a\u65b0\u7684\u6bb5\u3002 <\/li>\n<li>\u7f13\u51b2\u533a\u88ab\u6e05\u7a7a\u3002<\/li>\n<li>\u4e00\u4e2a\u63d0\u4ea4\u70b9\u88ab\u5199\u5165\u786c\u76d8\u3002<\/li>\n<li>\u6587\u4ef6\u7cfb\u7edf\u7f13\u5b58\u901a\u8fc7 fsync \u88ab\u5237\u65b0\uff08flush\uff09\u3002<\/li>\n<li>\u8001\u7684 translog \u88ab\u5220\u9664\u3002 <\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>translog \u63d0\u4f9b\u6240\u6709\u8fd8\u6ca1\u6709\u88ab\u5237\u5230\u78c1\u76d8\u7684\u64cd\u4f5c\u7684\u4e00\u4e2a\u6301\u4e45\u5316\u7eaa\u5f55\u3002\u5f53 Elasticsearch \u542f\u52a8\u7684\u65f6 \u5019\uff0c \u5b83\u4f1a\u4ece\u78c1\u76d8\u4e2d\u4f7f\u7528\u6700\u540e\u4e00\u4e2a\u63d0\u4ea4\u70b9\u53bb\u6062\u590d\u5df2\u77e5\u7684\u6bb5\uff0c\u5e76\u4e14\u4f1a\u91cd\u653e translog \u4e2d\u6240\u6709\u5728\u6700 \u540e\u4e00\u6b21\u63d0\u4ea4\u540e\u53d1\u751f\u7684\u53d8\u66f4\u64cd\u4f5c\u3002 <\/p>\n<p>translog \u4e5f\u88ab\u7528\u6765\u63d0\u4f9b\u5b9e\u65f6 CRUD \u3002\u5f53\u4f60\u8bd5\u7740\u901a\u8fc7 ID \u67e5\u8be2\u3001\u66f4\u65b0\u3001\u5220\u9664\u4e00\u4e2a\u6587\u6863\uff0c\u5b83\u4f1a \u5728\u5c1d\u8bd5\u4ece\u76f8\u5e94\u7684\u6bb5\u4e2d\u68c0\u7d22\u4e4b\u524d\uff0c \u9996\u5148\u68c0\u67e5 translog \u4efb\u4f55\u6700\u8fd1\u7684\u53d8\u66f4\u3002\u8fd9\u610f\u5473\u7740\u5b83\u603b\u662f\u80fd\u591f \u5b9e\u65f6\u5730\u83b7\u53d6\u5230\u6587\u6863\u7684\u6700\u65b0\u7248\u672c\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525211558858.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525211558858.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525211558858\" \/><\/div><\/p>\n<p>\u6267\u884c\u4e00\u4e2a\u63d0\u4ea4\u5e76\u4e14\u622a\u65ad translog \u7684\u884c\u4e3a\u5728 Elasticsearch \u88ab\u79f0\u4f5c\u4e00\u6b21 flush \u5206\u7247\u6bcf 30 \u5206\u949f\u88ab\u81ea\u52a8\u5237\u65b0\uff08flush\uff09\uff0c\u6216\u8005\u5728 translog \u592a\u5927\u7684\u65f6\u5019\u4e5f\u4f1a\u5237\u65b0 <\/p>\n<p>\u4f60\u5f88\u5c11\u9700\u8981\u81ea\u5df1\u624b\u52a8\u6267\u884c flush \u64cd\u4f5c\uff1b\u901a\u5e38\u60c5\u51b5\u4e0b\uff0c\u81ea\u52a8\u5237\u65b0\u5c31\u8db3\u591f\u4e86\u3002\u8fd9\u5c31\u662f\u8bf4\uff0c\u5728 \u91cd\u542f\u8282\u70b9\u6216\u5173\u95ed\u7d22\u5f15\u4e4b\u524d\u6267\u884c flush \u6709\u76ca\u4e8e\u4f60\u7684\u7d22\u5f15\u3002\u5f53 Elasticsearch \u5c1d\u8bd5\u6062\u590d\u6216\u91cd\u65b0\u6253 \u5f00\u4e00\u4e2a\u7d22\u5f15\uff0c \u5b83\u9700\u8981\u91cd\u653e translog \u4e2d\u6240\u6709\u7684\u64cd\u4f5c\uff0c\u6240\u4ee5\u5982\u679c\u65e5\u5fd7\u8d8a\u77ed\uff0c\u6062\u590d\u8d8a\u5feb\u3002<\/p>\n<p>translog \u7684\u76ee\u7684\u662f\u4fdd\u8bc1\u64cd\u4f5c\u4e0d\u4f1a\u4e22\u5931\uff0c\u5728\u6587\u4ef6\u88ab fsync \u5230\u78c1\u76d8\u524d\uff0c\u88ab\u5199\u5165\u7684\u6587\u4ef6\u5728\u91cd\u542f \u4e4b\u540e\u5c31\u4f1a\u4e22\u5931\u3002\u9ed8\u8ba4 translog \u662f\u6bcf 5 \u79d2\u88ab fsync \u5237\u65b0\u5230\u786c\u76d8\uff0c \u6216\u8005\u5728\u6bcf\u6b21\u5199\u8bf7\u6c42\u5b8c\u6210\u4e4b \u540e\u6267\u884c(e.g. index, delete, update, bulk)\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u5728\u4e3b\u5206\u7247\u548c\u590d\u5236\u5206\u7247\u90fd\u4f1a\u53d1\u751f\u3002\u6700\u7ec8\uff0c \u57fa \u672c\u4e0a\uff0c\u8fd9\u610f\u5473\u7740\u5728\u6574\u4e2a\u8bf7\u6c42\u88ab fsync \u5230\u4e3b\u5206\u7247\u548c\u590d\u5236\u5206\u7247\u7684 translog \u4e4b\u524d\uff0c\u4f60\u7684\u5ba2\u6237\u7aef\u4e0d\u4f1a \u5f97\u5230\u4e00\u4e2a 200 OK \u54cd\u5e94\u3002 <\/p>\n<p>\u5728\u6bcf\u6b21\u8bf7\u6c42\u540e\u90fd\u6267\u884c\u4e00\u4e2a fsync \u4f1a\u5e26\u6765\u4e00\u4e9b\u6027\u80fd\u635f\u5931\uff0c\u5c3d\u7ba1\u5b9e\u8df5\u8868\u660e\u8fd9\u79cd\u635f\u5931\u76f8\u5bf9\u8f83 \u5c0f\uff08\u7279\u522b\u662f bulk \u5bfc\u5165\uff0c\u5b83\u5728\u4e00\u6b21\u8bf7\u6c42\u4e2d\u5e73\u644a\u4e86\u5927\u91cf\u6587\u6863\u7684\u5f00\u9500\uff09\u3002<\/p>\n<p>\u4f46\u662f\u5bf9\u4e8e\u4e00\u4e9b\u5927\u5bb9\u91cf\u7684\u5076\u5c14\u4e22\u5931\u51e0\u79d2\u6570\u636e\u95ee\u9898\u4e5f\u5e76\u4e0d\u4e25\u91cd\u7684\u96c6\u7fa4\uff0c\u4f7f\u7528\u5f02\u6b65\u7684 fsync \u8fd8\u662f\u6bd4\u8f83\u6709\u76ca\u7684\u3002\u6bd4\u5982\uff0c\u5199\u5165\u7684\u6570\u636e\u88ab\u7f13\u5b58\u5230\u5185\u5b58\u4e2d\uff0c\u518d\u6bcf 5 \u79d2\u6267\u884c\u4e00\u6b21 fsync \u3002\u5982\u679c\u4f60 \u51b3\u5b9a\u4f7f\u7528\u5f02\u6b65 translog \u7684\u8bdd\uff0c\u4f60\u9700\u8981 \u4fdd\u8bc1 \u5728\u53d1\u751f crash \u65f6\uff0c\u4e22\u5931\u6389 sync_interval \u65f6\u95f4\u6bb5 \u7684\u6570\u636e\u4e5f\u65e0\u6240\u8c13\u3002\u8bf7\u5728\u51b3\u5b9a\u524d\u77e5\u6653\u8fd9\u4e2a\u7279\u6027\u3002\u5982\u679c\u4f60\u4e0d\u786e\u5b9a\u8fd9\u4e2a\u884c\u4e3a\u7684\u540e\u679c\uff0c\u6700\u597d\u662f\u4f7f\u7528\u9ed8 \u8ba4\u7684\u53c2\u6570\uff08 &quot;index.translog.durability&quot;: &quot;request&quot; \uff09\u6765\u907f\u514d\u6570\u636e\u4e22\u5931\u3002 <\/p>\n<p>4.6.6 \u6bb5\u5408\u5e76 <\/p>\n<p>\u7531\u4e8e\u81ea\u52a8\u5237\u65b0\u6d41\u7a0b\u6bcf\u79d2\u4f1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u6bb5 \uff0c\u8fd9\u6837\u4f1a\u5bfc\u81f4\u77ed\u65f6\u95f4\u5185\u7684\u6bb5\u6570\u91cf\u66b4\u589e\u3002\u800c\u6bb5 \u6570\u76ee\u592a\u591a\u4f1a\u5e26\u6765\u8f83\u5927\u7684\u9ebb\u70e6\u3002 \u6bcf\u4e00\u4e2a\u6bb5\u90fd\u4f1a\u6d88\u8017\u6587\u4ef6\u53e5\u67c4\u3001\u5185\u5b58\u548c cpu \u8fd0\u884c\u5468\u671f\u3002\u66f4\u91cd\u8981 \u7684\u662f\uff0c\u6bcf\u4e2a\u641c\u7d22\u8bf7\u6c42\u90fd\u5fc5\u987b\u8f6e\u6d41\u68c0\u67e5\u6bcf\u4e2a\u6bb5\uff1b\u6240\u4ee5\u6bb5\u8d8a\u591a\uff0c\u641c\u7d22\u4e5f\u5c31\u8d8a\u6162\u3002 Elasticsearch \u901a\u8fc7\u5728\u540e\u53f0\u8fdb\u884c\u6bb5\u5408\u5e76\u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002\u5c0f\u7684\u6bb5\u88ab\u5408\u5e76\u5230\u5927\u7684\u6bb5\uff0c\u7136\u540e\u8fd9\u4e9b\u5927 \u7684\u6bb5\u518d\u88ab\u5408\u5e76\u5230\u66f4\u5927\u7684\u6bb5\u3002 <\/p>\n<p>\u6bb5\u5408\u5e76\u7684\u65f6\u5019\u4f1a\u5c06\u90a3\u4e9b\u65e7\u7684\u5df2\u5220\u9664\u6587\u6863\u4ece\u6587\u4ef6\u7cfb\u7edf\u4e2d\u6e05\u9664\u3002\u88ab\u5220\u9664\u7684\u6587\u6863\uff08\u6216\u88ab\u66f4\u65b0\u6587\u6863\u7684 \u65e7\u7248\u672c\uff09\u4e0d\u4f1a\u88ab\u62f7\u8d1d\u5230\u65b0\u7684\u5927\u6bb5\u4e2d\u3002 <\/p>\n<p>\u542f\u52a8\u6bb5\u5408\u5e76\u4e0d\u9700\u8981\u4f60\u505a\u4efb\u4f55\u4e8b\u3002\u8fdb\u884c\u7d22\u5f15\u548c\u641c\u7d22\u65f6\u4f1a\u81ea\u52a8\u8fdb\u884c\u3002 <\/p>\n<ol>\n<li>\n<p>\u5f53\u7d22\u5f15\u7684\u65f6\u5019\uff0c\u5237\u65b0\uff08refresh\uff09\u64cd\u4f5c\u4f1a\u521b\u5efa\u65b0\u7684\u6bb5\u5e76\u5c06\u6bb5\u6253\u5f00\u4ee5\u4f9b\u641c\u7d22\u4f7f\u7528\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5408\u5e76\u8fdb\u7a0b\u9009\u62e9\u4e00\u5c0f\u90e8\u5206\u5927\u5c0f\u76f8\u4f3c\u7684\u6bb5\uff0c\u5e76\u4e14\u5728\u540e\u53f0\u5c06\u5b83\u4eec\u5408\u5e76\u5230\u66f4\u5927\u7684\u6bb5\u4e2d\u3002\u8fd9\u5e76\u4e0d\u4f1a \u4e2d\u65ad\u7d22\u5f15\u548c\u641c\u7d22\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525212118387.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525212118387.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525212118387\" \/><\/div><\/p>\n<\/li>\n<li>\n<p>\u4e00\u65e6\u5408\u5e76\u7ed3\u675f\uff0c\u8001\u7684\u6bb5\u88ab\u5220\u9664 <\/p>\n<ul>\n<li>\n<p>\u65b0\u7684\u6bb5\u88ab\u5237\u65b0\uff08flush\uff09\u5230\u4e86\u78c1\u76d8\u3002 ** \u5199\u5165\u4e00\u4e2a\u5305\u542b\u65b0\u6bb5\u4e14\u6392\u9664\u65e7\u7684\u548c\u8f83\u5c0f\u7684\u6bb5 \u7684\u65b0\u63d0\u4ea4\u70b9\u3002 <\/p>\n<\/li>\n<li>\n<p>\u65b0\u7684\u6bb5\u88ab\u6253\u5f00\u7528\u6765\u641c\u7d22\u3002 <\/p>\n<\/li>\n<li>\n<p>\u8001\u7684\u6bb5\u88ab\u5220\u9664\u3002  <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525212224600.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525212224600.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525212224600\" \/><\/div><\/p>\n<p>\u5408\u5e76\u5927\u7684\u6bb5\u9700\u8981\u6d88\u8017\u5927\u91cf\u7684 I\/O \u548c CPU \u8d44\u6e90\uff0c\u5982\u679c\u4efb\u5176\u53d1\u5c55\u4f1a\u5f71\u54cd\u641c\u7d22\u6027\u80fd\u3002Elasticsearch \u5728\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u5bf9\u5408\u5e76\u6d41\u7a0b\u8fdb\u884c\u8d44\u6e90\u9650\u5236\uff0c\u6240\u4ee5\u641c\u7d22\u4ecd\u7136 \u6709\u8db3\u591f\u7684\u8d44\u6e90\u5f88\u597d\u5730\u6267\u884c\u3002<\/p>\n<h3>4.7 \u6587\u6863\u5206\u6790<\/h3>\n<p>\u5206\u6790 \u5305\u542b\u4e0b\u9762\u7684\u8fc7\u7a0b\uff1a<\/p>\n<ul>\n<li>\n<p>\u5c06\u4e00\u5757\u6587\u672c\u5206\u6210\u9002\u5408\u4e8e\u5012\u6392\u7d22\u5f15\u7684\u72ec\u7acb\u7684 \u8bcd\u6761 <\/p>\n<\/li>\n<li>\n<p>\u5c06\u8fd9\u4e9b\u8bcd\u6761\u7edf\u4e00\u5316\u4e3a\u6807\u51c6\u683c\u5f0f\u4ee5\u63d0\u9ad8\u5b83\u4eec\u7684\u201c\u53ef\u641c\u7d22\u6027\u201d\uff0c\u6216\u8005 recall \u5206\u6790\u5668\u6267\u884c\u4e0a\u9762\u7684\u5de5\u4f5c\u3002\u5206\u6790\u5668\u5b9e\u9645\u4e0a\u662f\u5c06<\/p>\n<\/li>\n<\/ul>\n<p>\u4e09\u4e2a\u529f\u80fd\u5c01\u88c5\u5230\u4e86\u4e00\u4e2a\u5305\u91cc\uff1a <\/p>\n<ul>\n<li>\n<p>\u5b57\u7b26\u8fc7\u6ee4\u5668 <\/p>\n<p>\u9996\u5148\uff0c\u5b57\u7b26\u4e32\u6309\u987a\u5e8f\u901a\u8fc7\u6bcf\u4e2a \u5b57\u7b26\u8fc7\u6ee4\u5668 \u3002\u4ed6\u4eec\u7684\u4efb\u52a1\u662f\u5728\u5206\u8bcd\u524d\u6574\u7406\u5b57\u7b26\u4e32\u3002\u4e00\u4e2a \u5b57\u7b26\u8fc7\u6ee4\u5668\u53ef\u4ee5\u7528\u6765\u53bb\u6389 HTML\uff0c\u6216\u8005\u5c06 &amp; \u8f6c\u5316\u6210 and\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5206\u8bcd\u5668 <\/p>\n<p>\u5176\u6b21\uff0c\u5b57\u7b26\u4e32\u88ab \u5206\u8bcd\u5668 \u5206\u4e3a\u5355\u4e2a\u7684\u8bcd\u6761\u3002\u4e00\u4e2a\u7b80\u5355\u7684\u5206\u8bcd\u5668\u9047\u5230\u7a7a\u683c\u548c\u6807\u70b9\u7684\u65f6\u5019\uff0c \u53ef\u80fd\u4f1a\u5c06\u6587\u672c\u62c6\u5206\u6210\u8bcd\u6761\u3002 <\/p>\n<\/li>\n<li>\n<p>Token \u8fc7\u6ee4\u5668 <\/p>\n<\/li>\n<\/ul>\n<p>\u200b   \u6700\u540e\uff0c\u8bcd\u6761\u6309\u987a\u5e8f\u901a\u8fc7\u6bcf\u4e2a token \u8fc7\u6ee4\u5668 \u3002\u8fd9\u4e2a\u8fc7\u7a0b\u53ef\u80fd\u4f1a\u6539\u53d8\u8bcd\u6761\uff08\u4f8b\u5982\uff0c\u5c0f\u5199\u5316 Quick \uff09\uff0c\u5220\u9664\u8bcd\u6761\uff08\u4f8b\u5982\uff0c \u50cf a\uff0c and\uff0c the \u7b49\u65e0\u7528\u8bcd\uff09\uff0c\u6216\u8005\u589e\u52a0\u8bcd\u6761\uff08\u4f8b\u5982\uff0c\u50cf jump \u548c leap \u8fd9\u79cd\u540c\u4e49\u8bcd\uff09\u3002 <\/p>\n<p>4.7.1 \u5185\u7f6e\u5206\u6790\u5668 <\/p>\n<p>\u200b   Elasticsearch \u8fd8\u9644\u5e26\u4e86\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u7684\u9884\u5305\u88c5\u7684\u5206\u6790\u5668\u3002\u63a5\u4e0b\u6765\u6211\u4eec\u4f1a\u5217\u51fa\u6700\u91cd\u8981\u7684\u5206 \u6790\u5668\u3002\u4e3a\u4e86\u8bc1\u660e\u5b83\u4eec\u7684\u5dee\u5f02\uff0c\u6211\u4eec\u770b\u770b\u6bcf\u4e2a\u5206\u6790\u5668\u4f1a\u4ece\u4e0b\u9762\u7684\u5b57\u7b26\u4e32\u5f97\u5230\u54ea\u4e9b\u8bcd\u6761\uff1a<\/p>\n<pre><code>\"Set the shape to semi-transparent by calling set_trans(5)\" <\/code><\/pre>\n<ul>\n<li>\u6807\u51c6\u5206\u6790\u5668 <\/li>\n<\/ul>\n<p>\u6807\u51c6\u5206\u6790\u5668\u662f Elasticsearch \u9ed8\u8ba4\u4f7f\u7528\u7684\u5206\u6790\u5668\u3002\u5b83\u662f\u5206\u6790\u5404\u79cd\u8bed\u8a00\u6587\u672c\u6700\u5e38\u7528\u7684\u9009\u62e9\u3002 \u5b83\u6839\u636e Unicode \u8054\u76df \u5b9a\u4e49\u7684 \u5355\u8bcd\u8fb9\u754c \u5212\u5206\u6587\u672c\u3002\u5220\u9664\u7edd\u5927\u90e8\u5206\u6807\u70b9\u3002\u6700\u540e\uff0c\u5c06\u8bcd\u6761\u5c0f\u5199\u3002 \u5b83\u4f1a\u4ea7\u751f\uff1a <\/p>\n<p>set, the, shape, to, semi, transparent, by, calling, set_trans, 5 <\/p>\n<ul>\n<li>\u7b80\u5355\u5206\u6790\u5668 <\/li>\n<\/ul>\n<p>\u7b80\u5355\u5206\u6790\u5668\u5728\u4efb\u4f55\u4e0d\u662f\u5b57\u6bcd\u7684\u5730\u65b9\u5206\u9694\u6587\u672c\uff0c\u5c06\u8bcd\u6761\u5c0f\u5199\u3002\u5b83\u4f1a\u4ea7\u751f\uff1a <\/p>\n<p>set, the, shape, to, semi, transparent, by, calling, set, trans <\/p>\n<ul>\n<li>\u7a7a\u683c\u5206\u6790\u5668 <\/li>\n<\/ul>\n<p>\u7a7a\u683c\u5206\u6790\u5668\u5728\u7a7a\u683c\u7684\u5730\u65b9\u5212\u5206\u6587\u672c\u3002\u5b83\u4f1a\u4ea7\u751f\uff1a <\/p>\n<p>Set, the, shape, to, semi-transparent, by, calling, set_trans(5) <\/p>\n<ul>\n<li>\u8bed\u8a00\u5206\u6790\u5668 <\/li>\n<\/ul>\n<p>\u7279\u5b9a\u8bed\u8a00\u5206\u6790\u5668\u53ef\u7528\u4e8e \u5f88\u591a\u8bed\u8a00\u3002\u5b83\u4eec\u53ef\u4ee5\u8003\u8651\u6307\u5b9a\u8bed\u8a00\u7684\u7279\u70b9\u3002\u4f8b\u5982\uff0c \u82f1\u8bed \u5206\u6790 \u5668\u9644\u5e26\u4e86\u4e00\u7ec4\u82f1\u8bed\u65e0\u7528\u8bcd\uff08\u5e38\u7528\u5355\u8bcd\uff0c\u4f8b\u5982 and \u6216\u8005 the \uff0c\u5b83\u4eec\u5bf9\u76f8\u5173\u6027\u6ca1\u6709\u591a\u5c11\u5f71\u54cd\uff09\uff0c \u5b83\u4eec\u4f1a\u88ab\u5220\u9664\u3002 \u7531\u4e8e\u7406\u89e3\u82f1\u8bed\u8bed\u6cd5\u7684\u89c4\u5219\uff0c\u8fd9\u4e2a\u5206\u8bcd\u5668\u53ef\u4ee5\u63d0\u53d6\u82f1\u8bed\u5355\u8bcd\u7684 \u8bcd\u5e72 \u3002 <\/p>\n<p>\u82f1\u8bed \u5206\u8bcd\u5668\u4f1a\u4ea7\u751f\u4e0b\u9762\u7684\u8bcd\u6761\uff1a<\/p>\n<p>set, shape, semi, transpar, call, set_tran, 5 <\/p>\n<p>\u6ce8\u610f\u770b transparent\u3001 calling \u548c set_trans \u5df2\u7ecf\u53d8\u4e3a\u8bcd\u6839\u683c\u5f0f<\/p>\n<p>4.7.2 \u5206\u6790\u5668\u4f7f\u7528\u573a\u666f <\/p>\n<p>\u5f53\u6211\u4eec \u7d22\u5f15 \u4e00\u4e2a\u6587\u6863\uff0c\u5b83\u7684\u5168\u6587\u57df\u88ab\u5206\u6790\u6210\u8bcd\u6761\u4ee5\u7528\u6765\u521b\u5efa\u5012\u6392\u7d22\u5f15\u3002 \u4f46\u662f\uff0c\u5f53\u6211 \u4eec\u5728\u5168\u6587\u57df \u641c\u7d22 \u7684\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u5c06\u67e5\u8be2\u5b57\u7b26\u4e32\u901a\u8fc7 \u76f8\u540c\u7684\u5206\u6790\u8fc7\u7a0b \uff0c\u4ee5\u4fdd\u8bc1\u6211\u4eec\u641c\u7d22 \u7684\u8bcd\u6761\u683c\u5f0f\u4e0e\u7d22\u5f15\u4e2d\u7684\u8bcd\u6761\u683c\u5f0f\u4e00\u81f4\u3002 <\/p>\n<p>\u5168\u6587\u67e5\u8be2\uff0c\u7406\u89e3\u6bcf\u4e2a\u57df\u662f\u5982\u4f55\u5b9a\u4e49\u7684\uff0c\u56e0\u6b64\u5b83\u4eec\u53ef\u4ee5\u505a\u6b63\u786e\u7684\u4e8b\uff1a <\/p>\n<ul>\n<li>\n<p>\u5f53\u4f60\u67e5\u8be2\u4e00\u4e2a \u5168\u6587 \u57df\u65f6\uff0c \u4f1a\u5bf9\u67e5\u8be2\u5b57\u7b26\u4e32\u5e94\u7528\u76f8\u540c\u7684\u5206\u6790\u5668\uff0c\u4ee5\u4ea7\u751f\u6b63\u786e\u7684\u641c \u7d22\u8bcd\u6761\u5217\u8868\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5f53\u4f60\u67e5\u8be2\u4e00\u4e2a \u7cbe\u786e\u503c \u57df\u65f6\uff0c\u4e0d\u4f1a\u5206\u6790\u67e5\u8be2\u5b57\u7b26\u4e32\uff0c\u800c\u662f\u641c\u7d22\u4f60\u6307\u5b9a\u7684\u7cbe\u786e\u503c\u3002 <\/p>\n<\/li>\n<\/ul>\n<p>4.7.3 \u6d4b\u8bd5\u5206\u6790\u5668<\/p>\n<pre><code>\u6709\u4e9b\u65f6\u5019\u5f88\u96be\u7406\u89e3\u5206\u8bcd\u7684\u8fc7\u7a0b\u548c\u5b9e\u9645\u88ab\u5b58\u50a8\u5230\u7d22\u5f15\u4e2d\u7684\u8bcd\u6761\uff0c\u7279\u522b\u662f\u4f60\u521a\u63a5\u89e6 Elasticsearch\u3002\u4e3a\u4e86\u7406\u89e3\u53d1\u751f\u4e86\u4ec0\u4e48\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528 analyze API \u6765\u770b\u6587\u672c\u662f\u5982\u4f55\u88ab\u5206\u6790\u7684\u3002 \u5728\u6d88\u606f\u4f53\u91cc\uff0c\u6307\u5b9a\u5206\u6790\u5668\u548c\u8981\u5206\u6790\u7684\u6587\u672c <\/code><\/pre>\n<pre><code class=\"language-json\">GET http:\/\/localhost:9200\/_analyze\n{ &quot;analyzer&quot;: &quot;standard&quot;, &quot;text&quot;: &quot;Text to analyze&quot; } <\/code><\/pre>\n<p>\u7ed3\u679c\u4e2d\u6bcf\u4e2a\u5143\u7d20\u4ee3\u8868\u4e00\u4e2a\u5355\u72ec\u7684\u8bcd\u6761\uff1a<\/p>\n<pre><code class=\"language-json\">{\n    &quot;tokens&quot;: [\n        {\n            &quot;token&quot;: &quot;text&quot;,\n            &quot;start_offset&quot;: 0,\n            &quot;end_offset&quot;: 4,\n            &quot;type&quot;: &quot; &quot;,\n            &quot;position&quot;: 1\n        },\n        {\n            &quot;token&quot;: &quot;to&quot;,\n            &quot;start_offset&quot;: 5,\n            &quot;end_offset&quot;: 7,\n            &quot;type&quot;: &quot; &quot;,\n            &quot;position&quot;: 2\n        },\n        {\n            &quot;token&quot;: &quot;analyze&quot;,\n            &quot;start_offset&quot;: 8,\n            &quot;end_offset&quot;: 15,\n            &quot;type&quot;: &quot; &quot;,\n            &quot;position&quot;: 3\n        }\n    ]\n}<\/code><\/pre>\n<p>token \u662f\u5b9e\u9645\u5b58\u50a8\u5230\u7d22\u5f15\u4e2d\u7684\u8bcd\u6761\u3002 position \u6307\u660e\u8bcd\u6761\u5728\u539f\u59cb\u6587\u672c\u4e2d\u51fa\u73b0\u7684\u4f4d\u7f6e\u3002 start_offset \u548c end_offset \u6307\u660e\u5b57\u7b26\u5728\u539f\u59cb\u5b57\u7b26\u4e32\u4e2d\u7684\u4f4d\u7f6e\u3002 <\/p>\n<p>4.7.4 \u6307\u5b9a\u5206\u6790\u5668 <\/p>\n<p>\u200b   \u5f53Elasticsearch\u5728\u4f60\u7684\u6587\u6863\u4e2d\u68c0\u6d4b\u5230\u4e00\u4e2a\u65b0\u7684\u5b57\u7b26\u4e32\u57df\uff0c\u5b83\u4f1a\u81ea\u52a8\u8bbe\u7f6e\u5176\u4e3a\u4e00\u4e2a\u5168\u6587 \u5b57 \u7b26\u4e32 \u57df\uff0c\u4f7f\u7528 \u6807\u51c6 \u5206\u6790\u5668\u5bf9\u5b83\u8fdb\u884c\u5206\u6790\u3002\u4f60\u4e0d\u5e0c\u671b\u603b\u662f\u8fd9\u6837\u3002\u53ef\u80fd\u4f60\u60f3\u4f7f\u7528\u4e00\u4e2a\u4e0d\u540c\u7684 \u5206\u6790\u5668\uff0c\u9002\u7528\u4e8e\u4f60\u7684\u6570\u636e\u4f7f\u7528\u7684\u8bed\u8a00\u3002\u6709\u65f6\u5019\u4f60\u60f3\u8981\u4e00\u4e2a\u5b57\u7b26\u4e32\u57df\u5c31\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\u57df\u2014\u4e0d\u4f7f\u7528\u5206\u6790\uff0c\u76f4\u63a5\u7d22\u5f15\u4f60\u4f20\u5165\u7684\u7cbe\u786e\u503c\uff0c\u4f8b\u5982\u7528\u6237 ID \u6216\u8005\u4e00\u4e2a\u5185\u90e8\u7684\u72b6\u6001\u57df\u6216\u6807\u7b7e\u3002\u8981\u505a\u5230\u8fd9 \u4e00\u70b9\uff0c\u6211\u4eec\u5fc5\u987b\u624b\u52a8\u6307\u5b9a\u8fd9\u4e9b\u57df\u7684\u6620\u5c04\u3002 <\/p>\n<p>4.7.5 IK \u5206\u8bcd\u5668 <\/p>\n<p>\u9996\u5148\u6211\u4eec\u901a\u8fc7 Postman \u53d1\u9001 GET \u8bf7\u6c42\u67e5\u8be2\u5206\u8bcd\u6548\u679c <\/p>\n<pre><code class=\"language-shell\">GET http:\/\/localhost:9200\/_analyze { &quot;text&quot;:&quot;\u6d4b\u8bd5\u5355\u8bcd&quot; } <\/code><\/pre>\n<p>ES \u7684\u9ed8\u8ba4\u5206\u8bcd\u5668\u65e0\u6cd5\u8bc6\u522b\u4e2d\u6587\u4e2d\u6d4b\u8bd5\u3001\u5355\u8bcd\u8fd9\u6837\u7684\u8bcd\u6c47\uff0c\u800c\u662f\u7b80\u5355\u7684\u5c06\u6bcf\u4e2a\u5b57\u62c6\u5b8c\u5206\u4e3a\u4e00\u4e2a\u8bcd<\/p>\n<pre><code class=\"language-json\">{\n    &quot;tokens&quot;: [\n        {\n            &quot;token&quot;: &quot;\u6d4b&quot;,\n            &quot;start_offset&quot;: 0,\n            &quot;end_offset&quot;: 1,\n            &quot;type&quot;: &quot; &quot;,\n            &quot;position&quot;: 0\n        },\n        {\n            &quot;token&quot;: &quot;\u8bd5&quot;,\n            &quot;start_offset&quot;: 1,\n            &quot;end_offset&quot;: 2,\n            &quot;type&quot;: &quot; &quot;,\n            &quot;position&quot;: 1\n        },\n        {\n            &quot;token&quot;: &quot;\u5355&quot;,\n            &quot;start_offset&quot;: 2,\n            &quot;end_offset&quot;: 3,\n            &quot;type&quot;: &quot; &quot;,\n            &quot;position&quot;: 2\n        },\n        {\n            &quot;token&quot;: &quot;\u8bcd&quot;,\n            &quot;start_offset&quot;: 3,\n            &quot;end_offset&quot;: 4,\n            &quot;type&quot;: &quot; &quot;,\n            &quot;position&quot;: 3\n        }\n    ]\n}<\/code><\/pre>\n<p>\u8fd9\u6837\u7684\u7ed3\u679c\u663e\u7136\u4e0d\u7b26\u5408\u6211\u4eec\u7684\u4f7f\u7528\u8981\u6c42\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u4e0b\u8f7d ES \u5bf9\u5e94\u7248\u672c\u7684\u4e2d\u6587\u5206\u8bcd\u5668\u3002 <\/p>\n<p>\u6211\u4eec\u8fd9\u91cc\u91c7\u7528 IK \u4e2d\u6587\u5206\u8bcd\u5668\uff0c<\/p>\n<p>\u4e0b\u8f7d\u5730\u5740\u4e3a: <a href=\"https:\/\/github.com\/medcl\/elasticsearch-analysis-ik\/releases\/tag\/v7.8.0\">https:\/\/github.com\/medcl\/elasticsearch-analysis-ik\/releases\/tag\/v7.8.0<\/a> <\/p>\n<p>\u5c06\u89e3\u538b\u540e\u7684\u540e\u7684\u6587\u4ef6\u5939\u653e\u5165 ES \u6839\u76ee\u5f55\u4e0b\u7684 plugins \u76ee\u5f55\u4e0b\uff0c\u91cd\u542f ES \u5373\u53ef\u4f7f\u7528\u3002 <\/p>\n<p>\u6211\u4eec\u8fd9\u6b21\u52a0\u5165\u65b0\u7684\u67e5\u8be2\u53c2\u6570&quot;analyzer&quot;:&quot;ik_max_word&quot; <\/p>\n<pre><code class=\"language-json\">#GET http:\/\/localhost:9200\/_analyze\n{ &quot;text&quot;:&quot;\u6d4b\u8bd5\u5355\u8bcd&quot;, &quot;analyzer&quot;:&quot;ik_max_word&quot; } <\/code><\/pre>\n<ul>\n<li>\n<p>ik_max_word\uff1a\u4f1a\u5c06\u6587\u672c\u505a\u6700\u7ec6\u7c92\u5ea6\u7684\u62c6\u5206 <\/p>\n<\/li>\n<li>\n<p>ik_smart\uff1a\u4f1a\u5c06\u6587\u672c\u505a\u6700\u7c97\u7c92\u5ea6\u7684\u62c6\u5206 <\/p>\n<\/li>\n<\/ul>\n<p>\u4f7f\u7528\u4e2d\u6587\u5206\u8bcd\u540e\u7684\u7ed3\u679c\u4e3a\uff1a<\/p>\n<pre><code class=\"language-json\">{\n    &quot;tokens&quot;: [\n        {\n            &quot;token&quot;: &quot;\u6d4b\u8bd5&quot;,\n            &quot;start_offset&quot;: 0,\n            &quot;end_offset&quot;: 2,\n            &quot;type&quot;: &quot;CN_WORD&quot;,\n            &quot;position&quot;: 0\n        },\n        {\n            &quot;token&quot;: &quot;\u5355\u8bcd&quot;,\n            &quot;start_offset&quot;: 2,\n            &quot;end_offset&quot;: 4,\n            &quot;type&quot;: &quot;CN_WORD&quot;,\n            &quot;position&quot;: 1\n        }\n    ]\n}<\/code><\/pre>\n<p>ES \u4e2d\u4e5f\u53ef\u4ee5\u8fdb\u884c\u6269\u5c55\u8bcd\u6c47\uff0c\u9996\u5148\u67e5\u8be2 <\/p>\n<pre><code class=\"language-json\">#GET http:\/\/localhost:9200\/_analyze\n{ &quot;text&quot;:&quot;\u5f17\u96f7\u5c14\u5353\u5fb7&quot;, &quot;analyzer&quot;:&quot;ik_max_word&quot; } <\/code><\/pre>\n<p>\u4ec5\u4ec5\u53ef\u4ee5\u5f97\u5230\u6bcf\u4e2a\u5b57\u7684\u5206\u8bcd\u7ed3\u679c\uff0c\u6211\u4eec\u9700\u8981\u505a\u7684\u5c31\u662f\u4f7f\u5206\u8bcd\u5668\u8bc6\u522b\u5230\u5f17\u96f7\u5c14\u5353\u5fb7\u4e5f\u662f\u4e00\u4e2a\u8bcd \u8bed <\/p>\n<pre><code class=\"language-json\">{\n    &quot;tokens&quot;: [\n        {\n            &quot;token&quot;: &quot;\u5f17&quot;,\n            &quot;start_offset&quot;: 0,\n            &quot;end_offset&quot;: 1,\n            &quot;type&quot;: &quot;CN_CHAR&quot;,\n            &quot;position&quot;: 0\n        },\n        {\n            &quot;token&quot;: &quot;\u96f7&quot;,\n            &quot;start_offset&quot;: 1,\n            &quot;end_offset&quot;: 2,\n            &quot;type&quot;: &quot;CN_CHAR&quot;,\n            &quot;position&quot;: 1\n        },\n        {\n            &quot;token&quot;: &quot;\u5c14&quot;,\n            &quot;start_offset&quot;: 2,\n            &quot;end_offset&quot;: 3,\n            &quot;type&quot;: &quot;CN_CHAR&quot;,\n            &quot;position&quot;: 2\n        },\n        {\n            &quot;token&quot;: &quot;\u5353&quot;,\n            &quot;start_offset&quot;: 3,\n            &quot;end_offset&quot;: 4,\n            &quot;type&quot;: &quot;CN_CHAR&quot;,\n            &quot;position&quot;: 3\n        },\n        {\n            &quot;token&quot;: &quot;\u5fb7&quot;,\n            &quot;start_offset&quot;: 4,\n            &quot;end_offset&quot;: 5,\n            &quot;type&quot;: &quot;CN_CHAR&quot;,\n            &quot;position&quot;: 4\n        }\n    ]\n}<\/code><\/pre>\n<p>\u9996\u5148\u8fdb\u5165 ES \u6839\u76ee\u5f55\u4e2d\u7684 plugins \u6587\u4ef6\u5939\u4e0b\u7684 ik \u6587\u4ef6\u5939\uff0c\u8fdb\u5165 config \u76ee\u5f55\uff0c\u521b\u5efa custom.dic \u6587\u4ef6\uff0c\u5199\u5165\u5f17\u96f7\u5c14\u5353\u5fb7\u3002\u540c\u65f6\u6253\u5f00 IKAnalyzer.cfg.xml \u6587\u4ef6\uff0c\u5c06\u65b0\u5efa\u7684 custom.dic \u914d\u7f6e\u5176\u4e2d\uff0c \u91cd\u542f ES \u670d\u52a1\u5668\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525215840182.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525215840182.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525215840182\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525215903934.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525215903934.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525215903934\" \/><\/div><\/p>\n<p>4.7.6 \u81ea\u5b9a\u4e49\u5206\u6790\u5668 <\/p>\n<p>\u200b   \u867d\u7136 Elasticsearch \u5e26\u6709\u4e00\u4e9b\u73b0\u6210\u7684\u5206\u6790\u5668\uff0c\u7136\u800c\u5728\u5206\u6790\u5668\u4e0a Elasticsearch \u771f\u6b63\u7684\u5f3a\u5927\u4e4b \u5904\u5728\u4e8e\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u5728\u4e00\u4e2a\u9002\u5408\u4f60\u7684\u7279\u5b9a\u6570\u636e\u7684\u8bbe\u7f6e\u4e4b\u4e2d\u7ec4\u5408\u5b57\u7b26\u8fc7\u6ee4\u5668\u3001\u5206\u8bcd\u5668\u3001\u8bcd\u6c47\u5355 \u5143\u8fc7\u6ee4\u5668\u6765\u521b\u5efa\u81ea\u5b9a\u4e49\u7684\u5206\u6790\u5668\u3002\u5728 \u5206\u6790\u4e0e\u5206\u6790\u5668 \u6211\u4eec\u8bf4\u8fc7\uff0c\u4e00\u4e2a \u5206\u6790\u5668 \u5c31\u662f\u5728\u4e00\u4e2a\u5305 \u91cc\u9762\u7ec4\u5408\u4e86\u4e09\u79cd\u51fd\u6570\u7684\u4e00\u4e2a\u5305\u88c5\u5668\uff0c \u4e09\u79cd\u51fd\u6570\u6309\u7167\u987a\u5e8f\u88ab\u6267\u884c: <\/p>\n<ul>\n<li>\n<p>\u5b57\u7b26\u8fc7\u6ee4\u5668 <\/p>\n<p>\u5b57\u7b26\u8fc7\u6ee4\u5668 \u7528\u6765 \u6574\u7406 \u4e00\u4e2a\u5c1a\u672a\u88ab\u5206\u8bcd\u7684\u5b57\u7b26\u4e32\u3002\u4f8b\u5982\uff0c\u5982\u679c\u6211\u4eec\u7684\u6587\u672c\u662f HTML \u683c \u5f0f\u7684\uff0c\u5b83\u4f1a\u5305\u542b\u50cf \\<\/p>\n<p>\u6216\u8005 \\<\/p>\n<div>\u8fd9\u6837\u7684 HTML \u6807\u7b7e\uff0c\u8fd9\u4e9b\u6807\u7b7e\u662f\u6211\u4eec\u4e0d\u60f3\u7d22\u5f15\u7684\u3002\u6211 \u4eec\u53ef\u4ee5\u4f7f\u7528 html \u6e05\u9664 \u5b57\u7b26\u8fc7\u6ee4\u5668 \u6765\u79fb\u9664\u6389\u6240\u6709\u7684 HTML \u6807\u7b7e\uff0c\u5e76\u4e14\u50cf\u628a\\&Aacute; \u8f6c\u6362 \u4e3a\u76f8\u5bf9\u5e94\u7684 Unicode \u5b57\u7b26 \u00c1 \u8fd9\u6837\uff0c\u8f6c\u6362 HTML \u5b9e\u4f53\u3002\u4e00\u4e2a\u5206\u6790\u5668\u53ef\u80fd\u6709 0 \u4e2a\u6216\u8005\u591a\u4e2a\u5b57\u7b26 \u8fc7\u6ee4\u5668\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5206\u8bcd\u5668 <\/p>\n<p>\u4e00\u4e2a\u5206\u6790\u5668 \u5fc5\u987b \u6709\u4e00\u4e2a\u552f\u4e00\u7684\u5206\u8bcd\u5668\u3002 \u5206\u8bcd\u5668\u628a\u5b57\u7b26\u4e32\u5206\u89e3\u6210\u5355\u4e2a\u8bcd\u6761\u6216\u8005\u8bcd\u6c47\u5355 \u5143\u3002 \u6807\u51c6 \u5206\u6790\u5668\u91cc\u4f7f\u7528\u7684 \u6807\u51c6 \u5206\u8bcd\u5668 \u628a\u4e00\u4e2a\u5b57\u7b26\u4e32\u6839\u636e\u5355\u8bcd\u8fb9\u754c\u5206\u89e3\u6210\u5355\u4e2a\u8bcd\u6761\uff0c\u5e76 \u4e14\u79fb\u9664\u6389\u5927\u90e8\u5206\u7684\u6807\u70b9\u7b26\u53f7\uff0c\u7136\u800c\u8fd8\u6709\u5176\u4ed6\u4e0d\u540c\u884c\u4e3a\u7684\u5206\u8bcd\u5668\u5b58\u5728\u3002<\/p>\n<p>\u4f8b\u5982\uff0c \u5173\u952e\u8bcd \u5206\u8bcd\u5668 \u5b8c\u6574\u5730\u8f93\u51fa \u63a5\u6536\u5230\u7684\u540c\u6837\u7684\u5b57\u7b26\u4e32\uff0c\u5e76\u4e0d\u505a\u4efb\u4f55\u5206\u8bcd\u3002 \u7a7a\u683c \u5206\u8bcd \u5668 \u53ea\u6839\u636e\u7a7a\u683c\u5206\u5272\u6587\u672c \u3002 \u6b63\u5219 \u5206\u8bcd\u5668 \u6839\u636e\u5339\u914d\u6b63\u5219\u8868\u8fbe\u5f0f\u6765\u5206\u5272\u6587\u672c \u3002 <\/p>\n<\/li>\n<li>\n<p>\u8bcd\u5355\u5143\u8fc7\u6ee4\u5668 <\/p>\n<p>\u7ecf\u8fc7\u5206\u8bcd\uff0c\u4f5c\u4e3a\u7ed3\u679c\u7684 \u8bcd\u5355\u5143\u6d41 \u4f1a\u6309\u7167\u6307\u5b9a\u7684\u987a\u5e8f\u901a\u8fc7\u6307\u5b9a\u7684\u8bcd\u5355\u5143\u8fc7\u6ee4\u5668 \u3002 \u8bcd\u5355\u5143\u8fc7\u6ee4\u5668\u53ef\u4ee5\u4fee\u6539\u3001\u6dfb\u52a0\u6216\u8005\u79fb\u9664\u8bcd\u5355\u5143\u3002\u6211\u4eec\u5df2\u7ecf\u63d0\u5230\u8fc7 lowercase \u548c stop \u8bcd\u8fc7\u6ee4 \u5668 \uff0c\u4f46\u662f\u5728 Elasticsearch \u91cc\u9762\u8fd8\u6709\u5f88\u591a\u53ef\u4f9b\u9009\u62e9\u7684\u8bcd\u5355\u5143\u8fc7\u6ee4\u5668\u3002\u8bcd\u5e72\u8fc7\u6ee4\u5668 \u628a\u5355\u8bcd \u904f \u5236 \u4e3a \u8bcd\u5e72\u3002 ascii_folding \u8fc7\u6ee4\u5668\u79fb\u9664\u53d8\u97f3\u7b26\uff0c\u628a\u4e00\u4e2a\u50cf &quot;tr\u00e8s&quot; \u8fd9\u6837\u7684\u8bcd\u8f6c\u6362\u4e3a &quot;tres&quot; \u3002 <\/p>\n<\/li>\n<\/ul>\n<p>ngram \u548c edge_ngram \u8bcd\u5355\u5143\u8fc7\u6ee4\u5668 \u53ef\u4ee5\u4ea7\u751f \u9002\u5408\u7528\u4e8e\u90e8\u5206\u5339\u914d\u6216\u8005\u81ea\u52a8\u8865\u5168\u7684\u8bcd\u5355\u5143\u3002 <\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u770b\u770b\u5982\u4f55\u521b\u5efa\u81ea\u5b9a\u4e49\u7684\u5206\u6790\u5668\uff1a<\/p>\n<pre><code class=\"language-json\">#PUT http:\/\/localhost:9200\/my_index\n{\n    &quot;settings&quot;: {\n        &quot;analysis&quot;: {\n            &quot;char_filter&quot;: {\n                &quot;&amp;_to_and&quot;: {\n                    &quot;type&quot;: &quot;mapping&quot;,\n                    &quot;mappings&quot;: [\n                        &quot;&amp;=&gt; and &quot;\n                    ]\n                }\n            },\n            &quot;filter&quot;: {\n                &quot;my_stopwords&quot;: {\n                    &quot;type&quot;: &quot;stop&quot;,\n                    &quot;stopwords&quot;: [\n                        &quot;the&quot;,\n                        &quot;a&quot;\n                    ]\n                }\n            },\n            &quot;analyzer&quot;: {\n                &quot;my_analyzer&quot;: {\n                    &quot;type&quot;: &quot;custom&quot;,\n                    &quot;char_filter&quot;: [\n                        &quot;html_strip&quot;,\n                        &quot;&amp;_to_and&quot;\n                    ],\n                    &quot;tokenizer&quot;: &quot;standard&quot;,\n                    &quot;filter&quot;: [\n                        &quot;lowercase&quot;,\n                        &quot;my_stopwords&quot;\n                    ]\n                }\n            }\n        }\n    }\n}<\/code><\/pre>\n<p>\u7d22\u5f15\u88ab\u521b\u5efa\u4ee5\u540e\uff0c\u4f7f\u7528 analyze API \u6765 \u6d4b\u8bd5\u8fd9\u4e2a\u65b0\u7684\u5206\u6790\u5668 <\/p>\n<pre><code class=\"language-json\">GET http:\/\/127.0.0.1:9200\/my_index\/_analyze\n{ &quot;text&quot;:&quot;The quick &amp; brown fox&quot;, &quot;analyzer&quot;: &quot;my_analyzer&quot; }<\/code><\/pre>\n<p>\u4e0b\u9762\u7684\u7f29\u7565\u7ed3\u679c\u5c55\u793a\u51fa\u6211\u4eec\u7684\u5206\u6790\u5668\u6b63\u5728\u6b63\u786e\u5730\u8fd0\u884c <\/p>\n<pre><code class=\"language-json\">{\n    &quot;tokens&quot;: [\n        {\n            &quot;token&quot;: &quot;quick&quot;,\n            &quot;start_offset&quot;: 4,\n            &quot;end_offset&quot;: 9,\n            &quot;type&quot;: &quot;&quot;,\n            &quot;position&quot;: 1\n        },\n        {\n            &quot;token&quot;: &quot;and&quot;,\n            &quot;start_offset&quot;: 10,\n            &quot;end_offset&quot;: 11,\n            &quot;type&quot;: &quot;&quot;,\n            &quot;position&quot;: 2\n        },\n        {\n            &quot;token&quot;: &quot;brown&quot;,\n            &quot;start_offset&quot;: 12,\n            &quot;end_offset&quot;: 17,\n            &quot;type&quot;: &quot;&quot;,\n            &quot;position&quot;: 3\n        },\n        {\n            &quot;token&quot;: &quot;fox&quot;,\n            &quot;start_offset&quot;: 18,\n            &quot;end_offset&quot;: 21,\n            &quot;type&quot;: &quot;&quot;,\n            &quot;position&quot;: 4\n        }\n    ]\n}<\/code><\/pre>\n<h3>4.8 \u6587\u6863\u5904\u7406<\/h3>\n<p>4.8.1 \u6587\u6863\u51b2\u7a81 <\/p>\n<p>\u200b   \u5f53\u6211\u4eec\u4f7f\u7528 index API \u66f4\u65b0\u6587\u6863 \uff0c\u53ef\u4ee5\u4e00\u6b21\u6027\u8bfb\u53d6\u539f\u59cb\u6587\u6863\uff0c\u505a\u6211\u4eec\u7684\u4fee\u6539\uff0c\u7136\u540e\u91cd \u65b0\u7d22\u5f15 \u6574\u4e2a\u6587\u6863 \u3002 \u6700\u8fd1\u7684\u7d22\u5f15\u8bf7\u6c42\u5c06\u83b7\u80dc\uff1a\u65e0\u8bba\u6700\u540e\u54ea\u4e00\u4e2a\u6587\u6863\u88ab\u7d22\u5f15\uff0c\u90fd\u5c06\u88ab\u552f\u4e00\u5b58 \u50a8\u5728 Elasticsearch \u4e2d\u3002\u5982\u679c\u5176\u4ed6\u4eba\u540c\u65f6\u66f4\u6539\u8fd9\u4e2a\u6587\u6863\uff0c\u4ed6\u4eec\u7684\u66f4\u6539\u5c06\u4e22\u5931\u3002 <\/p>\n<p>\u200b   \u5f88\u591a\u65f6\u5019\u8fd9\u662f\u6ca1\u6709\u95ee\u9898\u7684\u3002\u4e5f\u8bb8\u6211\u4eec\u7684\u4e3b\u6570\u636e\u5b58\u50a8\u662f\u4e00\u4e2a\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff0c\u6211\u4eec\u53ea\u662f\u5c06\u6570 \u636e\u590d\u5236\u5230 Elasticsearch \u4e2d\u5e76\u4f7f\u5176\u53ef\u88ab\u641c\u7d22\u3002 \u4e5f\u8bb8\u4e24\u4e2a\u4eba\u540c\u65f6\u66f4\u6539\u76f8\u540c\u7684\u6587\u6863\u7684\u51e0\u7387\u5f88\u5c0f\u3002 \u6216\u8005\u5bf9\u4e8e\u6211\u4eec\u7684\u4e1a\u52a1\u6765\u8bf4\u5076\u5c14\u4e22\u5931\u66f4\u6539\u5e76\u4e0d\u662f\u5f88\u4e25\u91cd\u7684\u95ee\u9898\u3002 <\/p>\n<p>\u200b   \u4f46\u6709\u65f6\u4e22\u5931\u4e86\u4e00\u4e2a\u53d8\u66f4\u5c31\u662f \u975e\u5e38\u4e25\u91cd\u7684 \u3002\u8bd5\u60f3\u6211\u4eec\u4f7f\u7528 Elasticsearch \u5b58\u50a8\u6211\u4eec\u7f51\u4e0a \u5546\u57ce\u5546\u54c1\u5e93\u5b58\u7684\u6570\u91cf\uff0c \u6bcf\u6b21\u6211\u4eec\u5356\u4e00\u4e2a\u5546\u54c1\u7684\u65f6\u5019\uff0c\u6211\u4eec\u5728 Elasticsearch \u4e2d\u5c06\u5e93\u5b58\u6570\u91cf\u51cf \u5c11\u3002\u6709\u4e00\u5929\uff0c\u7ba1\u7406\u5c42\u51b3\u5b9a\u505a\u4e00\u6b21\u4fc3\u9500\u3002\u7a81\u7136\u5730\uff0c\u6211\u4eec\u4e00\u79d2\u8981\u5356\u597d\u51e0\u4e2a\u5546\u54c1\u3002 \u5047\u8bbe\u6709\u4e24\u4e2a web \u7a0b\u5e8f\u5e76\u884c\u8fd0\u884c\uff0c\u6bcf\u4e00\u4e2a\u90fd\u540c\u65f6\u5904\u7406\u6240\u6709\u5546\u54c1\u7684\u9500\u552e <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525221035079.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525221035079.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525221035079\" \/><\/div><\/p>\n<p>\u200b   web_1 \u5bf9 stock_count \u6240\u505a\u7684\u66f4\u6539\u5df2\u7ecf\u4e22\u5931\uff0c\u56e0\u4e3a web_2 \u4e0d\u77e5\u9053\u5b83\u7684 stock_count \u7684 \u62f7\u8d1d\u5df2\u7ecf\u8fc7\u671f\u3002 \u7ed3\u679c\u6211\u4eec\u4f1a\u8ba4\u4e3a\u6709\u8d85\u8fc7\u5546\u54c1\u7684\u5b9e\u9645\u6570\u91cf\u7684\u5e93\u5b58\uff0c\u56e0\u4e3a\u5356\u7ed9\u987e\u5ba2\u7684\u5e93\u5b58\u5546\u54c1 \u5e76\u4e0d\u5b58\u5728\uff0c\u6211\u4eec\u5c06\u8ba9\u4ed6\u4eec\u975e\u5e38\u5931\u671b\u3002 <\/p>\n<p>\u200b   \u53d8\u66f4\u8d8a\u9891\u7e41\uff0c\u8bfb\u6570\u636e\u548c\u66f4\u65b0\u6570\u636e\u7684\u95f4\u9699\u8d8a\u957f\uff0c\u4e5f\u5c31\u8d8a\u53ef\u80fd\u4e22\u5931\u53d8\u66f4\u3002 <\/p>\n<p>\u200b   \u5728\u6570\u636e\u5e93\u9886\u57df\u4e2d\uff0c\u6709\u4e24\u79cd\u65b9\u6cd5\u901a\u5e38\u88ab\u7528\u6765\u786e\u4fdd\u5e76\u53d1\u66f4\u65b0\u65f6\u53d8\u66f4\u4e0d\u4f1a\u4e22\u5931\uff1a <\/p>\n<ul>\n<li>\u60b2\u89c2\u5e76\u53d1\u63a7\u5236 <\/li>\n<\/ul>\n<p>\u8fd9\u79cd\u65b9\u6cd5\u88ab\u5173\u7cfb\u578b\u6570\u636e\u5e93\u5e7f\u6cdb\u4f7f\u7528\uff0c\u5b83\u5047\u5b9a\u6709\u53d8\u66f4\u51b2\u7a81\u53ef\u80fd\u53d1\u751f\uff0c\u56e0\u6b64\u963b\u585e\u8bbf\u95ee\u8d44\u6e90\u4ee5 \u9632\u6b62\u51b2\u7a81\u3002 \u4e00\u4e2a\u5178\u578b\u7684\u4f8b\u5b50\u662f\u8bfb\u53d6\u4e00\u884c\u6570\u636e\u4e4b\u524d\u5148\u5c06\u5176\u9501\u4f4f\uff0c\u786e\u4fdd\u53ea\u6709\u653e\u7f6e\u9501\u7684\u7ebf\u7a0b\u80fd\u591f \u5bf9\u8fd9\u884c\u6570\u636e\u8fdb\u884c\u4fee\u6539\u3002 <\/p>\n<ul>\n<li>\n<p>\u4e50\u89c2\u5e76\u53d1\u63a7\u5236<\/p>\n<p>Elasticsearch \u4e2d\u4f7f\u7528\u7684\u8fd9\u79cd\u65b9\u6cd5\u5047\u5b9a\u51b2\u7a81\u662f\u4e0d\u53ef\u80fd\u53d1\u751f\u7684\uff0c\u5e76\u4e14\u4e0d\u4f1a\u963b\u585e\u6b63\u5728\u5c1d\u8bd5\u7684\u64cd \u4f5c\u3002 \u7136\u800c\uff0c\u5982\u679c\u6e90\u6570\u636e\u5728\u8bfb\u5199\u5f53\u4e2d\u88ab\u4fee\u6539\uff0c\u66f4\u65b0\u5c06\u4f1a\u5931\u8d25\u3002\u5e94\u7528\u7a0b\u5e8f\u63a5\u4e0b\u6765\u5c06\u51b3\u5b9a\u8be5\u5982\u4f55 \u89e3\u51b3\u51b2\u7a81\u3002 \u4f8b\u5982\uff0c\u53ef\u4ee5\u91cd\u8bd5\u66f4\u65b0\u3001\u4f7f\u7528\u65b0\u7684\u6570\u636e\u3001\u6216\u8005\u5c06\u76f8\u5173\u60c5\u51b5\u62a5\u544a\u7ed9\u7528\u6237\u3002 <\/p>\n<\/li>\n<\/ul>\n<p>4.8.2 \u4e50\u89c2\u5e76\u53d1\u63a7\u5236 <\/p>\n<p>\u200b   Elasticsearch \u662f\u5206\u5e03\u5f0f\u7684\u3002\u5f53\u6587\u6863\u521b\u5efa\u3001\u66f4\u65b0\u6216\u5220\u9664\u65f6\uff0c \u65b0\u7248\u672c\u7684\u6587\u6863\u5fc5\u987b\u590d\u5236\u5230\u96c6 \u7fa4\u4e2d\u7684\u5176\u4ed6\u8282\u70b9\u3002Elasticsearch \u4e5f\u662f\u5f02\u6b65\u548c\u5e76\u53d1\u7684\uff0c\u8fd9\u610f\u5473\u7740\u8fd9\u4e9b\u590d\u5236\u8bf7\u6c42\u88ab\u5e76\u884c\u53d1\u9001\uff0c\u5e76 \u4e14\u5230\u8fbe\u76ee\u7684\u5730\u65f6\u4e5f\u8bb8 \u987a\u5e8f\u662f\u4e71\u7684 \u3002 Elasticsearch \u9700\u8981\u4e00\u79cd\u65b9\u6cd5\u786e\u4fdd\u6587\u6863\u7684\u65e7\u7248\u672c\u4e0d\u4f1a\u8986 \u76d6\u65b0\u7684\u7248\u672c\u3002 <\/p>\n<p>\u200b   \u5f53\u6211\u4eec\u4e4b\u524d\u8ba8\u8bba index \uff0cGET \u548c delete \u8bf7\u6c42\u65f6\uff0c\u6211\u4eec\u6307\u51fa\u6bcf\u4e2a\u6587\u6863\u90fd\u6709\u4e00\u4e2a _version \uff08\u7248\u672c\uff09\u53f7\uff0c\u5f53\u6587\u6863\u88ab\u4fee\u6539\u65f6\u7248\u672c\u53f7\u9012\u589e\u3002 Elasticsearch \u4f7f\u7528\u8fd9\u4e2a version \u53f7\u6765\u786e\u4fdd\u53d8\u66f4 \u4ee5\u6b63\u786e\u987a\u5e8f\u5f97\u5230\u6267\u884c\u3002\u5982\u679c\u65e7\u7248\u672c\u7684\u6587\u6863\u5728\u65b0\u7248\u672c\u4e4b\u540e\u5230\u8fbe\uff0c\u5b83\u53ef\u4ee5\u88ab\u7b80\u5355\u7684\u5ffd\u7565\u3002 <\/p>\n<p>\u200b   \u6211\u4eec\u53ef\u4ee5\u5229\u7528 version \u53f7\u6765\u786e\u4fdd \u5e94\u7528\u4e2d\u76f8\u4e92\u51b2\u7a81\u7684\u53d8\u66f4\u4e0d\u4f1a\u5bfc\u81f4\u6570\u636e\u4e22\u5931\u3002\u6211\u4eec\u901a\u8fc7 \u6307\u5b9a\u60f3\u8981\u4fee\u6539\u6587\u6863\u7684 version \u53f7\u6765\u8fbe\u5230\u8fd9\u4e2a\u76ee\u7684\u3002 \u5982\u679c\u8be5\u7248\u672c\u4e0d\u662f\u5f53\u524d\u7248\u672c\u53f7\uff0c\u6211\u4eec\u7684\u8bf7 \u6c42\u5c06\u4f1a\u5931\u8d25\u3002<\/p>\n<p>\u200b   \u8001\u7684\u7248\u672c es \u4f7f\u7528 version\uff0c\u4f46\u662f\u65b0\u7248\u672c\u4e0d\u652f\u6301\u4e86\uff0c\u4f1a\u62a5\u4e0b\u9762\u7684\u9519\u8bef\uff0c\u63d0\u793a\u6211\u4eec\u7528 if_seq_no \u548c if_primary_term <\/p>\n<pre><code class=\"language-json\">{\n    &quot;error&quot;: {\n        &quot;root_cause&quot;: [\n            {\n                &quot;type&quot;: &quot;action_request_validation_exception&quot;,\n                &quot;reason&quot;: &quot;Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use <code>if_seq_no<\/code> and <code>if_primary_term<\/code> instead;&quot;\n            }\n        ],\n        &quot;type&quot;: &quot;action_request_validation_exception&quot;,\n        &quot;reason&quot;: &quot;Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use <code>if_seq_no<\/code> and <code>if_primary_term<\/code> instead;&quot;\n    },\n    &quot;status&quot;: 400\n}<\/code><\/pre>\n<p>4.8.3 \u5916\u90e8\u7cfb\u7edf\u7248\u672c\u63a7\u5236 <\/p>\n<p>\u200b   \u4e00\u4e2a\u5e38\u89c1\u7684\u8bbe\u7f6e\u662f\u4f7f\u7528\u5176\u5b83\u6570\u636e\u5e93\u4f5c\u4e3a\u4e3b\u8981\u7684\u6570\u636e\u5b58\u50a8\uff0c\u4f7f\u7528 Elasticsearch \u505a\u6570\u636e\u68c0 \u7d22\uff0c \u8fd9\u610f\u5473\u7740\u4e3b\u6570\u636e\u5e93\u7684\u6240\u6709\u66f4\u6539\u53d1\u751f\u65f6\u90fd\u9700\u8981\u88ab\u590d\u5236\u5230 Elasticsearch \uff0c\u5982\u679c\u591a\u4e2a\u8fdb\u7a0b\u8d1f \u8d23\u8fd9\u4e00\u6570\u636e\u540c\u6b65\uff0c\u4f60\u53ef\u80fd\u9047\u5230\u7c7b\u4f3c\u4e8e\u4e4b\u524d\u63cf\u8ff0\u7684\u5e76\u53d1\u95ee\u9898\u3002 <\/p>\n<p>\u200b   \u5982\u679c\u4f60\u7684\u4e3b\u6570\u636e\u5e93\u5df2\u7ecf\u6709\u4e86\u7248\u672c\u53f7 \u2014 \u6216\u4e00\u4e2a\u80fd\u4f5c\u4e3a\u7248\u672c\u53f7\u7684\u5b57\u6bb5\u503c\u6bd4\u5982 timestamp\u2009\u2014 \u90a3\u4e48\u4f60\u5c31\u53ef\u4ee5\u5728 Elasticsearch \u4e2d\u901a\u8fc7\u589e\u52a0 version_type=external \u5230\u67e5\u8be2\u5b57\u7b26\u4e32\u7684\u65b9\u5f0f\u91cd\u7528 \u8fd9\u4e9b\u76f8\u540c\u7684\u7248\u672c\u53f7\uff0c \u7248\u672c\u53f7\u5fc5\u987b\u662f\u5927\u4e8e\u96f6\u7684\u6574\u6570\uff0c \u4e14\u5c0f\u4e8e 9.2E+18\u2009\u2014 \u4e00\u4e2a Java \u4e2d long \u7c7b\u578b\u7684\u6b63\u503c\u3002<\/p>\n<p>\u200b    \u5916\u90e8\u7248\u672c\u53f7\u7684\u5904\u7406\u65b9\u5f0f\u548c\u6211\u4eec\u4e4b\u524d\u8ba8\u8bba\u7684\u5185\u90e8\u7248\u672c\u53f7\u7684\u5904\u7406\u65b9\u5f0f\u6709\u4e9b\u4e0d\u540c\uff0c Elasticsearch \u4e0d\u662f\u68c0\u67e5\u5f53\u524d _version \u548c\u8bf7\u6c42\u4e2d\u6307\u5b9a\u7684\u7248\u672c\u53f7\u662f\u5426\u76f8\u540c\uff0c \u800c\u662f\u68c0\u67e5\u5f53\u524d _version \u662f\u5426 \u5c0f\u4e8e \u6307\u5b9a\u7684\u7248\u672c\u53f7\u3002 \u5982\u679c\u8bf7\u6c42\u6210\u529f\uff0c\u5916\u90e8\u7684\u7248\u672c\u53f7\u4f5c\u4e3a\u6587\u6863\u7684\u65b0 _version \u8fdb\u884c\u5b58\u50a8\u3002 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525221906621.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525221906621.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525221906621\" \/><\/div><\/p>\n<p>\u5916\u90e8\u7248\u672c\u53f7\u4e0d\u4ec5\u5728\u7d22\u5f15\u548c\u5220\u9664\u8bf7\u6c42\u662f\u53ef\u4ee5\u6307\u5b9a\uff0c\u800c\u4e14\u5728 \u521b\u5efa \u65b0\u6587\u6863\u65f6\u4e5f\u53ef\u4ee5\u6307\u5b9a\u3002 <\/p>\n<p>4.5 Kibana <\/p>\n<p>\u200b   Kibana \u662f\u4e00\u4e2a\u514d\u8d39\u4e14\u5f00\u653e\u7684\u7528\u6237\u754c\u9762\uff0c\u80fd\u591f\u8ba9\u4f60\u5bf9 Elasticsearch \u6570\u636e\u8fdb\u884c\u53ef\u89c6\u5316\uff0c\u5e76 \u8ba9\u4f60\u5728 Elastic Stack \u4e2d\u8fdb\u884c\u5bfc\u822a\u3002\u4f60\u53ef\u4ee5\u8fdb\u884c\u5404\u79cd\u64cd\u4f5c\uff0c\u4ece\u8ddf\u8e2a\u67e5\u8be2\u8d1f\u8f7d\uff0c\u5230\u7406\u89e3\u8bf7\u6c42\u5982 \u4f55\u6d41\u7ecf\u4f60\u7684\u6574\u4e2a\u5e94\u7528\uff0c\u90fd\u80fd\u8f7b\u677e\u5b8c\u6210\u3002 <\/p>\n<p>\u4e0b\u8f7d\u5730\u5740\uff1a<a href=\"https:\/\/artifacts.elastic.co\/downloads\/kibana\/kibana-7.8.0-windows-x86_64.zip\">https:\/\/artifacts.elastic.co\/downloads\/kibana\/kibana-7.8.0-windows-x86_64.zip<\/a> <\/p>\n<ol>\n<li>\n<p>\u89e3\u538b\u7f29\u4e0b\u8f7d\u7684 zip \u6587\u4ef6 <\/p>\n<\/li>\n<li>\n<p>\u4fee\u6539 config\/kibana.yml \u6587\u4ef6 <\/p>\n<pre><code class=\"language-properties\"># \u9ed8\u8ba4\u7aef\u53e3\nserver.port: 5601\n# ES \u670d\u52a1\u5668\u7684\u5730\u5740\nelasticsearch.hosts: [\"http:\/\/localhost:9200\"]\n# \u7d22\u5f15\u540d\nkibana.index: \".kibana\"\n# \u652f\u6301\u4e2d\u6587\ni18n.locale: \"zh-CN\"<\/code><\/pre>\n<\/li>\n<li>\n<p>Windows \u73af\u5883\u4e0b\u6267\u884c bin\/kibana.bat \u6587\u4ef6 <\/p>\n<\/li>\n<li>\n<p>\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee : <a href=\"http:\/\/localhost:5601\">http:\/\/localhost:5601<\/a> <\/p>\n<\/li>\n<\/ol>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525222224140.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525222224140.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525222224140\" \/><\/div><\/p>\n<h2>\u7b2c5\u7ae0 Elasticsearch \u96c6\u6210<\/h2>\n<h3>5.1 Spring Data \u6846\u67b6\u96c6\u6210<\/h3>\n<p>5.1.1 Spring Data \u6846\u67b6\u4ecb\u7ecd <\/p>\n<p>Spring Data \u662f\u4e00\u4e2a\u7528\u4e8e\u7b80\u5316\u6570\u636e\u5e93\u3001\u975e\u5173\u7cfb\u578b\u6570\u636e\u5e93\u3001\u7d22\u5f15\u5e93\u8bbf\u95ee\uff0c\u5e76\u652f\u6301\u4e91\u670d\u52a1\u7684 \u5f00\u6e90\u6846\u67b6\u3002\u5176\u4e3b\u8981\u76ee\u6807\u662f\u4f7f\u5f97\u5bf9\u6570\u636e\u7684\u8bbf\u95ee\u53d8\u5f97\u65b9\u4fbf\u5feb\u6377\uff0c\u5e76\u652f\u6301 map-reduce \u6846\u67b6\u548c\u4e91\u8ba1 \u7b97\u6570\u636e\u670d\u52a1\u3002 Spring Data \u53ef\u4ee5\u6781\u5927\u7684\u7b80\u5316 JPA\uff08Elasticsearch\u201e\uff09\u7684\u5199\u6cd5\uff0c\u53ef\u4ee5\u5728\u51e0\u4e4e\u4e0d\u7528 \u5199\u5b9e\u73b0\u7684\u60c5\u51b5\u4e0b\uff0c\u5b9e\u73b0\u5bf9\u6570\u636e\u7684\u8bbf\u95ee\u548c\u64cd\u4f5c\u3002\u9664\u4e86 CRUD \u5916\uff0c\u8fd8\u5305\u62ec\u5982\u5206\u9875\u3001\u6392\u5e8f\u7b49\u4e00\u4e9b \u5e38\u7528\u7684\u529f\u80fd\u3002<\/p>\n<p>Spring Data \u7684\u5b98\u7f51\uff1a<a href=\"https:\/\/spring.io\/projects\/spring-data\">https:\/\/spring.io\/projects\/spring-data<\/a> <\/p>\n<p>Spring Data \u5e38\u7528\u7684\u529f\u80fd\u6a21\u5757\u5982\u4e0b\uff1a <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525222513174.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525222513174.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525222513174\" \/><\/div><\/p>\n<p>5.1.2 Spring Data Elasticsearch \u4ecb\u7ecd <\/p>\n<p>\u200b   Spring Data Elasticsearch \u57fa\u4e8e spring data API \u7b80\u5316 Elasticsearch \u64cd\u4f5c\uff0c\u5c06\u539f\u59cb\u64cd\u4f5c Elasticsearch \u7684\u5ba2\u6237\u7aef API \u8fdb\u884c\u5c01\u88c5 \u3002Spring Data \u4e3a Elasticsearch \u9879\u76ee\u63d0\u4f9b\u96c6\u6210\u641c\u7d22\u5f15\u64ce\u3002 <\/p>\n<p>Spring Data Elasticsearch POJO \u7684\u5173\u952e\u529f\u80fd\u533a\u57df\u4e3a\u4e2d\u5fc3\u7684\u6a21\u578b\u4e0e Elastichsearch \u4ea4\u4e92\u6587\u6863\u548c\u8f7b \u677e\u5730\u7f16\u5199\u4e00\u4e2a\u5b58\u50a8\u7d22\u5f15\u5e93\u6570\u636e\u8bbf\u95ee\u5c42\u3002 <\/p>\n<p>\u5b98\u65b9\u7f51\u7ad9: <a href=\"https:\/\/spring.io\/projects\/spring-data-elasticsearch\">https:\/\/spring.io\/projects\/spring-data-elasticsearch<\/a> <\/p>\n<p>5.1.3 Spring Data Elasticsearch \u7248\u672c\u5bf9\u6bd4 <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525222652946.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525222652946.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525222652946\" \/><\/div><\/p>\n<p>\u76ee\u524d\u6700\u65b0 springboot \u5bf9\u5e94 Elasticsearch7.6.2\uff0cSpring boot2.3.x \u4e00\u822c\u53ef\u4ee5\u517c\u5bb9 Elasticsearch7.x <\/p>\n<p>5.1.4 \u6846\u67b6\u96c6\u6210<\/p>\n<ol>\n<li>\n<p>\u521b\u5efa Maven \u9879\u76ee <\/p>\n<\/li>\n<li>\n<p>\u4fee\u6539 pom \u6587\u4ef6\uff0c\u589e\u52a0\u4f9d\u8d56\u5173\u7cfb  <\/p>\n<pre><code class=\"language-xml\"><parent>\n   <groupId>org.springframework.boot<\/groupId>\n   <artifactId>spring-boot-starter-parent<\/artifactId>\n   <version>2.3.6.RELEASE<\/version>\n   <relativePath\/>\n<\/parent>\n<groupId>com.atguigu.es<\/groupId>\n<artifactId>springdata-elasticsearch<\/artifactId>\n<version>1.0<\/version>\n<properties>\n   <maven.compiler.source>8<\/maven.compiler.source>\n   <maven.compiler.target>8<\/maven.compiler.target>\n<\/properties>\n<dependencies>\n   <dependency>\n       <groupId>org.projectlombok<\/groupId>\n       <artifactId>lombok<\/artifactId>\n   <\/dependency>\n   <dependency>\n       <groupId>org.springframework.boot<\/groupId>\n       <artifactId>spring-boot-starter-data-elasticsearch<\/artifactId>\n   <\/dependency>\n   <dependency>\n       <groupId>org.springframework.boot<\/groupId>\n       <artifactId>spring-boot-devtools<\/artifactId>\n       <scope>runtime<\/scope>\n       <optional>true<\/optional>\n   <\/dependency>\n   <dependency>\n       <groupId>org.springframework.boot<\/groupId>\n       <artifactId>spring-boot-starter-test<\/artifactId>\n       <scope>test<\/scope>\n   <\/dependency>\n   <dependency>\n       <groupId>org.springframework.boot<\/groupId>\n       <artifactId>spring-boot-test<\/artifactId>\n   <\/dependency>\n   <dependency>\n       <groupId>junit<\/groupId>\n       <artifactId>junit<\/artifactId>\n   <\/dependency>\n   <dependency>\n       <groupId>org.springframework<\/groupId>\n       <artifactId>spring-test<\/artifactId>\n   <\/dependency>\n<\/dependencies><\/code><\/pre>\n<\/li>\n<li>\n<p>\u589e\u52a0\u914d\u7f6e\u6587\u4ef6 <\/p>\n<p>\u5728 resources \u76ee\u5f55\u4e2d\u589e\u52a0 application.properties \u6587\u4ef6<\/p>\n<pre><code class=\"language-properties\"># es \u670d\u52a1\u5730\u5740\nelasticsearch.host=127.0.0.1\n# es \u670d\u52a1\u7aef\u53e3\nelasticsearch.port=9200\n# \u914d\u7f6e\u65e5\u5fd7\u7ea7\u522b,\u5f00\u542f debug \u65e5\u5fd7\nlogging.level.com.atguigu.es=debug <\/code><\/pre>\n<\/li>\n<li>\n<p>SpringBoot \u4e3b\u7a0b\u5e8f <\/p>\n<pre><code class=\"language-java\">import org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n@SpringBootApplication public class SpringDataElasticSearchMainApplication {\n   public static void main(String[] args) {\n       SpringApplication.run(SpringDataElasticSearchMainApplication.class,args);\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>\u6570\u636e\u5b9e\u4f53\u7c7b <\/p>\n<pre><code class=\"language-java\">import lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\nimport lombok.ToString;\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@ToString\npublic class Product {\n   private long id;\n   \/\/\u5546\u54c1\u552f\u4e00\u6807\u8bc6\n   private String title;\n   \/\/\u5546\u54c1\u540d\u79f0\n   private String category;\n   \/\/\u5206\u7c7b\u540d\u79f0\n   private double price;\n   \/\/\u5546\u54c1\u4ef7\u683c\n   private String images;\n   \/\/\u56fe\u7247\u5730\u5740\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>\u914d\u7f6e\u7c7b <\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>ElasticsearchRestTemplate \u662f spring-data-elasticsearch \u9879\u76ee\u4e2d\u7684\u4e00\u4e2a\u7c7b\uff0c\u548c\u5176\u4ed6 spring \u9879\u76ee\u4e2d\u7684 template \u7c7b\u4f3c\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5728\u65b0\u7248\u7684 spring-data-elasticsearch \u4e2d\uff0cElasticsearchRestTemplate \u4ee3\u66ff\u4e86\u539f\u6765ElasticsearchTemplate\u3002 <\/p>\n<\/li>\n<li>\n<p>\u539f\u56e0\u662f ElasticsearchTemplate \u57fa\u4e8e TransportClient\uff0cTransportClient \u5373\u5c06\u5728 8.x \u4ee5\u540e\u7684\u7248\u672c\u4e2d\u79fb\u9664\u3002\u6240 \u4ee5\uff0c\u6211\u4eec\u63a8\u8350\u4f7f\u7528 ElasticsearchRestTemplate\u3002 <\/p>\n<\/li>\n<li>\n<p>ElasticsearchRestTemplate \u57fa \u4e8e RestHighLevelClient \u5ba2\u6237\u7aef\u7684\u3002\u9700\u8981\u81ea\u5b9a\u4e49\u914d\u7f6e\u7c7b\uff0c\u7ee7\u627f AbstractElasticsearchConfiguration\uff0c\u5e76\u5b9e\u73b0 elasticsearchClient()\u62bd\u8c61\u65b9\u6cd5\uff0c\u521b\u5efa RestHighLevelClient \u5bf9 \u8c61\u3002 <\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"language-java\">@ConfigurationProperties(prefix = &quot;elasticsearch&quot;)\n@Configuration @Data public class ElasticsearchConfig extends AbstractElasticsearchConfiguration {\n    private String host ;\n    private Integer port ;\n    \/\/\u91cd\u5199\u7236\u7c7b\u65b9\u6cd5\n    @Override public RestHighLevelClient elasticsearchClient() {\n        RestClientBuilder builder = RestClient.builder(new HttpHost(host, port));\n        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);\n        return restHighLevelClient;\n    }\n}<\/code><\/pre>\n<ol start=\"7\">\n<li>\n<p>DAO \u6570\u636e\u8bbf\u95ee\u5bf9\u8c61 <\/p>\n<\/li>\n<li>\n<pre><code class=\"language-java\">@Repository\npublic interface ProductDao extends ElasticsearchRepository {\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>\u5b9e\u4f53\u7c7b\u6620\u5c04\u64cd\u4f5c <\/p>\n<pre><code class=\"language-java\">@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@ToString\n@Document(indexName = \"shopping\", shards = 3, replicas = 1)\npublic class Product {\n\/\/\u5fc5\u987b\u6709 id,\u8fd9\u91cc\u7684 id \u662f\u5168\u5c40\u552f\u4e00\u7684\u6807\u8bc6\uff0c\u7b49\u540c\u4e8e es \u4e2d\u7684\"_id\"\n@Id\nprivate long id;\n\/\/\u5546\u54c1\u552f\u4e00\u6807\u8bc6\n\/**\n   * type : \u5b57\u6bb5\u6570\u636e\u7c7b\u578b\n   * analyzer : \u5206\u8bcd\u5668\u7c7b\u578b\n   * index : \u662f\u5426\u7d22\u5f15(\u9ed8\u8ba4:true)\n   * Keyword : \u77ed\u8bed,\u4e0d\u8fdb\u884c\u5206\u8bcd\n   *\/\n@Field(type = FieldType.Text, analyzer = \"ik_max_word\")\n    private String title;\n\/\/\u5546\u54c1\u540d\u79f0\n@Field(type = FieldType.Keyword)\n    private String category;\n\/\/\u5206\u7c7b\u540d\u79f0\n@Field(type = FieldType.double)\n    private double price;\n\/\/\u5546\u54c1\u4ef7\u683c\n@Field(type = FieldType.Keyword, index = false)\n    private String images;\n\/\/\u56fe\u7247\u5730\u5740\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>\u7d22\u5f15\u64cd\u4f5c <\/p>\n<pre><code class=\"language-java\">@RunWith(SpringRunner.class)\n@SpringBootTest public class SpringDataESIndexTest {\n   \/\/\u6ce8\u5165 ElasticsearchRestTemplate\n   @Autowired\n   private ElasticsearchRestTemplate elasticsearchRestTemplate;\n   \/\/\u521b\u5efa\u7d22\u5f15\u5e76\u589e\u52a0\u6620\u5c04\u914d\u7f6e\n   @Test\n   public void createIndex(){\n       \/\/\u521b\u5efa\u7d22\u5f15\uff0c\u7cfb\u7edf\u521d\u59cb\u5316\u4f1a\u81ea\u52a8\u521b\u5efa\u7d22\u5f15\n       System.out.println(\"\u521b\u5efa\u7d22\u5f15\");\n   }\n   @Test\n   public void deleteIndex(){\n       \/\/\u521b\u5efa\u7d22\u5f15\uff0c\u7cfb\u7edf\u521d\u59cb\u5316\u4f1a\u81ea\u52a8\u521b\u5efa\u7d22\u5f15\n       Boolean flg = elasticsearchRestTemplate.deleteIndex(Product.class);\n       System.out.println(\"\u5220\u9664\u7d22\u5f15 = \" + flg);\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>\u6587\u6863\u64cd\u4f5c<\/p>\n<pre><code class=\"language-java\">@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class SpringDataESProductDaoTest {\n    @Autowired\n        private ProductDao productDao;\n    \/** * \u65b0\u589e *\/\n    @Test\n        public void save(){\n        Product product = new Product();\n        product.setId(2L);\n        product.setTitle(\"\u534e\u4e3a\u624b\u673a\");\n        product.setCategory(\"\u624b\u673a\");\n        product.setPrice(2999.0);\n        product.setImages(\"http:\/\/www.atguigu\/hw.jpg\");\n        productDao.save(product);\n    }\n    \/\/\u4fee\u6539\n    @Test\n        public void update(){\n        Product product = new Product();\n        product.setId(1L);\n        product.setTitle(\"\u5c0f\u7c73 2 \u624b\u673a\");\n        product.setCategory(\"\u624b\u673a\");\n        product.setPrice(9999.0);\n        product.setImages(\"http:\/\/www.atguigu\/xm.jpg\");\n        productDao.save(product);\n    }\n    \/\/\u6839\u636e id \u67e5\u8be2\n    @Test\n        public void findById(){\n        Product product = productDao.findById(1L).get();\n        System.out.println(product);\n    }\n    \/\/\u67e5\u8be2\u6240\u6709\n    @Test\n        public void findAll(){\n        Iterable products = productDao.findAll();\n        for (Product product : products) {\n            System.out.println(product);\n        }\n    }\n    \/\/\u5220\u9664\n    @Test\n        public void delete(){\n        Product product = new Product();\n        product.setId(1L);\n        productDao.delete(product);\n    }\n    \/\/\u6279\u91cf\u65b0\u589e\n    @Test\n        public void saveAll(){\n        List productList = new ArrayList<>();\n        for (int i = 0; i < 10; i++) {\n            Product product = new Product();\n            product.setId(long.valueOf(i));\n            product.setTitle(\"[\"+i+\"]\u5c0f\u7c73\u624b\u673a\");\n            product.setCategory(\"\u624b\u673a\");\n            product.setPrice(1999.0+i);\n            product.setImages(\"http:\/\/www.atguigu\/xm.jpg\");\n            productList.add(product);\n        }\n        productDao.saveAll(productList);\n    }\n    \/\/\u5206\u9875\u67e5\u8be2\n    @Test\n        public void findByPageable(){\n        \/\/\u8bbe\u7f6e\u6392\u5e8f(\u6392\u5e8f\u65b9\u5f0f\uff0c\u6b63\u5e8f\u8fd8\u662f\u5012\u5e8f\uff0c\u6392\u5e8f\u7684 id)\n        Sort sort = Sort.by(Sort.Direction.DESC,\"id\");\n        int currentPage=0;\n        \/\/\u5f53\u524d\u9875\uff0c\u7b2c\u4e00\u9875\u4ece 0 \u5f00\u59cb\uff0c1 \u8868\u793a\u7b2c\u4e8c\u9875\n        int pageSize = 5;\n        \/\/\u6bcf\u9875\u663e\u793a\u591a\u5c11\u6761\n        \/\/\u8bbe\u7f6e\u67e5\u8be2\u5206\u9875\n        PageRequest pageRequest = PageRequest.of(currentPage, pageSize,sort);\n        \/\/\u5206\u9875\u67e5\u8be2\n        Page productPage = productDao.findAll(pageRequest);\n        for (Product Product : productPage.getContent()) {\n            System.out.println(Product);\n        }\n    }\n}<\/code><\/pre>\n<ol start=\"11\">\n<li>\n<p>\u6587\u6863\u641c\u7d22 <\/p>\n<pre><code class=\"language-java\">@RunWith(SpringRunner.class)\n    @SpringBootTest\npublic class SpringDataESSearchTest {\n    @Autowired\n        private ProductDao productDao;\n    \/**\n    * term \u67e5\u8be2\n    * search(termQueryBuilder) \u8c03\u7528\u641c\u7d22\u65b9\u6cd5\uff0c\u53c2\u6570\u67e5\u8be2\u6784\u5efa\u5668\u5bf9\u8c61\n    *\/\n    @Test\n        public void termQuery(){\n        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(\"title\", \" \u5c0f\u7c73\");\n        Iterable products = productDao.search(termQueryBuilder);\n        for (Product product : products) {\n            System.out.println(product);\n        }\n    }\n    \/**\n    * term \u67e5\u8be2\u52a0\u5206\u9875\n    *\/\n    @Test\n        public void termQueryByPage(){\n        int currentPage= 0 ;\n        int pageSize = 5;\n        \/\/\u8bbe\u7f6e\u67e5\u8be2\u5206\u9875\n        PageRequest pageRequest = PageRequest.of(currentPage, pageSize);\n        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(\"title\", \" \u5c0f\u7c73\");\n        Iterable products = productDao.search(termQueryBuilder,pageRequest);\n        for (Product product : products) {\n            System.out.println(product);\n        }\n    }\n}<\/code><\/pre>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3>5.2 Spark Streaming \u6846\u67b6\u96c6\u6210<\/h3>\n<p>5.2.1 Spark Streaming \u6846\u67b6\u4ecb\u7ecd <\/p>\n<p>\u200b   Spark Streaming \u662f Spark core API \u7684\u6269\u5c55\uff0c\u652f\u6301\u5b9e\u65f6\u6570\u636e\u6d41\u7684\u5904\u7406\uff0c\u5e76\u4e14\u5177\u6709\u53ef\u6269\u5c55\uff0c \u9ad8\u541e\u5410\u91cf\uff0c\u5bb9\u9519\u7684\u7279\u70b9\u3002\u6570\u636e\u53ef\u4ee5\u4ece\u8bb8\u591a\u6765\u6e90\u83b7\u53d6\uff0c\u5982 Kafka\uff0cFlume\uff0cKinesis \u6216 TCP sockets\uff0c \u5e76\u4e14\u53ef\u4ee5\u4f7f\u7528\u590d\u6742\u7684\u7b97\u6cd5\u8fdb\u884c\u5904\u7406\uff0c\u8fd9\u4e9b\u7b97\u6cd5\u4f7f\u7528\u8bf8\u5982 map\uff0creduce\uff0cjoin \u548c window \u7b49\u9ad8 \u7ea7\u51fd\u6570\u8868\u793a\u3002 \u6700\u540e\uff0c\u5904\u7406\u540e\u7684\u6570\u636e\u53ef\u4ee5\u63a8\u9001\u5230\u6587\u4ef6\u7cfb\u7edf\uff0c\u6570\u636e\u5e93\u7b49\u3002 \u5b9e\u9645\u4e0a\uff0c\u60a8\u53ef\u4ee5\u5c06 Spark \u7684\u673a\u5668\u5b66\u4e60\u548c\u56fe\u5f62\u5904\u7406\u7b97\u6cd5\u5e94\u7528\u4e8e\u6570\u636e\u6d41\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525225103074.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525225103074.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525225103074\" \/><\/div><\/p>\n<p>5.2.2 \u6846\u67b6\u96c6\u6210 <\/p>\n<ol>\n<li>\n<p>\u521b\u5efa Maven \u9879\u76ee <\/p>\n<\/li>\n<li>\n<p>\u4fee\u6539 pom \u6587\u4ef6\uff0c\u589e\u52a0\u4f9d\u8d56\u5173\u7cfb <\/p>\n<pre><code class=\"language-xml\"><groupId>com.atguigu.es<\/groupId>\n<artifactId>sparkstreaming-elasticsearch<\/artifactId>\n<version>1.0<\/version>\n<properties>\n   <maven.compiler.source>8<\/maven.compiler.source>\n   <maven.compiler.target>8<\/maven.compiler.target>\n<\/properties>\n<dependencies>\n   <dependency>\n       <groupId>org.apache.spark<\/groupId>\n       <artifactId>spark-core 2.12<\/artifactId>\n       <version>3.0.0<\/version>\n   <\/dependency>\n   <dependency>\n       <groupId>org.apache.spark<\/groupId>\n       <artifactId>spark-streaming_2.12<\/artifactId>\n       <version>3.0.0<\/version>\n   <\/dependency>\n   <dependency>\n       <groupId>org.elasticsearch<\/groupId>\n       <artifactId>elasticsearch<\/artifactId>\n       <version>7.8.0<\/version>\n   <\/dependency>\n   <!--elasticsearch\u7684\u5ba2\u6237\u7aef\n-->\n   <dependency>\n       <groupId>org.elasticsearch.client<\/groupId>\n       <artifactId>elasticsearch-rest-high-level-client<\/artifactId>\n       <version>7.8.0<\/version>\n   <\/dependency>\n   <!--elasticsearch\u4f9d\u8d562.x\u76841og4j-->\n   <dependency>\n       <groupId>org.apache.logging.log4j<\/groupId>\n       <artifactId>log4j-api<\/artifactId>\n       <version>2.8.2<\/version>\n   <\/dependency>\n   <dependency>\n       <groupId>org.apache.logging.10g4j<\/groupId>\n       <artifactId>log4j-core<\/artifactId>\n       <version>2.8.2<\/version>\n   <\/dependency>\n   <!--<dependency>-->\n    <!--<groupId>com.fasterxml.jackson.core<\/groupId>-->\n    <!--<artifactId>jackson-databind<\/artifactId>-->\n    <!--<version>2.11.1<\/version>-->\n   <!--<\/dependency>-->\n   <!--&lt;!&ndash;junit\u5355\u5143\u6d4b\u8bd5&ndash;&gt;-->\n   <!--<dependency>-->\n        <!--<groupId>junit<\/groupId>-->\n    <!--<artifactId>junit<\/artifactId>-->\n    <!--<version>4.12<\/version>-->\n   <!--<\/dependency>-->\n<\/dependencies><\/code><\/pre>\n<ol start=\"3\">\n<li>\n<p>\u529f\u80fd\u5b9e\u73b0 <\/p>\n<pre><code class=\"language-kotlin\"> package com.atguigu.es\n     import org.apache.http.HttpHost\n     import org.apache.spark.SparkConf\n     import org.apache.spark.streaming.dstream.ReceiverInputDStream\n     import org.apache.spark.streaming.{\n     Seconds, StreamingContext\n }\n import org.elasticsearch.action.index.IndexRequest\n     import org.elasticsearch.client.indices.CreateIndexRequest\n     import org.elasticsearch.client.{\n     RequestOptions, RestClient, RestHighLevelClient\n }\n import org.elasticsearch.common.xcontent.XContentType\n     import java.util.Date\n\n     object SparkStreamingESTest {\n\n     def main(args: Array[String]): Unit = {\n\n         val sparkConf = new SparkConf().setMaster(\"local[*]\").setAppName(\"ESTest\")             val ssc = new StreamingContext(sparkConf, Seconds(3))\n          val ds: ReceiverInputDStream[String] = ssc.socketTextStream(\"localhost\", 9999)\n         ds.foreachRDD( rdd =>\n                       { println(\"*************** \" + new Date())\n                        rdd.foreach(\n                            data => {\n                                val client = new RestHighLevelClient(  RestClient.builder(new HttpHost(\"localhost\", 9200, \"http\"))\n             );\n\n    \/\/ \u65b0\u589e\u6587\u6863 - \u8bf7\u6c42\u5bf9\u8c61\n    val request = new IndexRequest();\n    \/\/ \u8bbe\u7f6e\u7d22\u5f15\u53ca\u552f\u4e00\u6027\u6807\u8bc6\n    val ss = data.split(\" \") println(\"ss = \" + ss.mkString(\",\")) request.index(\"sparkstreaming\").id(ss(0));\n    val productJson = s\"\"\" | { \"data\":\"${ss(1)\n                                         }\n \" } |\"\"\".stripMargin;\n \/\/ \u6dfb\u52a0\u6587\u6863\u6570\u636e\uff0c\u6570\u636e\u683c\u5f0f\u4e3a JSON \u683c\u5f0f request.source(productJson,XContentType.JSON);\n \/\/ \u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\uff0c\u83b7\u53d6\u54cd\u5e94\u5bf9\u8c61\n val response = client.index(request, RequestOptions.DEFAULT);\n System.out.println(\"_index:\" + response.getIndex());\n System.out.println(\"_id:\" + response.getId());\n System.out.println(\"_result:\" + response.getResult());\n client.close()\n }\n )\n                                                                                                                  }\n                                                                                                         ) ssc.start() ssc.awaitTermination()\n     }\n }<\/code><\/pre>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3>5.3 Flink \u6846\u67b6\u96c6\u6210<\/h3>\n<p>5.3.1 Flink \u6846\u67b6\u4ecb\u7ecd <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525230107686.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220525230107686.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220525230107686\" \/><\/div><\/p>\n<p>Apache Spark \u662f\u4e00\u79cd\u57fa\u4e8e\u5185\u5b58\u7684\u5feb\u901f\u3001\u901a\u7528\u3001\u53ef\u6269\u5c55\u7684\u5927\u6570\u636e\u5206\u6790\u8ba1\u7b97\u5f15\u64ce\u3002 <\/p>\n<p>Apache Spark \u6380\u5f00\u4e86\u5185\u5b58\u8ba1\u7b97\u7684\u5148\u6cb3\uff0c\u4ee5\u5185\u5b58\u4f5c\u4e3a\u8d4c\u6ce8\uff0c\u8d62\u5f97\u4e86\u5185\u5b58\u8ba1\u7b97\u7684\u98de\u901f\u53d1\u5c55\u3002 <\/p>\n<p>\u4f46\u662f\u5728\u5176\u706b\u70ed\u7684\u540c\u65f6\uff0c\u5f00\u53d1\u4eba\u5458\u53d1\u73b0\uff0c\u5728 Spark \u4e2d\uff0c\u8ba1\u7b97\u6846\u67b6\u666e\u904d\u5b58\u5728\u7684\u7f3a\u70b9\u548c\u4e0d\u8db3\u4f9d\u7136\u6ca1 \u6709\u5b8c\u5168\u89e3\u51b3\uff0c\u800c\u8fd9\u4e9b\u95ee\u9898\u968f\u7740 5G \u65f6\u4ee3\u7684\u6765\u4e34\u4ee5\u53ca\u51b3\u7b56\u8005\u5bf9\u5b9e\u65f6\u6570\u636e\u5206\u6790\u7ed3\u679c\u7684\u8feb\u5207\u9700\u8981\u800c \u51f8\u663e\u7684\u66f4\u52a0\u660e\u663e\uff1a <\/p>\n<ul>\n<li>\n<p>\u6570\u636e\u7cbe\u51c6\u4e00\u6b21\u6027\u5904\u7406\uff08Exactly-Once\uff09 <\/p>\n<\/li>\n<li>\n<p>\u4e71\u5e8f\u6570\u636e\uff0c\u8fdf\u5230\u6570\u636e <\/p>\n<\/li>\n<li>\n<p>\u4f4e\u5ef6\u8fdf\uff0c\u9ad8\u541e\u5410\uff0c\u51c6\u786e\u6027 <\/p>\n<\/li>\n<li>\n<p>\u5bb9\u9519\u6027 <\/p>\n<p>Apache Flink \u662f\u4e00\u4e2a\u6846\u67b6\u548c\u5206\u5e03\u5f0f\u5904\u7406\u5f15\u64ce\uff0c\u7528\u4e8e\u5bf9\u65e0\u754c\u548c\u6709\u754c\u6570\u636e\u6d41\u8fdb\u884c\u6709\u72b6\u6001\u8ba1\u7b97\u3002\u5728 Spark \u706b\u70ed\u7684\u540c\u65f6\uff0c\u4e5f\u9ed8\u9ed8\u5730\u53d1\u5c55\u81ea\u5df1\uff0c\u5e76\u5c1d\u8bd5\u7740\u89e3\u51b3\u5176\u4ed6\u8ba1\u7b97\u6846\u67b6\u7684\u95ee\u9898\u3002 \u6162\u6162\u5730\uff0c\u968f\u7740\u8fd9\u4e9b\u95ee\u9898\u7684\u89e3\u51b3\uff0cFlink \u6162\u6162\u88ab\u7edd\u5927\u6570\u7a0b\u5e8f\u5458\u6240\u719f\u77e5\u5e76\u8fdb\u884c\u5927\u529b\u63a8\u5e7f\uff0c\u963f\u91cc\u516c \u53f8\u5728 2015 \u5e74\u6539\u8fdb Flink\uff0c\u5e76\u521b\u5efa\u4e86\u5185\u90e8\u5206\u652f Blink\uff0c\u76ee\u524d\u670d\u52a1\u4e8e\u963f\u91cc\u96c6\u56e2\u5185\u90e8\u641c\u7d22\u3001\u63a8\u8350\u3001 \u5e7f\u544a\u548c\u8682\u8681\u7b49\u5927\u91cf\u6838\u5fc3\u5b9e\u65f6\u4e1a\u52a1\u3002 <\/p>\n<\/li>\n<\/ul>\n<p>5.3.2 \u6846\u67b6\u96c6\u6210<\/p>\n<ol>\n<li>\n<p>\u521b\u5efa Maven \u9879\u76ee <\/p>\n<\/li>\n<li>\n<p>\u4fee\u6539 pom \u6587\u4ef6\uff0c\u589e\u52a0\u76f8\u5173\u4f9d\u8d56\u7c7b\u5e93  <\/p>\n<pre><code class=\"language-xml\"><dependencies>\n   <dependency>\n       <groupId>org.apache.flink<\/groupId>\n       <artifactId>flink-scala 2.12<\/artifactId>\n       <version>1.12.0<\/version>\n   <\/dependency>\n   <dependency>\n       <groupId>org.apache.flink<\/groupId>\n       <artifactId>flink-streaming-scala 2.12<\/artifactId>\n       <version>1.12.0<\/version>\n   <\/dependency>\n   <dependency>\n       <groupId>org.apache.flink<\/groupId>\n       <artifactId>flink-clients_2.12<\/artifactId>\n       <version>1.12.0<\/version>\n   <\/dependency>\n   <dependency>\n       <groupId>org.apache.flink<\/groupId>\n       <artifactId>flink-connector-elasticsearch7 2.11<\/artifactId>\n       <version>1.12.0<\/version>\n   <\/dependency>\n   <!-jackson --\n   <dependency>\n       <groupId>com.fasterxml.jackson.core<\/groupId>\n       <artifactId>jackson-core<\/artifactId>\n       <version>2.11.1<\/version>\n   <\/dependency>\n<\/dependencies><\/code><\/pre>\n<\/li>\n<li>\n<p>\u529f\u80fd\u5b9e\u73b0<\/p>\n<pre><code class=\"language-java\">public class FlinkElasticsearchSinkTest {\npublic static void main(String[] args) throws Exception {\n    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();\n    DataStreamSource source = env.socketTextStream(\"localhost\", 9999);\n    List httpHosts = new ArrayList<>();\n    httpHosts.add(new HttpHost(\"127.0.0.1\", 9200, \"http\"));\n    \/\/httpHosts.add(new HttpHost(\"10.2.3.1\", 9200, \"http\"));\n    \/\/ use a ElasticsearchSink.Builder to create an ElasticsearchSink\n    ElasticsearchSink.Builder esSinkBuilder = new ElasticsearchSink.Builder<>(  httpHosts, new ElasticsearchSinkFunction() {\n        public IndexRequest createIndexRequest(String element) {\n            Map json = new HashMap<>();\n            json.put(\"data\", element);\n            return Requests.indexRequest() .index(\"my-index\")\n                         \/\/.type(\"my-type\") .source(json); }\n            @Override\n                         public void process(String element, RuntimeContext ctx, RequestIndexer indexer) {\n                indexer.add(createIndexRequest(element));\n            }\n        }\n        );\n        \/\/ configuration for the bulk requests; this instructs the sink to emit after every element, otherwise they would be buffered esSinkBuilder.setBulkFlushMaxActions(1);\n        \/\/ provide a RestClientFactory for custom configuration on the internally created REST client\n        \/\/ esSinkBuilder.setRestClientFactory(\n        \/\/ restClientBuilder -> { \/\/ restClientBuilder.setDefaultHeaders(...)\n        \/\/ restClientBuilder.setMaxRetryTimeoutMillis(...)\n        \/\/ restClientBuilder.setPathPrefix(...)\n        \/\/ restClientBuilder.setHttpClientConfigCallback(...)\n        \/\/ }\n        \/\/ );\n        source.addSink(esSinkBuilder.build());\n        env.execute(\"flink-es\");\n    }\n}<\/code><\/pre>\n<\/li>\n<\/ol>\n<h2>\u7b2c6\u7ae0 Elasticsearch \u4f18\u5316<\/h2>\n<h3>6.1 \u786c\u4ef6\u9009\u62e9<\/h3>\n<p>Elasticsearch \u7684\u57fa\u7840\u662f Lucene\uff0c\u6240\u6709\u7684\u7d22\u5f15\u548c\u6587\u6863\u6570\u636e\u662f\u5b58\u50a8\u5728\u672c\u5730\u7684\u78c1\u76d8\u4e2d\uff0c\u5177\u4f53\u7684 \u8def\u5f84\u53ef\u5728 ES \u7684\u914d\u7f6e\u6587\u4ef6..\/config\/elasticsearch.yml \u4e2d\u914d\u7f6e\uff0c<\/p>\n<p>\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-shell\">#----------------------------------- Paths ------------------------------------\n   #\n   # Path to directory where to store the data (separate multiple locations by comma):\n   # #path.data: \/path\/to\/data\n   #\n   # Path to log files:\n   #\n   #path.logs: \/path\/to\/logs\n   #<\/code><\/pre>\n<pre><code> \u78c1\u76d8\u5728\u73b0\u4ee3\u670d\u52a1\u5668\u4e0a\u901a\u5e38\u90fd\u662f\u74f6\u9888\u3002Elasticsearch \u91cd\u5ea6\u4f7f\u7528\u78c1\u76d8\uff0c\u4f60\u7684\u78c1\u76d8\u80fd\u5904\u7406\u7684\u541e\u5410\u91cf \u8d8a\u5927\uff0c\u4f60\u7684\u8282\u70b9\u5c31\u8d8a\u7a33\u5b9a\u3002\u8fd9\u91cc\u6709\u4e00\u4e9b\u4f18\u5316\u78c1\u76d8 I\/O \u7684\u6280\u5de7\uff1a <\/code><\/pre>\n<ul>\n<li>\n<p>\u4f7f\u7528 SSD\u3002\u5c31\u50cf\u5176\u4ed6\u5730\u65b9\u63d0\u8fc7\u7684\uff0c \u4ed6\u4eec\u6bd4\u673a\u68b0\u78c1\u76d8\u4f18\u79c0\u591a\u4e86\u3002 <\/p>\n<\/li>\n<li>\n<p>\u4f7f\u7528 RAID 0\u3002\u6761\u5e26\u5316 RAID \u4f1a\u63d0\u9ad8\u78c1\u76d8 I\/O\uff0c\u4ee3\u4ef7\u663e\u7136\u5c31\u662f\u5f53\u4e00\u5757\u786c\u76d8\u6545\u969c\u65f6\u6574\u4e2a\u5c31\u6545\u969c\u4e86\u3002\u4e0d\u8981 \u4f7f\u7528\u955c\u50cf\u6216\u8005\u5947\u5076\u6821\u9a8c RAID \u56e0\u4e3a\u526f\u672c\u5df2\u7ecf\u63d0\u4f9b\u4e86\u8fd9\u4e2a\u529f\u80fd\u3002 <\/p>\n<\/li>\n<li>\n<p>\u53e6\u5916\uff0c\u4f7f\u7528\u591a\u5757\u786c\u76d8\uff0c\u5e76\u5141\u8bb8 Elasticsearch \u901a\u8fc7\u591a\u4e2a path.data \u76ee\u5f55\u914d\u7f6e\u628a\u6570\u636e\u6761\u5e26\u5316\u5206\u914d\u5230\u5b83\u4eec\u4e0a \u9762\u3002 <\/p>\n<ul>\n<li>\u4e0d\u8981\u4f7f\u7528\u8fdc\u7a0b\u6302\u8f7d\u7684\u5b58\u50a8\uff0c\u6bd4\u5982 NFS \u6216\u8005 SMB\/CIFS\u3002\u8fd9\u4e2a\u5f15\u5165\u7684\u5ef6\u8fdf\u5bf9\u6027\u80fd\u6765\u8bf4\u5b8c\u5168\u662f\u80cc\u9053\u800c\u9a70\u7684\u3002 <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>6.2 \u5206\u7247\u7b56\u7565<\/h3>\n<p>6.2.1 \u5408\u7406\u8bbe\u7f6e\u5206\u7247\u6570 <\/p>\n<p>\u200b    \u5206\u7247\u548c\u526f\u672c\u7684\u8bbe\u8ba1\u4e3a ES \u63d0\u4f9b\u4e86\u652f\u6301\u5206\u5e03\u5f0f\u548c\u6545\u969c\u8f6c\u79fb\u7684\u7279\u6027\uff0c\u4f46\u5e76\u4e0d\u610f\u5473\u7740\u5206\u7247\u548c \u526f\u672c\u662f\u53ef\u4ee5\u65e0\u9650\u5206\u914d\u7684\u3002\u800c\u4e14\u7d22\u5f15\u7684\u5206\u7247\u5b8c\u6210\u5206\u914d\u540e\u7531\u4e8e\u7d22\u5f15\u7684\u8def\u7531\u673a\u5236\uff0c\u6211\u4eec\u662f\u4e0d\u80fd\u91cd\u65b0 \u4fee\u6539\u5206\u7247\u6570\u7684\u3002 <\/p>\n<p>\u200b    \u53ef\u80fd\u6709\u4eba\u4f1a\u8bf4\uff0c\u6211\u4e0d\u77e5\u9053\u8fd9\u4e2a\u7d22\u5f15\u5c06\u6765\u4f1a\u53d8\u5f97\u591a\u5927\uff0c\u5e76\u4e14\u8fc7\u540e\u6211\u4e5f\u4e0d\u80fd\u66f4\u6539\u7d22\u5f15\u7684\u5927\u5c0f\uff0c \u6240\u4ee5\u4e3a\u4e86\u4fdd\u9669\u8d77\u89c1\uff0c\u8fd8\u662f\u7ed9\u5b83\u8bbe\u4e3a 1000 \u4e2a\u5206\u7247\u5427\u3002<\/p>\n<p>\u4f46\u662f\u9700\u8981\u77e5\u9053\u7684\u662f\uff0c\u4e00\u4e2a\u5206\u7247\u5e76\u4e0d\u662f\u6ca1 \u6709\u4ee3\u4ef7\u7684\u3002\u9700\u8981\u4e86\u89e3\uff1a <\/p>\n<ul>\n<li>\n<p>\u4e00\u4e2a\u5206\u7247\u7684\u5e95\u5c42\u5373\u4e3a\u4e00\u4e2a Lucene \u7d22\u5f15\uff0c\u4f1a\u6d88\u8017\u4e00\u5b9a\u6587\u4ef6\u53e5\u67c4\u3001\u5185\u5b58\u3001\u4ee5\u53ca CPU \u8fd0\u8f6c\u3002<\/p>\n<\/li>\n<li>\n<p>\u6bcf\u4e00\u4e2a\u641c\u7d22\u8bf7\u6c42\u90fd\u9700\u8981\u547d\u4e2d\u7d22\u5f15\u4e2d\u7684\u6bcf\u4e00\u4e2a\u5206\u7247\uff0c\u5982\u679c\u6bcf\u4e00\u4e2a\u5206\u7247\u90fd\u5904\u4e8e\u4e0d\u540c\u7684\u8282\u70b9\u8fd8\u597d\uff0c \u4f46\u5982\u679c\u591a\u4e2a\u5206\u7247\u90fd\u9700\u8981\u5728\u540c\u4e00\u4e2a\u8282\u70b9\u4e0a\u7ade\u4e89\u4f7f\u7528\u76f8\u540c\u7684\u8d44\u6e90\u5c31\u6709\u4e9b\u7cdf\u7cd5\u4e86\u3002 <\/p>\n<\/li>\n<li>\n<p>\u7528\u4e8e\u8ba1\u7b97\u76f8\u5173\u5ea6\u7684\u8bcd\u9879\u7edf\u8ba1\u4fe1\u606f\u662f\u57fa\u4e8e\u5206\u7247\u7684\u3002\u5982\u679c\u6709\u8bb8\u591a\u5206\u7247\uff0c\u6bcf\u4e00\u4e2a\u90fd\u53ea\u6709\u5f88\u5c11\u7684\u6570\u636e\u4f1a\u5bfc\u81f4\u5f88 \u4f4e\u7684\u76f8\u5173\u5ea6\u3002 <\/p>\n<p>\u4e00\u4e2a\u4e1a\u52a1\u7d22\u5f15\u5177\u4f53\u9700\u8981\u5206\u914d\u591a\u5c11\u5206\u7247\u53ef\u80fd\u9700\u8981\u67b6\u6784\u5e08\u548c\u6280\u672f\u4eba\u5458\u5bf9\u4e1a\u52a1\u7684\u589e\u957f\u6709\u4e2a\u9884\u5148\u7684\u5224\u65ad\uff0c\u6a2a\u5411\u6269\u5c55\u5e94\u5f53\u5206\u9636\u6bb5\u8fdb\u884c\u3002\u4e3a\u4e0b\u4e00\u9636\u6bb5\u51c6\u5907\u597d\u8db3\u591f\u7684\u8d44\u6e90\u3002 \u53ea\u6709\u5f53\u4f60\u8fdb\u5165\u5230\u4e0b \u4e00\u4e2a\u9636\u6bb5\uff0c\u4f60\u624d\u6709\u65f6\u95f4\u601d\u8003\u9700\u8981\u4f5c\u51fa\u54ea\u4e9b\u6539\u53d8\u6765\u8fbe\u5230\u8fd9\u4e2a\u9636\u6bb5\u3002\u4e00\u822c\u6765\u8bf4\uff0c\u6211\u4eec\u9075\u5faa\u4e00\u4e9b\u539f\u5219\uff1a <\/p>\n<\/li>\n<li>\n<p>\u63a7\u5236\u6bcf\u4e2a\u5206\u7247\u5360\u7528\u7684\u786c\u76d8\u5bb9\u91cf\u4e0d\u8d85\u8fc7 ES \u7684\u6700\u5927 JVM \u7684\u5806\u7a7a\u95f4\u8bbe\u7f6e\uff08\u4e00\u822c\u8bbe\u7f6e\u4e0d\u8d85\u8fc7 32G\uff0c\u53c2\u8003\u4e0b\u6587 \u7684 JVM \u8bbe\u7f6e\u539f\u5219\uff09\uff0c\u56e0\u6b64\uff0c\u5982\u679c\u7d22\u5f15\u7684\u603b\u5bb9\u91cf\u5728 500G \u5de6\u53f3\uff0c\u90a3\u5206\u7247\u5927\u5c0f\u5728 16 \u4e2a\u5de6\u53f3\u5373\u53ef\uff1b\u5f53\u7136\uff0c \u6700\u597d\u540c\u65f6\u8003\u8651\u539f\u5219 2\u3002<\/p>\n<\/li>\n<li>\n<p>\u8003\u8651\u4e00\u4e0b node \u6570\u91cf\uff0c\u4e00\u822c\u4e00\u4e2a\u8282\u70b9\u6709\u65f6\u5019\u5c31\u662f\u4e00\u53f0\u7269\u7406\u673a\uff0c\u5982\u679c\u5206\u7247\u6570\u8fc7\u591a\uff0c\u5927\u5927\u8d85\u8fc7\u4e86\u8282\u70b9\u6570\uff0c \u5f88\u53ef\u80fd\u4f1a\u5bfc\u81f4\u4e00\u4e2a\u8282\u70b9\u4e0a\u5b58\u5728\u591a\u4e2a\u5206\u7247\uff0c\u4e00\u65e6\u8be5\u8282\u70b9\u6545\u969c\uff0c\u5373\u4f7f\u4fdd\u6301\u4e86 1 \u4e2a\u4ee5\u4e0a\u7684\u526f\u672c\uff0c\u540c\u6837\u6709\u53ef\u80fd \u4f1a\u5bfc\u81f4\u6570\u636e\u4e22\u5931\uff0c\u96c6\u7fa4\u65e0\u6cd5\u6062\u590d\u3002\u6240\u4ee5\uff0c \u4e00\u822c\u90fd\u8bbe\u7f6e\u5206\u7247\u6570\u4e0d\u8d85\u8fc7\u8282\u70b9\u6570\u7684 3 \u500d\u3002 <\/p>\n<\/li>\n<li>\n<p>\u4e3b\u5206\u7247\uff0c\u526f\u672c\u548c\u8282\u70b9\u6700\u5927\u6570\u4e4b\u95f4\u6570\u91cf\uff0c\u6211\u4eec\u5206\u914d\u7684\u65f6\u5019\u53ef\u4ee5\u53c2\u8003\u4ee5\u4e0b\u5173\u7cfb\uff1a <\/p>\n<p>*<em>\u8282\u70b9\u6570&lt;=\u4e3b\u5206\u7247\u6570<\/em>\uff08\u526f\u672c\u6570+1\uff09** <\/p>\n<p>6.2.2 \u63a8\u8fdf\u5206\u7247\u5206\u914d <\/p>\n<p>\u5bf9\u4e8e\u8282\u70b9\u77ac\u65f6\u4e2d\u65ad\u7684\u95ee\u9898\uff0c\u9ed8\u8ba4\u60c5\u51b5\uff0c\u96c6\u7fa4\u4f1a\u7b49\u5f85\u4e00\u5206\u949f\u6765\u67e5\u770b\u8282\u70b9\u662f\u5426\u4f1a\u91cd\u65b0\u52a0\u5165\uff0c \u5982\u679c\u8fd9\u4e2a\u8282\u70b9\u5728\u6b64\u671f\u95f4\u91cd\u65b0\u52a0\u5165\uff0c\u91cd\u65b0\u52a0\u5165\u7684\u8282\u70b9\u4f1a\u4fdd\u6301\u5176\u73b0\u6709\u7684\u5206\u7247\u6570\u636e\uff0c\u4e0d\u4f1a\u89e6\u53d1\u65b0\u7684 \u5206\u7247\u5206\u914d\u3002\u8fd9\u6837\u5c31\u53ef\u4ee5\u51cf\u5c11 ES \u5728\u81ea\u52a8\u518d\u5e73\u8861\u53ef\u7528\u5206\u7247\u65f6\u6240\u5e26\u6765\u7684\u6781\u5927\u5f00\u9500\u3002 <\/p>\n<p>\u901a\u8fc7\u4fee\u6539\u53c2\u6570 delayed_timeout \uff0c\u53ef\u4ee5\u5ef6\u957f\u518d\u5747\u8861\u7684\u65f6\u95f4\uff0c\u53ef\u4ee5\u5168\u5c40\u8bbe\u7f6e\u4e5f\u53ef\u4ee5\u5728\u7d22\u5f15 \u7ea7\u522b\u8fdb\u884c\u4fee\u6539: <\/p>\n<pre><code class=\"language-json\">#PUT \/_all\/_settings\n{\n   \"settings\": {\n       \"index.unassigned.node_left.delayed_timeout\": \"5m\"\n   }\n}<\/code><\/pre>\n<h3>6.3 \u8def\u7531\u9009\u62e9<\/h3>\n<p>\u5f53\u6211\u4eec\u67e5\u8be2\u6587\u6863\u7684\u65f6\u5019\uff0cElasticsearch \u5982\u4f55\u77e5\u9053\u4e00\u4e2a\u6587\u6863\u5e94\u8be5\u5b58\u653e\u5230\u54ea\u4e2a\u5206\u7247\u4e2d\u5462\uff1f\u5b83 \u5176\u5b9e\u662f\u901a\u8fc7\u4e0b\u9762\u8fd9\u4e2a\u516c\u5f0f\u6765\u8ba1\u7b97\u51fa\u6765:<\/p>\n<p>shard = hash(routing) % number_of_primary_shards <\/p>\n<p>routing \u9ed8\u8ba4\u503c\u662f\u6587\u6863\u7684 id\uff0c\u4e5f\u53ef\u4ee5\u91c7\u7528\u81ea\u5b9a\u4e49\u503c\uff0c\u6bd4\u5982\u7528\u6237 id\u3002 <\/p>\n<p><strong>\u4e0d\u5e26 routing \u67e5\u8be2<\/strong> <\/p>\n<p>\u5728\u67e5\u8be2\u7684\u65f6\u5019\u56e0\u4e3a\u4e0d\u77e5\u9053\u8981\u67e5\u8be2\u7684\u6570\u636e\u5177\u4f53\u5728\u54ea\u4e2a\u5206\u7247\u4e0a\uff0c\u6240\u4ee5\u6574\u4e2a\u8fc7\u7a0b\u5206\u4e3a 2 \u4e2a\u6b65\u9aa4 <\/p>\n<\/li>\n<li>\n<p>\u5206\u53d1\uff1a\u8bf7\u6c42\u5230\u8fbe\u534f\u8c03\u8282\u70b9\u540e\uff0c\u534f\u8c03\u8282\u70b9\u5c06\u67e5\u8be2\u8bf7\u6c42\u5206\u53d1\u5230\u6bcf\u4e2a\u5206\u7247\u4e0a\u3002 <\/p>\n<\/li>\n<li>\n<p>\u805a\u5408: \u534f\u8c03\u8282\u70b9\u641c\u96c6\u5230\u6bcf\u4e2a\u5206\u7247\u4e0a\u67e5\u8be2\u7ed3\u679c\uff0c\u5728\u5c06\u67e5\u8be2\u7684\u7ed3\u679c\u8fdb\u884c\u6392\u5e8f\uff0c\u4e4b\u540e\u7ed9\u7528\u6237\u8fd4\u56de\u7ed3\u679c\u3002<\/p>\n<p><strong>\u5e26 routing \u67e5\u8be2<\/strong> <\/p>\n<p>\u200b    \u67e5\u8be2\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u76f4\u63a5\u6839\u636e routing \u4fe1\u606f\u5b9a\u4f4d\u5230\u67d0\u4e2a\u5206\u914d\u67e5\u8be2\uff0c\u4e0d\u9700\u8981\u67e5\u8be2\u6240\u6709\u7684\u5206\u914d\uff0c\u7ecf \u8fc7\u534f\u8c03\u8282\u70b9\u6392\u5e8f\u3002 <\/p>\n<p>\u200b    \u5411\u4e0a\u9762\u81ea\u5b9a\u4e49\u7684\u7528\u6237\u67e5\u8be2\uff0c\u5982\u679c routing \u8bbe\u7f6e\u4e3a userid \u7684\u8bdd\uff0c\u5c31\u53ef\u4ee5\u76f4\u63a5\u67e5\u8be2\u51fa\u6570\u636e\u6765\uff0c \u6548\u7387\u63d0\u5347\u5f88\u591a\u3002 <\/p>\n<h3>6.4 \u5199\u5165\u901f\u5ea6\u4f18\u5316<\/h3>\n<p>\u200b    ES \u7684\u9ed8\u8ba4\u914d\u7f6e\uff0c\u662f\u7efc\u5408\u4e86\u6570\u636e\u53ef\u9760\u6027\u3001\u5199\u5165\u901f\u5ea6\u3001\u641c\u7d22\u5b9e\u65f6\u6027\u7b49\u56e0\u7d20\u3002\u5b9e\u9645\u4f7f\u7528\u65f6\uff0c \u6211\u4eec\u9700\u8981\u6839\u636e\u516c\u53f8\u8981\u6c42\uff0c\u8fdb\u884c\u504f\u5411\u6027\u7684\u4f18\u5316\u3002 <\/p>\n<p>\u200b    \u9488\u5bf9\u4e8e\u641c\u7d22\u6027\u80fd\u8981\u6c42\u4e0d\u9ad8\uff0c\u4f46\u662f\u5bf9\u5199\u5165\u8981\u6c42\u8f83\u9ad8\u7684\u573a\u666f\uff0c\u6211\u4eec\u9700\u8981\u5c3d\u53ef\u80fd\u7684\u9009\u62e9\u6070\u5f53\u5199 \u4f18\u5316\u7b56\u7565\u3002\u7efc\u5408\u6765\u8bf4\uff0c\u53ef\u4ee5\u8003\u8651\u4ee5\u4e0b\u51e0\u4e2a\u65b9\u9762\u6765\u63d0\u5347\u5199\u7d22\u5f15\u7684\u6027\u80fd\uff1a <\/p>\n<\/li>\n<li>\n<p>\u52a0\u5927 Translog Flush \uff0c\u76ee\u7684\u662f\u964d\u4f4e Iops\u3001Writeblock\u3002 <\/p>\n<\/li>\n<li>\n<p>\u589e\u52a0 Index Refresh \u95f4\u9694\uff0c\u76ee\u7684\u662f\u51cf\u5c11 Segment Merge \u7684\u6b21\u6570\u3002 <\/p>\n<\/li>\n<li>\n<p>\u8c03\u6574 Bulk \u7ebf\u7a0b\u6c60\u548c\u961f\u5217\u3002 <\/p>\n<\/li>\n<li>\n<p>\u4f18\u5316\u8282\u70b9\u95f4\u7684\u4efb\u52a1\u5206\u5e03\u3002 <\/p>\n<\/li>\n<li>\n<p>\u4f18\u5316 Lucene \u5c42\u7684\u7d22\u5f15\u5efa\u7acb\uff0c\u76ee\u7684\u662f\u964d\u4f4e CPU \u53ca IO\u3002 <\/p>\n<p>6.4.1 \u6279\u91cf\u6570\u636e\u63d0\u4ea4 <\/p>\n<p>\u200b    ES \u63d0\u4f9b\u4e86 Bulk API \u652f\u6301\u6279\u91cf\u64cd\u4f5c\uff0c\u5f53\u6211\u4eec\u6709\u5927\u91cf\u7684\u5199\u4efb\u52a1\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528 Bulk \u6765\u8fdb \u884c\u6279\u91cf\u5199\u5165\u3002 <\/p>\n<p>\u901a\u7528\u7684\u7b56\u7565\u5982\u4e0b\uff1aBulk \u9ed8\u8ba4\u8bbe\u7f6e\u6279\u91cf\u63d0\u4ea4\u7684\u6570\u636e\u91cf\u4e0d\u80fd\u8d85\u8fc7 100M\u3002\u6570\u636e\u6761\u6570\u4e00\u822c\u662f \u6839\u636e\u6587\u6863\u7684\u5927\u5c0f\u548c\u670d\u52a1\u5668\u6027\u80fd\u800c\u5b9a\u7684\uff0c\u4f46\u662f\u5355\u6b21\u6279\u5904\u7406\u7684\u6570\u636e\u5927\u5c0f\u5e94\u4ece 5MB\uff5e15MB \u9010\u6e10 \u589e\u52a0\uff0c\u5f53\u6027\u80fd\u6ca1\u6709\u63d0\u5347\u65f6\uff0c\u628a\u8fd9\u4e2a\u6570\u636e\u91cf\u4f5c\u4e3a\u6700\u5927\u503c\u3002 <\/p>\n<p>6.4.2 \u4f18\u5316\u5b58\u50a8\u8bbe\u5907 <\/p>\n<p>\u200b    ES \u662f\u4e00\u79cd\u5bc6\u96c6\u4f7f\u7528\u78c1\u76d8\u7684\u5e94\u7528\uff0c\u5728\u6bb5\u5408\u5e76\u7684\u65f6\u5019\u4f1a\u9891\u7e41\u64cd\u4f5c\u78c1\u76d8\uff0c\u6240\u4ee5\u5bf9\u78c1\u76d8\u8981\u6c42\u8f83 \u9ad8\uff0c\u5f53\u78c1\u76d8\u901f\u5ea6\u63d0\u5347\u4e4b\u540e\uff0c\u96c6\u7fa4\u7684\u6574\u4f53\u6027\u80fd\u4f1a\u5927\u5e45\u5ea6\u63d0\u9ad8\u3002 <\/p>\n<p>6.4.3 \u5408\u7406\u4f7f\u7528\u5408\u5e76<\/p>\n<pre><code>Lucene \u4ee5\u6bb5\u7684\u5f62\u5f0f\u5b58\u50a8\u6570\u636e\u3002\u5f53\u6709\u65b0\u7684\u6570\u636e\u5199\u5165\u7d22\u5f15\u65f6\uff0cLucene \u5c31\u4f1a\u81ea\u52a8\u521b\u5efa\u4e00\u4e2a\u65b0 \u7684\u6bb5\u3002 <\/code><\/pre>\n<p>\u200b    \u968f\u7740\u6570\u636e\u91cf\u7684\u53d8\u5316\uff0c\u6bb5\u7684\u6570\u91cf\u4f1a\u8d8a\u6765\u8d8a\u591a\uff0c\u6d88\u8017\u7684\u591a\u6587\u4ef6\u53e5\u67c4\u6570\u53ca CPU \u5c31\u8d8a\u591a\uff0c\u67e5\u8be2 \u6548\u7387\u5c31\u4f1a\u4e0b\u964d\u3002 <\/p>\n<p>\u200b    \u7531\u4e8e Lucene \u6bb5\u5408\u5e76\u7684\u8ba1\u7b97\u91cf\u5e9e\u5927\uff0c\u4f1a\u6d88\u8017\u5927\u91cf\u7684 I\/O\uff0c\u6240\u4ee5 ES \u9ed8\u8ba4\u91c7\u7528\u8f83\u4fdd\u5b88\u7684\u7b56 \u7565\uff0c\u8ba9\u540e\u53f0\u5b9a\u671f\u8fdb\u884c\u6bb5\u5408\u5e76 <\/p>\n<p>6.4.4 \u51cf\u5c11 Refresh \u7684\u6b21\u6570 <\/p>\n<p>\u200b    Lucene \u5728\u65b0\u589e\u6570\u636e\u65f6\uff0c\u91c7\u7528\u4e86\u5ef6\u8fdf\u5199\u5165\u7684\u7b56\u7565\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u7d22\u5f15\u7684 refresh_interval \u4e3a 1 \u79d2\u3002<\/p>\n<pre><code>Lucene \u5c06\u5f85\u5199\u5165\u7684\u6570\u636e\u5148\u5199\u5230\u5185\u5b58\u4e2d\uff0c\u8d85\u8fc7 1 \u79d2\uff08\u9ed8\u8ba4\uff09\u65f6\u5c31\u4f1a\u89e6\u53d1\u4e00\u6b21 Refresh\uff0c \u7136\u540e Refresh \u4f1a\u628a\u5185\u5b58\u4e2d\u7684\u7684\u6570\u636e\u5237\u65b0\u5230\u64cd\u4f5c\u7cfb\u7edf\u7684\u6587\u4ef6\u7f13\u5b58\u7cfb\u7edf\u4e2d\u3002\n\n\u5982\u679c\u6211\u4eec\u5bf9\u641c\u7d22\u7684\u5b9e\u6548\u6027\u8981\u6c42\u4e0d\u9ad8\uff0c\u53ef\u4ee5\u5c06 Refresh \u5468\u671f\u5ef6\u957f\uff0c\u4f8b\u5982 30 \u79d2\u3002 <\/code><\/pre>\n<p>\u200b    \u8fd9\u6837\u8fd8\u53ef\u4ee5\u6709\u6548\u5730\u51cf\u5c11\u6bb5\u5237\u65b0\u6b21\u6570\uff0c\u4f46\u8fd9\u540c\u65f6\u610f\u5473\u7740\u9700\u8981\u6d88\u8017\u66f4\u591a\u7684 Heap \u5185\u5b58\u3002 <\/p>\n<p>6.4.5 \u52a0\u5927 Flush <\/p>\n<p>\u200b    \u8bbe\u7f6e Flush \u7684\u4e3b\u8981\u76ee\u7684\u662f\u628a\u6587\u4ef6\u7f13\u5b58\u7cfb\u7edf\u4e2d\u7684\u6bb5\u6301\u4e45\u5316\u5230\u786c\u76d8\uff0c\u5f53 Translog \u7684\u6570\u636e\u91cf\u8fbe\u5230 512MB \u6216\u8005 30 \u5206\u949f\u65f6\uff0c\u4f1a\u89e6\u53d1\u4e00\u6b21 Flush\u3002 <\/p>\n<p>\u200b    index.translog.flush_threshold_size \u53c2\u6570\u7684\u9ed8\u8ba4\u503c\u662f 512MB\uff0c\u6211\u4eec\u8fdb\u884c\u4fee\u6539\u3002 <\/p>\n<p>\u200b    \u589e\u52a0\u53c2\u6570\u503c\u610f\u5473\u7740\u6587\u4ef6\u7f13\u5b58\u7cfb\u7edf\u4e2d\u53ef\u80fd\u9700\u8981\u5b58\u50a8\u66f4\u591a\u7684\u6570\u636e\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u4e3a\u64cd\u4f5c\u7cfb\u7edf \u7684\u6587\u4ef6\u7f13\u5b58\u7cfb\u7edf\u7559\u4e0b\u8db3\u591f\u7684\u7a7a\u95f4\u3002 <\/p>\n<p>6.4.6 \u51cf\u5c11\u526f\u672c\u7684\u6570\u91cf <\/p>\n<p>\u200b    ES \u4e3a\u4e86\u4fdd\u8bc1\u96c6\u7fa4\u7684\u53ef\u7528\u6027\uff0c\u63d0\u4f9b\u4e86 Replicas\uff08\u526f\u672c\uff09\u652f\u6301\uff0c\u7136\u800c\u6bcf\u4e2a\u526f\u672c\u4e5f\u4f1a\u6267\u884c\u5206 \u6790\u3001\u7d22\u5f15\u53ca\u53ef\u80fd\u7684\u5408\u5e76\u8fc7\u7a0b\uff0c\u6240\u4ee5 Replicas \u7684\u6570\u91cf\u4f1a\u4e25\u91cd\u5f71\u54cd\u5199\u7d22\u5f15\u7684\u6548\u7387\u3002 <\/p>\n<p>\u200b    \u5f53\u5199\u7d22\u5f15\u65f6\uff0c\u9700\u8981\u628a\u5199\u5165\u7684\u6570\u636e\u90fd\u540c\u6b65\u5230\u526f\u672c\u8282\u70b9\uff0c\u526f\u672c\u8282\u70b9\u8d8a\u591a\uff0c\u5199\u7d22\u5f15\u7684\u6548\u7387\u5c31\u8d8a \u6162\u3002 <\/p>\n<p>\u200b    \u5982 \u679c \u6211 \u4eec \u9700 \u8981 \u5927 \u6279 \u91cf \u8fdb \u884c \u5199 \u5165 \u64cd \u4f5c \uff0c \u53ef \u4ee5 \u5148 \u7981 \u6b62 Replica \u590d \u5236 \uff0c \u8bbe \u7f6e index.number_of_replicas: 0 \u5173\u95ed\u526f\u672c\u3002\u5728\u5199\u5165\u5b8c\u6210\u540e\uff0cReplica \u4fee\u6539\u56de\u6b63\u5e38\u7684\u72b6\u6001\u3002 <\/p>\n<h3>6.5 \u5185\u5b58\u8bbe\u7f6e<\/h3>\n<p>\u200b    ES \u9ed8\u8ba4\u5b89\u88c5\u540e\u8bbe\u7f6e\u7684\u5185\u5b58\u662f 1GB\uff0c\u5bf9\u4e8e\u4efb\u4f55\u4e00\u4e2a\u73b0\u5b9e\u4e1a\u52a1\u6765\u8bf4\uff0c\u8fd9\u4e2a\u8bbe\u7f6e\u90fd\u592a\u5c0f\u4e86\u3002 \u5982\u679c\u662f\u901a\u8fc7\u89e3\u538b\u5b89\u88c5\u7684 ES\uff0c\u5219\u5728 ES \u5b89\u88c5\u6587\u4ef6\u4e2d\u5305\u542b\u4e00\u4e2a jvm.option \u6587\u4ef6\uff0c\u6dfb\u52a0\u5982\u4e0b\u547d \u4ee4\u6765\u8bbe\u7f6e ES \u7684\u5806\u5927\u5c0f\uff0cXms \u8868\u793a\u5806\u7684\u521d\u59cb\u5927\u5c0f\uff0cXmx \u8868\u793a\u53ef\u5206\u914d\u7684\u6700\u5927\u5185\u5b58\uff0c\u90fd\u662f 1GB\u3002 <\/p>\n<p>\u200b    \u786e\u4fdd Xmx \u548c Xms \u7684\u5927\u5c0f\u662f\u76f8\u540c\u7684\uff0c\u5176\u76ee\u7684\u662f\u4e3a\u4e86\u80fd\u591f\u5728 Java \u5783\u573e\u56de\u6536\u673a\u5236\u6e05\u7406\u5b8c \u5806\u533a\u540e\u4e0d\u9700\u8981\u91cd\u65b0\u5206\u9694\u8ba1\u7b97\u5806\u533a\u7684\u5927\u5c0f\u800c\u6d6a\u8d39\u8d44\u6e90\uff0c\u53ef\u4ee5\u51cf\u8f7b\u4f38\u7f29\u5806\u5927\u5c0f\u5e26\u6765\u7684\u538b\u529b\u3002 <\/p>\n<p>\u200b    \u5047\u8bbe\u4f60\u6709\u4e00\u4e2a 64G \u5185\u5b58\u7684\u673a\u5668\uff0c\u6309\u7167\u6b63\u5e38\u601d\u7ef4\u601d\u8003\uff0c\u4f60\u53ef\u80fd\u4f1a\u8ba4\u4e3a\u628a 64G \u5185\u5b58\u90fd\u7ed9 ES \u6bd4\u8f83\u597d\uff0c\u4f46\u73b0\u5b9e\u662f\u8fd9\u6837\u5417\uff0c \u8d8a\u5927\u8d8a\u597d\uff1f\u867d\u7136\u5185\u5b58\u5bf9 ES \u6765\u8bf4\u662f\u975e\u5e38\u91cd\u8981\u7684\uff0c\u4f46\u662f\u7b54\u6848 \u662f\u5426\u5b9a\u7684\uff01 <\/p>\n<p>\u56e0\u4e3a ES \u5806\u5185\u5b58\u7684\u5206\u914d\u9700\u8981\u6ee1\u8db3\u4ee5\u4e0b\u4e24\u4e2a\u539f\u5219\uff1a <\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u4e0d\u8981\u8d85\u8fc7\u7269\u7406\u5185\u5b58\u7684 50%\uff1aLucene \u7684\u8bbe\u8ba1\u76ee\u7684\u662f\u628a\u5e95\u5c42 OS \u91cc\u7684\u6570\u636e\u7f13\u5b58\u5230\u5185\u5b58\u4e2d\u3002<\/p>\n<p>Lucene \u7684\u6bb5\u662f\u5206\u522b\u5b58\u50a8\u5230\u5355\u4e2a\u6587\u4ef6\u4e2d\u7684\uff0c\u8fd9\u4e9b\u6587\u4ef6\u90fd\u662f\u4e0d\u4f1a\u53d8\u5316\u7684\uff0c\u6240\u4ee5\u5f88\u5229\u4e8e\u7f13\u5b58\uff0c\u540c\u65f6\u64cd\u4f5c\u7cfb \u7edf\u4e5f\u4f1a\u628a\u8fd9\u4e9b\u6bb5\u6587\u4ef6\u7f13\u5b58\u8d77\u6765\uff0c\u4ee5\u4fbf\u66f4\u5feb\u7684\u8bbf\u95ee\u3002 <\/p>\n<p>\u5982\u679c\u6211\u4eec\u8bbe\u7f6e\u7684\u5806\u5185\u5b58\u8fc7\u5927\uff0cLucene \u53ef\u7528\u7684\u5185\u5b58\u5c06\u4f1a\u51cf\u5c11\uff0c\u5c31\u4f1a\u4e25\u91cd\u5f71\u54cd\u964d\u4f4e Lucene \u7684\u5168\u6587\u672c\u67e5 \u8be2\u6027\u80fd\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5806\u5185\u5b58\u7684\u5927\u5c0f\u6700\u597d\u4e0d\u8981\u8d85\u8fc7 32GB\uff1a\u5728 Java \u4e2d\uff0c\u6240\u6709\u5bf9\u8c61\u90fd\u5206\u914d\u5728\u5806\u4e0a\uff0c\u7136\u540e\u6709\u4e00\u4e2a Klass Pointer \u6307 \u9488\u6307\u5411\u5b83\u7684\u7c7b\u5143\u6570\u636e\u3002 <\/p>\n<p>\u8fd9\u4e2a\u6307\u9488\u5728 64 \u4f4d\u7684\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u4e3a 64 \u4f4d\uff0c64 \u4f4d\u7684\u64cd\u4f5c\u7cfb\u7edf\u53ef\u4ee5\u4f7f\u7528\u66f4\u591a\u7684\u5185\u5b58\uff082^64\uff09\u3002\u5728 32 \u4f4d \u7684\u7cfb\u7edf\u4e0a\u4e3a 32 \u4f4d\uff0c32 \u4f4d\u7684\u64cd\u4f5c\u7cfb\u7edf\u7684\u6700\u5927\u5bfb\u5740\u7a7a\u95f4\u4e3a 4GB\uff082^32\uff09\u3002<\/p>\n<p>\u4f46\u662f 64 \u4f4d\u7684\u6307\u9488\u610f\u5473\u7740\u66f4\u5927\u7684\u6d6a\u8d39\uff0c\u56e0\u4e3a\u4f60\u7684\u6307\u9488\u672c\u8eab\u5927\u4e86\u3002\u6d6a\u8d39\u5185\u5b58\u4e0d\u7b97\uff0c\u66f4\u7cdf\u7cd5\u7684\u662f\uff0c\u66f4\u5927\u7684 \u6307\u9488\u5728\u4e3b\u5185\u5b58\u548c\u7f13\u5b58\u5668\uff08\u4f8b\u5982 LLC, L1 \u7b49\uff09\u4e4b\u95f4\u79fb\u52a8\u6570\u636e\u7684\u65f6\u5019\uff0c\u4f1a\u5360\u7528\u66f4\u591a\u7684\u5e26\u5bbd\u3002 <\/p>\n<\/li>\n<\/ul>\n<p>\u6700\u7ec8\u6211\u4eec\u90fd\u4f1a\u91c7\u7528 31 G \u8bbe\u7f6e <\/p>\n<p>-Xms 31g <\/p>\n<p>-Xmx 31g <\/p>\n<p>\u5047\u8bbe\u4f60\u6709\u4e2a\u673a\u5668\u6709 128 GB \u7684\u5185\u5b58\uff0c\u4f60\u53ef\u4ee5\u521b\u5efa\u4e24\u4e2a\u8282\u70b9\uff0c\u6bcf\u4e2a\u8282\u70b9\u5185\u5b58\u5206\u914d\u4e0d\u8d85\u8fc7 32 GB\u3002 \u4e5f\u5c31\u662f\u8bf4 \u4e0d\u8d85\u8fc7 64 GB \u5185\u5b58\u7ed9 ES \u7684\u5806\u5185\u5b58\uff0c\u5269\u4e0b\u7684\u8d85\u8fc7 64 GB \u7684\u5185\u5b58\u7ed9 Lucene <\/p>\n<h3>6.6 \u91cd\u8981\u914d\u7f6e<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u53c2\u6570\u540d<\/th>\n<th>\u53c2\u6570\u503c<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cluster.name<\/td>\n<td>elasticsearch<\/td>\n<td>\u914d\u7f6e ES \u7684\u96c6\u7fa4\u540d\u79f0\uff0c\u9ed8\u8ba4\u503c\u662f ES\uff0c\u5efa\u8bae\u6539\u6210\u4e0e\u6240\u5b58\u6570\u636e\u76f8\u5173\u7684\u540d\u79f0\uff0cES \u4f1a\u81ea\u52a8\u53d1\u73b0\u5728\u540c\u4e00\u7f51\u6bb5\u4e0b\u7684 \u96c6\u7fa4\u540d\u79f0\u76f8\u540c\u7684\u8282\u70b9<\/td>\n<\/tr>\n<tr>\n<td>node.name<\/td>\n<td>node-1<\/td>\n<td>\u96c6\u7fa4\u4e2d\u7684\u8282\u70b9\u540d\uff0c\u5728\u540c\u4e00\u4e2a\u96c6\u7fa4\u4e2d\u4e0d\u80fd\u91cd\u590d\u3002\u8282\u70b9 \u7684\u540d\u79f0\u4e00\u65e6\u8bbe\u7f6e\uff0c\u5c31\u4e0d\u80fd\u518d\u6539\u53d8\u4e86\u3002\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5 \u8bbe \u7f6e \u6210 \u670d \u52a1 \u5668 \u7684 \u4e3b \u673a \u540d \u79f0 \uff0c \u4f8b \u5982 node.name:${HOSTNAME}\u3002<\/td>\n<\/tr>\n<tr>\n<td>node.master<\/td>\n<td>true<\/td>\n<td>\u6307\u5b9a\u8be5\u8282\u70b9\u662f\u5426\u6709\u8d44\u683c\u88ab\u9009\u4e3e\u6210\u4e3a Master \u8282\u70b9\uff0c\u9ed8 \u8ba4\u662f True\uff0c\u5982\u679c\u88ab\u8bbe\u7f6e\u4e3a True\uff0c\u5219\u53ea\u662f\u6709\u8d44\u683c\u6210\u4e3a Master \u8282\u70b9\uff0c\u5177\u4f53\u80fd\u5426\u6210\u4e3a Master \u8282\u70b9\uff0c\u9700\u8981\u901a \u8fc7\u9009\u4e3e\u4ea7\u751f\u3002<\/td>\n<\/tr>\n<tr>\n<td>node.data<\/td>\n<td>true<\/td>\n<td>\u6307\u5b9a\u8be5\u8282\u70b9\u662f\u5426\u5b58\u50a8\u7d22\u5f15\u6570\u636e\uff0c\u9ed8\u8ba4\u4e3a True\u3002\u6570\u636e \u7684\u589e\u3001\u5220\u3001\u6539\u3001\u67e5\u90fd\u662f\u5728 Data \u8282\u70b9\u5b8c\u6210\u7684\u3002<\/td>\n<\/tr>\n<tr>\n<td>index.number_of_shards<\/td>\n<td>1<\/td>\n<td>\u8bbe\u7f6e\u90fd\u7d22\u5f15\u5206\u7247\u4e2a\u6570\uff0c\u9ed8\u8ba4\u662f 1 \u7247\u3002\u4e5f\u53ef\u4ee5\u5728\u521b\u5efa \u7d22\u5f15\u65f6\u8bbe\u7f6e\u8be5\u503c\uff0c\u5177\u4f53\u8bbe\u7f6e\u4e3a\u591a\u5927\u90fd\u503c\u8981\u6839\u636e\u6570\u636e \u91cf\u7684\u5927\u5c0f\u6765\u5b9a\u3002\u5982\u679c\u6570\u636e\u91cf\u4e0d\u5927\uff0c\u5219\u8bbe\u7f6e\u6210 1 \u65f6\u6548 \u7387\u6700\u9ad8<\/td>\n<\/tr>\n<tr>\n<td>index.number_of_replicas<\/td>\n<td>1<\/td>\n<td>\u8bbe\u7f6e\u9ed8\u8ba4\u7684\u7d22\u5f15\u526f\u672c\u4e2a\u6570\uff0c\u9ed8\u8ba4\u4e3a 1 \u4e2a\u3002\u526f\u672c\u6570\u8d8a \u591a\uff0c\u96c6\u7fa4\u7684\u53ef\u7528\u6027\u8d8a\u597d\uff0c\u4f46\u662f\u5199\u7d22\u5f15\u65f6\u9700\u8981\u540c\u6b65\u7684 \u6570\u636e\u8d8a\u591a\u3002<\/td>\n<\/tr>\n<tr>\n<td>transport.tcp.compress<\/td>\n<td>true<\/td>\n<td>\u8bbe\u7f6e\u5728\u8282\u70b9\u95f4\u4f20\u8f93\u6570\u636e\u65f6\u662f\u5426\u538b\u7f29\uff0c\u9ed8\u8ba4\u4e3a False\uff0c \u4e0d\u538b\u7f29<\/td>\n<\/tr>\n<tr>\n<td>discovery.zen.minimum_master_nodes<\/td>\n<td>1<\/td>\n<td>\u8bbe\u7f6e\u5728\u9009\u4e3e Master \u8282\u70b9\u65f6\u9700\u8981\u53c2\u4e0e\u7684\u6700\u5c11\u7684\u5019\u9009 \u4e3b\u8282\u70b9\u6570\uff0c\u9ed8\u8ba4\u4e3a 1\u3002\u5982\u679c\u4f7f\u7528\u9ed8\u8ba4\u503c\uff0c\u5219\u5f53\u7f51\u7edc \u4e0d\u7a33\u5b9a\u65f6\u6709\u53ef\u80fd\u4f1a\u51fa\u73b0\u8111\u88c2\u3002<br \/> \u5408\u7406\u7684\u6570\u503c\u4e3a (master_eligible_nodes\/2)+1 \uff0c\u5176\u4e2d master_eligible_nodes \u8868\u793a\u96c6\u7fa4\u4e2d\u7684\u5019\u9009\u4e3b\u8282\u70b9\u6570<\/td>\n<\/tr>\n<tr>\n<td>discovery.zen.ping.timeout<\/td>\n<td>3s<\/td>\n<td>\u8bbe\u7f6e\u5728\u96c6\u7fa4\u4e2d\u81ea\u52a8\u53d1\u73b0\u5176\u4ed6\u8282\u70b9\u65f6 Ping \u8fde\u63a5\u7684\u8d85 \u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba4\u4e3a 3 \u79d2\u3002 <br \/>\u5728\u8f83\u5dee\u7684\u7f51\u7edc\u73af\u5883\u4e0b\u9700\u8981\u8bbe\u7f6e\u5f97\u5927\u4e00\u70b9\uff0c\u9632\u6b62\u56e0\u8bef \u5224\u8be5\u8282\u70b9\u7684\u5b58\u6d3b\u72b6\u6001\u800c\u5bfc\u81f4\u5206\u7247\u7684\u8f6c\u79fb<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\u7b2c7\u7ae0 Elasticsearch \u9762\u8bd5\u9898<\/h2>\n<h3>7.1 \u4e3a\u4ec0\u4e48\u8981\u4f7f\u7528 Elasticsearch?<\/h3>\n<p>\u7cfb\u7edf\u4e2d\u7684\u6570\u636e\uff0c\u968f\u7740\u4e1a\u52a1\u7684\u53d1\u5c55\uff0c\u65f6\u95f4\u7684\u63a8\u79fb\uff0c\u5c06\u4f1a\u975e\u5e38\u591a\uff0c\u800c\u4e1a\u52a1\u4e2d\u5f80\u5f80\u91c7\u7528\u6a21\u7cca\u67e5\u8be2\u8fdb\u884c\u6570\u636e\u7684 \u641c\u7d22\uff0c\u800c\u6a21\u7cca\u67e5\u8be2\u4f1a\u5bfc\u81f4\u67e5\u8be2\u5f15\u64ce\u653e\u5f03\u7d22\u5f15\uff0c\u5bfc\u81f4\u7cfb\u7edf\u67e5\u8be2\u6570\u636e\u65f6\u90fd\u662f\u5168\u8868\u626b\u63cf\uff0c\u5728\u767e\u4e07\u7ea7\u522b\u7684\u6570\u636e\u5e93\u4e2d\uff0c \u67e5\u8be2\u6548\u7387\u662f\u975e\u5e38\u4f4e\u4e0b\u7684\uff0c\u800c\u6211\u4eec\u4f7f\u7528 ES \u505a\u4e00\u4e2a\u5168\u6587\u7d22\u5f15\uff0c\u5c06\u7ecf\u5e38\u67e5\u8be2\u7684\u7cfb\u7edf\u529f\u80fd\u7684\u67d0\u4e9b\u5b57\u6bb5\uff0c\u6bd4\u5982\u8bf4\u7535 \u5546\u7cfb\u7edf\u7684\u5546\u54c1\u8868\u4e2d\u5546\u54c1\u540d\uff0c\u63cf\u8ff0\u3001\u4ef7\u683c\u8fd8\u6709 id \u8fd9\u4e9b\u5b57\u6bb5\u6211\u4eec\u653e\u5165 ES \u7d22\u5f15\u5e93\u91cc\uff0c\u53ef\u4ee5\u63d0\u9ad8\u67e5\u8be2\u901f\u5ea6\u3002 <\/p>\n<h3>7.2 Elasticsearch \u7684 master \u9009\u4e3e\u6d41\u7a0b\uff1f<\/h3>\n<ul>\n<li>\n<p>Elasticsearch \u7684\u9009\u4e3b\u662f ZenDiscovery \u6a21\u5757\u8d1f\u8d23\u7684\uff0c\u4e3b\u8981\u5305\u542b Ping\uff08\u8282\u70b9\u4e4b\u95f4\u901a\u8fc7\u8fd9\u4e2a RPC \u6765\u53d1\u73b0\u5f7c\u6b64\uff09 \u548c Unicast\uff08\u5355\u64ad\u6a21\u5757\u5305\u542b\u4e00\u4e2a\u4e3b\u673a\u5217\u8868\u4ee5\u63a7\u5236\u54ea\u4e9b\u8282\u70b9\u9700\u8981 ping \u901a\uff09\u8fd9\u4e24\u90e8\u5206 <\/p>\n<\/li>\n<li>\n<p>\u5bf9\u6240\u6709\u53ef\u4ee5\u6210\u4e3a master \u7684\u8282\u70b9\uff08node.master: true\uff09\u6839\u636e nodeId \u5b57\u5178\u6392\u5e8f\uff0c\u6bcf\u6b21\u9009\u4e3e\u6bcf\u4e2a\u8282\u70b9\u90fd\u628a\u81ea \u5df1\u6240\u77e5\u9053\u8282\u70b9\u6392\u4e00\u6b21\u5e8f\uff0c\u7136\u540e\u9009\u51fa\u7b2c\u4e00\u4e2a\uff08\u7b2c 0 \u4f4d\uff09\u8282\u70b9\uff0c\u6682\u4e14\u8ba4\u4e3a\u5b83\u662f master \u8282\u70b9\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c\u5bf9\u67d0\u4e2a\u8282\u70b9\u7684\u6295\u7968\u6570\u8fbe\u5230\u4e00\u5b9a\u7684\u503c\uff08\u53ef\u4ee5\u6210\u4e3a master \u8282\u70b9\u6570 n\/2+1\uff09\u5e76\u4e14\u8be5\u8282\u70b9\u81ea\u5df1\u4e5f\u9009\u4e3e\u81ea\u5df1\uff0c \u90a3\u8fd9\u4e2a\u8282\u70b9\u5c31\u662f master\u3002\u5426\u5219\u91cd\u65b0\u9009\u4e3e\u4e00\u76f4\u5230\u6ee1\u8db3\u4e0a\u8ff0\u6761\u4ef6\u3002 <\/p>\n<\/li>\n<li>\n<p>master \u8282\u70b9\u7684\u804c\u8d23\u4e3b\u8981\u5305\u62ec\u96c6\u7fa4\u3001\u8282\u70b9\u548c\u7d22\u5f15\u7684\u7ba1\u7406\uff0c\u4e0d\u8d1f\u8d23\u6587\u6863\u7ea7\u522b\u7684\u7ba1\u7406\uff1bdata \u8282\u70b9\u53ef\u4ee5\u5173\u95ed http \u529f\u80fd\u3002 <\/p>\n<h3>7.3 Elasticsearch \u96c6\u7fa4\u8111\u88c2\u95ee\u9898\uff1f<\/h3>\n<p><strong>\u201c\u8111\u88c2\u201d\u95ee\u9898\u53ef\u80fd\u7684\u6210\u56e0:<\/strong> <\/p>\n<\/li>\n<li>\n<p><strong>\u7f51\u7edc\u95ee\u9898<\/strong>\uff1a\u96c6\u7fa4\u95f4\u7684\u7f51\u7edc\u5ef6\u8fdf\u5bfc\u81f4\u4e00\u4e9b\u8282\u70b9\u8bbf\u95ee\u4e0d\u5230 master\uff0c\u8ba4\u4e3a master \u6302\u6389\u4e86\u4ece\u800c\u9009\u4e3e\u51fa\u65b0\u7684 master\uff0c\u5e76\u5bf9 master \u4e0a\u7684\u5206\u7247\u548c\u526f\u672c\u6807\u7ea2\uff0c\u5206\u914d\u65b0\u7684\u4e3b\u5206\u7247 <\/p>\n<\/li>\n<li>\n<p><strong>\u8282\u70b9\u8d1f\u8f7d<\/strong>\uff1a\u4e3b\u8282\u70b9\u7684\u89d2\u8272\u65e2\u4e3a master \u53c8\u4e3a data\uff0c\u8bbf\u95ee\u91cf\u8f83\u5927\u65f6\u53ef\u80fd\u4f1a\u5bfc\u81f4 ES \u505c\u6b62\u54cd\u5e94\u9020\u6210\u5927\u9762\u79ef\u5ef6 \u8fdf\uff0c\u6b64\u65f6\u5176\u4ed6\u8282\u70b9\u5f97\u4e0d\u5230\u4e3b\u8282\u70b9\u7684\u54cd\u5e94\u8ba4\u4e3a\u4e3b\u8282\u70b9\u6302\u6389\u4e86\uff0c\u4f1a\u91cd\u65b0\u9009\u53d6\u4e3b\u8282\u70b9\u3002 <\/p>\n<\/li>\n<li>\n<p><strong>\u5185\u5b58\u56de\u6536<\/strong>\uff1adata \u8282\u70b9\u4e0a\u7684 ES \u8fdb\u7a0b\u5360\u7528\u7684\u5185\u5b58\u8f83\u5927\uff0c\u5f15\u53d1 JVM \u7684\u5927\u89c4\u6a21\u5185\u5b58\u56de\u6536\uff0c\u9020\u6210 ES \u8fdb\u7a0b\u5931\u53bb \u54cd\u5e94\u3002 <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u8111\u88c2\u95ee\u9898\u89e3\u51b3\u65b9\u6848\uff1a<\/strong> <\/p>\n<ul>\n<li>\n<p><strong>\u51cf\u5c11\u8bef\u5224<\/strong>\uff1adiscovery.zen.ping_timeout \u8282\u70b9\u72b6\u6001\u7684\u54cd\u5e94\u65f6\u95f4\uff0c\u9ed8\u8ba4\u4e3a 3s\uff0c\u53ef\u4ee5\u9002\u5f53\u8c03\u5927\uff0c\u5982\u679c master \u5728\u8be5\u54cd\u5e94\u65f6\u95f4\u7684\u8303\u56f4\u5185\u6ca1\u6709\u505a\u51fa\u54cd\u5e94\u5e94\u7b54\uff0c\u5224\u65ad\u8be5\u8282\u70b9\u5df2\u7ecf\u6302\u6389\u4e86\u3002\u8c03\u5927\u53c2\u6570\uff08\u5982 6s\uff0c discovery.zen.ping_timeout:6\uff09\uff0c\u53ef\u9002\u5f53\u51cf\u5c11\u8bef\u5224\u3002 <\/p>\n<\/li>\n<li>\n<p><strong>\u9009\u4e3e\u89e6\u53d1<\/strong>: discovery.zen.minimum_master_nodes:1  \u8be5\u53c2\u6570\u662f\u7528\u4e8e\u63a7\u5236\u9009\u4e3e\u884c\u4e3a\u53d1\u751f\u7684\u6700\u5c0f\u96c6\u7fa4\u4e3b\u8282\u70b9\u6570\u91cf\u3002\u5f53\u5907\u9009\u4e3b\u8282\u70b9\u7684\u4e2a\u6570\u5927\u4e8e\u7b49\u4e8e\u8be5\u53c2\u6570\u7684\u503c\uff0c \u4e14\u5907\u9009\u4e3b\u8282\u70b9\u4e2d\u6709\u8be5\u53c2\u6570\u4e2a\u8282\u70b9\u8ba4\u4e3a\u4e3b\u8282\u70b9\u6302\u4e86\uff0c\u8fdb\u884c\u9009\u4e3e\u3002\u5b98\u65b9\u5efa\u8bae\u4e3a\uff08n\/2\uff09+1\uff0cn \u4e3a\u4e3b\u8282\u70b9\u4e2a\u6570 \uff08\u5373\u6709\u8d44\u683c\u6210\u4e3a\u4e3b\u8282\u70b9\u7684\u8282\u70b9\u4e2a\u6570\uff09 <\/p>\n<\/li>\n<li>\n<p><strong>\u89d2\u8272\u5206\u79bb<\/strong>\uff1a\u5373 master \u8282\u70b9\u4e0e data \u8282\u70b9\u5206\u79bb\uff0c\u9650\u5236\u89d2\u8272 <\/p>\n<p>\u4e3b\u8282\u70b9\u914d\u7f6e\u4e3a\uff1anode.master: true node.data: false <\/p>\n<p>\u4ece\u8282\u70b9\u914d\u7f6e\u4e3a\uff1anode.master: false node.data: true <\/p>\n<\/li>\n<\/ul>\n<h3>7.4 Elasticsearch \u7d22\u5f15\u6587\u6863\u7684\u6d41\u7a0b\uff1f<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220526102438524.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220526102438524.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220526102438524\" \/><\/div><\/p>\n<ul>\n<li>\n<p>\u534f\u8c03\u8282\u70b9\u9ed8\u8ba4\u4f7f\u7528\u6587\u6863 ID \u53c2\u4e0e\u8ba1\u7b97\uff08\u4e5f\u652f\u6301\u901a\u8fc7 routing\uff09\uff0c\u4ee5\u4fbf\u4e3a\u8def\u7531\u63d0\u4f9b\u5408\u9002\u7684\u5206\u7247\uff1a <\/p>\n<p><strong>shard = hash(document_id) % (num_of_primary_shards)<\/strong> <\/p>\n<\/li>\n<li>\n<p>\u5f53\u5206\u7247\u6240\u5728\u7684\u8282\u70b9\u63a5\u6536\u5230\u6765\u81ea\u534f\u8c03\u8282\u70b9\u7684\u8bf7\u6c42\u540e\uff0c\u4f1a\u5c06\u8bf7\u6c42\u5199\u5165\u5230 Memory Buffer\uff0c\u7136\u540e\u5b9a\u65f6\uff08\u9ed8\u8ba4 \u662f\u6bcf\u9694 1 \u79d2\uff09\u5199\u5165\u5230 Filesystem Cache\uff0c\u8fd9\u4e2a\u4ece Memory Buffer \u5230 Filesystem Cache \u7684\u8fc7\u7a0b\u5c31\u53eb\u505a refresh\uff1b <\/p>\n<\/li>\n<li>\n<p>\u5f53\u7136\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u5b58\u5728 Momery Buffer \u548c Filesystem Cache \u7684\u6570\u636e\u53ef\u80fd\u4f1a\u4e22\u5931\uff0cES \u662f\u901a\u8fc7 translog \u7684\u673a\u5236\u6765\u4fdd\u8bc1\u6570\u636e\u7684\u53ef\u9760\u6027\u7684\u3002\u5176\u5b9e\u73b0\u673a\u5236\u662f\u63a5\u6536\u5230\u8bf7\u6c42\u540e\uff0c\u540c\u65f6\u4e5f\u4f1a\u5199\u5165\u5230 translog \u4e2d\uff0c\u5f53 Filesystem cache \u4e2d\u7684\u6570\u636e\u5199\u5165\u5230\u78c1\u76d8\u4e2d\u65f6\uff0c\u624d\u4f1a\u6e05\u9664\u6389\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u53eb\u505a flush\uff1b <\/p>\n<\/li>\n<li>\n<p>\u5728 flush \u8fc7\u7a0b\u4e2d\uff0c\u5185\u5b58\u4e2d\u7684\u7f13\u51b2\u5c06\u88ab\u6e05\u9664\uff0c\u5185\u5bb9\u88ab\u5199\u5165\u4e00\u4e2a\u65b0\u6bb5\uff0c\u6bb5\u7684 fsync \u5c06\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u63d0\u4ea4\u70b9\uff0c \u5e76\u5c06\u5185\u5bb9\u5237\u65b0\u5230\u78c1\u76d8\uff0c\u65e7\u7684 translog \u5c06\u88ab\u5220\u9664\u5e76\u5f00\u59cb\u4e00\u4e2a\u65b0\u7684 translog\u3002 <\/p>\n<\/li>\n<li>\n<p>flush \u89e6\u53d1\u7684\u65f6\u673a\u662f\u5b9a\u65f6\u89e6\u53d1\uff08\u9ed8\u8ba4 30 \u5206\u949f\uff09\u6216\u8005 translog \u53d8\u5f97\u592a\u5927\uff08\u9ed8\u8ba4\u4e3a 512M\uff09\u65f6\uff1b <\/p>\n<\/li>\n<\/ul>\n<h3>7.5 Elasticsearch \u66f4\u65b0\u548c\u5220\u9664\u6587\u6863\u7684\u6d41\u7a0b\uff1f<\/h3>\n<ul>\n<li>\n<p>\u5220\u9664\u548c\u66f4\u65b0\u4e5f\u90fd\u662f\u5199\u64cd\u4f5c\uff0c\u4f46\u662f Elasticsearch \u4e2d\u7684\u6587\u6863\u662f\u4e0d\u53ef\u53d8\u7684\uff0c\u56e0\u6b64\u4e0d\u80fd\u88ab\u5220\u9664\u6216\u8005\u6539\u52a8\u4ee5\u5c55\u793a \u5176\u53d8\u66f4\uff1b <\/p>\n<\/li>\n<li>\n<p>\u78c1\u76d8\u4e0a\u7684\u6bcf\u4e2a\u6bb5\u90fd\u6709\u4e00\u4e2a\u76f8\u5e94\u7684.del \u6587\u4ef6\u3002\u5f53\u5220\u9664\u8bf7\u6c42\u53d1\u9001\u540e\uff0c\u6587\u6863\u5e76\u6ca1\u6709\u771f\u7684\u88ab\u5220\u9664\uff0c\u800c\u662f\u5728.del \u6587\u4ef6\u4e2d\u88ab\u6807\u8bb0\u4e3a\u5220\u9664\u3002\u8be5\u6587\u6863\u4f9d\u7136\u80fd\u5339\u914d\u67e5\u8be2\uff0c\u4f46\u662f\u4f1a\u5728\u7ed3\u679c\u4e2d\u88ab\u8fc7\u6ee4\u6389\u3002\u5f53\u6bb5\u5408\u5e76\u65f6\uff0c\u5728.del \u6587\u4ef6\u4e2d\u88ab\u6807\u8bb0\u4e3a\u5220\u9664\u7684\u6587\u6863\u5c06\u4e0d\u4f1a\u88ab\u5199\u5165\u65b0\u6bb5\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5728\u65b0\u7684\u6587\u6863\u88ab\u521b\u5efa\u65f6\uff0cElasticsearch \u4f1a\u4e3a\u8be5\u6587\u6863\u6307\u5b9a\u4e00\u4e2a\u7248\u672c\u53f7\uff0c\u5f53\u6267\u884c\u66f4\u65b0\u65f6\uff0c\u65e7\u7248\u672c\u7684\u6587\u6863\u5728.del \u6587\u4ef6\u4e2d\u88ab\u6807\u8bb0\u4e3a\u5220\u9664\uff0c\u65b0\u7248\u672c\u7684\u6587\u6863\u88ab\u7d22\u5f15\u5230\u4e00\u4e2a\u65b0\u6bb5\u3002\u65e7\u7248\u672c\u7684\u6587\u6863\u4f9d\u7136\u80fd\u5339\u914d\u67e5\u8be2\uff0c\u4f46\u662f\u4f1a\u5728\u7ed3 \u679c\u4e2d\u88ab\u8fc7\u6ee4\u6389\u3002 <\/p>\n<\/li>\n<\/ul>\n<h3>7.6 Elasticsearch \u641c\u7d22\u7684\u6d41\u7a0b\uff1f<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220526102831498.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220526102831498.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220526102831498\" \/><\/div><\/p>\n<ul>\n<li>\n<p>\u641c\u7d22\u88ab\u6267\u884c\u6210\u4e00\u4e2a\u4e24\u9636\u6bb5\u8fc7\u7a0b\uff0c\u6211\u4eec\u79f0\u4e4b\u4e3a Query Then Fetch\uff1b <\/p>\n<\/li>\n<li>\n<p>\u5728\u521d\u59cb\u67e5\u8be2\u9636\u6bb5\u65f6\uff0c\u67e5\u8be2\u4f1a\u5e7f\u64ad\u5230\u7d22\u5f15\u4e2d\u6bcf\u4e00\u4e2a\u5206\u7247\u62f7\u8d1d\uff08\u4e3b\u5206\u7247\u6216\u8005\u526f\u672c\u5206\u7247\uff09\u3002 \u6bcf\u4e2a\u5206\u7247\u5728\u672c \u5730\u6267\u884c\u641c\u7d22\u5e76\u6784\u5efa\u4e00\u4e2a\u5339\u914d\u6587\u6863\u7684\u5927\u5c0f\u4e3a from + size \u7684\u4f18\u5148\u961f\u5217\u3002PS\uff1a\u5728\u641c\u7d22\u7684\u65f6\u5019\u662f\u4f1a\u67e5\u8be2 Filesystem Cache \u7684\uff0c\u4f46\u662f\u6709\u90e8\u5206\u6570\u636e\u8fd8\u5728 Memory Buffer\uff0c\u6240\u4ee5\u641c\u7d22\u662f\u8fd1\u5b9e\u65f6\u7684\u3002 <\/p>\n<\/li>\n<li>\n<p>\u6bcf\u4e2a\u5206\u7247\u8fd4\u56de\u5404\u81ea\u4f18\u5148\u961f\u5217\u4e2d \u6240\u6709\u6587\u6863\u7684 ID \u548c\u6392\u5e8f\u503c \u7ed9\u534f\u8c03\u8282\u70b9\uff0c\u5b83\u5408\u5e76\u8fd9\u4e9b\u503c\u5230\u81ea\u5df1\u7684\u4f18\u5148\u961f \u5217\u4e2d\u6765\u4ea7\u751f\u4e00\u4e2a\u5168\u5c40\u6392\u5e8f\u540e\u7684\u7ed3\u679c\u5217\u8868\u3002 <\/p>\n<\/li>\n<li>\n<p>\u63a5\u4e0b\u6765\u5c31\u662f\u53d6\u56de\u9636\u6bb5\uff0c\u534f\u8c03\u8282\u70b9\u8fa8\u522b\u51fa\u54ea\u4e9b\u6587\u6863\u9700\u8981\u88ab\u53d6\u56de\u5e76\u5411\u76f8\u5173\u7684\u5206\u7247\u63d0\u4ea4\u591a\u4e2a GET \u8bf7\u6c42\u3002\u6bcf \u4e2a\u5206\u7247\u52a0\u8f7d\u5e76\u4e30\u5bcc\u6587\u6863\uff0c\u5982\u679c\u6709\u9700\u8981\u7684\u8bdd\uff0c\u63a5\u7740\u8fd4\u56de\u6587\u6863\u7ed9\u534f\u8c03\u8282\u70b9\u3002\u4e00\u65e6\u6240\u6709\u7684\u6587\u6863\u90fd\u88ab\u53d6\u56de\u4e86\uff0c \u534f\u8c03\u8282\u70b9\u8fd4\u56de\u7ed3\u679c\u7ed9\u5ba2\u6237\u7aef\u3002 <\/p>\n<\/li>\n<li>\n<p>Query Then Fetch \u7684\u641c\u7d22\u7c7b\u578b\u5728\u6587\u6863\u76f8\u5173\u6027\u6253\u5206\u7684\u65f6\u5019\u53c2\u8003\u7684\u662f\u672c\u5206\u7247\u7684\u6570\u636e\uff0c\u8fd9\u6837\u5728\u6587\u6863\u6570\u91cf\u8f83\u5c11 \u7684\u65f6\u5019\u53ef\u80fd\u4e0d\u591f\u51c6\u786e\uff0cDFS Query Then Fetch \u589e\u52a0\u4e86\u4e00\u4e2a\u9884\u67e5\u8be2\u7684\u5904\u7406\uff0c\u8be2\u95ee Term \u548c Document frequency\uff0c\u8fd9\u4e2a\u8bc4\u5206\u66f4\u51c6\u786e\uff0c\u4f46\u662f\u6027\u80fd\u4f1a\u53d8\u5dee\u3002 <\/p>\n<\/li>\n<\/ul>\n<h3>7.7 Elasticsearch \u5728\u90e8\u7f72\u65f6\uff0c\u5bf9 Linux \u7684\u8bbe\u7f6e\u6709\u54ea\u4e9b\u4f18\u5316\u65b9\u6cd5\uff1f<\/h3>\n<ul>\n<li>\n<p>64 GB \u5185\u5b58\u7684\u673a\u5668\u662f\u975e\u5e38\u7406\u60f3\u7684\uff0c\u4f46\u662f 32 GB \u548c 16 GB \u673a\u5668\u4e5f\u662f\u5f88\u5e38\u89c1\u7684\u3002\u5c11\u4e8e 8 GB \u4f1a\u9002\u5f97\u5176\u53cd\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c\u4f60\u8981\u5728\u66f4\u5feb\u7684 CPUs \u548c\u66f4\u591a\u7684\u6838\u5fc3\u4e4b\u95f4\u9009\u62e9\uff0c\u9009\u62e9\u66f4\u591a\u7684\u6838\u5fc3\u66f4\u597d\u3002\u591a\u4e2a\u5185\u6838\u63d0\u4f9b\u7684\u989d\u5916\u5e76\u53d1\u8fdc\u80dc\u8fc7\u7a0d\u5fae\u5feb\u4e00\u70b9\u70b9\u7684\u65f6\u949f\u9891\u7387\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c\u4f60\u8d1f\u62c5\u5f97\u8d77 SSD\uff0c\u5b83\u5c06\u8fdc\u8fdc\u8d85\u51fa\u4efb\u4f55\u65cb\u8f6c\u4ecb\u8d28\u3002 \u57fa\u4e8e SSD \u7684\u8282\u70b9\uff0c\u67e5\u8be2\u548c\u7d22\u5f15\u6027\u80fd\u90fd\u6709\u63d0\u5347\u3002 \u5982\u679c\u4f60\u8d1f\u62c5\u5f97\u8d77\uff0cSSD \u662f\u4e00\u4e2a\u597d\u7684\u9009\u62e9\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5373\u4f7f\u6570\u636e\u4e2d\u5fc3\u4eec\u8fd1\u5728\u54ab\u5c3a\uff0c\u4e5f\u8981\u907f\u514d\u96c6\u7fa4\u8de8\u8d8a\u591a\u4e2a\u6570\u636e\u4e2d\u5fc3\u3002\u7edd\u5bf9\u8981\u907f\u514d\u96c6\u7fa4\u8de8\u8d8a\u5927\u7684\u5730\u7406\u8ddd\u79bb\u3002 <\/p>\n<\/li>\n<li>\n<p>\u8bf7\u786e\u4fdd\u8fd0\u884c\u4f60\u5e94\u7528\u7a0b\u5e8f\u7684 JVM \u548c\u670d\u52a1\u5668\u7684 JVM \u662f\u5b8c\u5168\u4e00\u6837\u7684\u3002 \u5728 Elasticsearch \u7684\u51e0\u4e2a\u5730\u65b9\uff0c\u4f7f \u7528 Java \u7684\u672c\u5730\u5e8f\u5217\u5316\u3002 <\/p>\n<\/li>\n<li>\n<p>\u901a\u8fc7\u8bbe\u7f6e gateway.recover_after_nodes\u3001gateway.expected_nodes\u3001gateway.recover_after_time \u53ef\u4ee5\u5728\u96c6\u7fa4 \u91cd\u542f\u7684\u65f6\u5019\u907f\u514d\u8fc7\u591a\u7684\u5206\u7247\u4ea4\u6362\uff0c\u8fd9\u53ef\u80fd\u4f1a\u8ba9\u6570\u636e\u6062\u590d\u4ece\u6570\u4e2a\u5c0f\u65f6\u7f29\u77ed\u4e3a\u51e0\u79d2\u949f\u3002 <\/p>\n<\/li>\n<li>\n<p>Elasticsearch \u9ed8\u8ba4\u88ab\u914d\u7f6e\u4e3a\u4f7f\u7528\u5355\u64ad\u53d1\u73b0\uff0c\u4ee5\u9632\u6b62\u8282\u70b9\u65e0\u610f\u4e2d\u52a0\u5165\u96c6\u7fa4\u3002\u53ea\u6709\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\u8fd0\u884c\u7684 \u8282\u70b9\u624d\u4f1a\u81ea\u52a8\u7ec4\u6210\u96c6\u7fa4\u3002\u6700\u597d\u4f7f\u7528\u5355\u64ad\u4ee3\u66ff\u7ec4\u64ad\u3002 <\/p>\n<\/li>\n<li>\n<p>\u4e0d\u8981\u968f\u610f\u4fee\u6539\u5783\u573e\u56de\u6536\u5668\uff08CMS\uff09\u548c\u5404\u4e2a\u7ebf\u7a0b\u6c60\u7684\u5927\u5c0f\u3002 <\/p>\n<\/li>\n<li>\n<p>\u628a\u4f60\u7684\u5185\u5b58\u7684\uff08\u5c11\u4e8e\uff09\u4e00\u534a\u7ed9 Lucene\uff08\u4f46\u4e0d\u8981\u8d85\u8fc7 32 GB\uff01\uff09\uff0c\u901a\u8fc7 ES_HEAP_SIZE \u73af\u5883\u53d8\u91cf\u8bbe\u7f6e\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5185\u5b58\u4ea4\u6362\u5230\u78c1\u76d8\u5bf9\u670d\u52a1\u5668\u6027\u80fd\u6765\u8bf4\u662f\u81f4\u547d\u7684\u3002\u5982\u679c\u5185\u5b58\u4ea4\u6362\u5230\u78c1\u76d8\u4e0a\uff0c\u4e00\u4e2a 100 \u5fae\u79d2\u7684\u64cd\u4f5c\u53ef\u80fd\u53d8 \u6210 10 \u6beb\u79d2\u3002 \u518d\u60f3\u60f3\u90a3\u4e48\u591a 10 \u5fae\u79d2\u7684\u64cd\u4f5c\u65f6\u5ef6\u7d2f\u52a0\u8d77\u6765\u3002 \u4e0d\u96be\u770b\u51fa swapping \u5bf9\u4e8e\u6027\u80fd\u662f\u591a\u4e48\u53ef \u6015\u3002 <\/p>\n<\/li>\n<li>\n<p>Lucene \u4f7f\u7528\u4e86\u5927\u91cf\u7684\u6587\u4ef6\u3002\u540c\u65f6\uff0cElasticsearch \u5728\u8282\u70b9\u548c HTTP \u5ba2\u6237\u7aef\u4e4b\u95f4\u8fdb\u884c\u901a\u4fe1\u4e5f\u4f7f\u7528\u4e86\u5927\u91cf \u7684\u5957\u63a5\u5b57\u3002 \u6240\u6709\u8fd9\u4e00\u5207\u90fd\u9700\u8981\u8db3\u591f\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u3002\u4f60\u5e94\u8be5\u589e\u52a0\u4f60\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u8bbe\u7f6e\u4e00\u4e2a\u5f88\u5927\u7684\u503c\uff0c \u5982 64,000\u3002 <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u8865\u5145\uff1a\u7d22\u5f15\u9636\u6bb5\u6027\u80fd\u63d0\u5347\u65b9\u6cd5<\/strong> <\/p>\n<ul>\n<li>\n<p>\u4f7f\u7528\u6279\u91cf\u8bf7\u6c42\u5e76\u8c03\u6574\u5176\u5927\u5c0f\uff1a\u6bcf\u6b21\u6279\u91cf\u6570\u636e 5\u201315 MB \u5927\u662f\u4e2a\u4e0d\u9519\u7684\u8d77\u59cb\u70b9\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5b58\u50a8\uff1a\u4f7f\u7528 SSD <\/p>\n<\/li>\n<li>\n<p>\u6bb5\u548c\u5408\u5e76\uff1aElasticsearch \u9ed8\u8ba4\u503c\u662f 20 MB\/s\uff0c\u5bf9\u673a\u68b0\u78c1\u76d8\u5e94\u8be5\u662f\u4e2a\u4e0d\u9519\u7684\u8bbe\u7f6e\u3002\u5982\u679c\u4f60\u7528\u7684\u662f SSD\uff0c \u53ef\u4ee5\u8003\u8651\u63d0\u9ad8\u5230 100\u2013200 MB\/s\u3002\u5982\u679c\u4f60\u5728\u505a\u6279\u91cf\u5bfc\u5165\uff0c\u5b8c\u5168\u4e0d\u5728\u610f\u641c\u7d22\uff0c\u4f60\u53ef\u4ee5\u5f7b\u5e95\u5173\u6389\u5408\u5e76\u9650\u6d41\u3002 \u53e6\u5916\u8fd8\u53ef\u4ee5\u589e\u52a0 index.translog.flush_threshold_size \u8bbe\u7f6e\uff0c\u4ece\u9ed8\u8ba4\u7684 512 MB \u5230\u66f4\u5927\u4e00\u4e9b\u7684\u503c\uff0c\u6bd4\u5982 1 GB\uff0c\u8fd9\u53ef\u4ee5\u5728\u4e00\u6b21\u6e05\u7a7a\u89e6\u53d1\u7684\u65f6\u5019\u5728\u4e8b\u52a1\u65e5\u5fd7\u91cc\u79ef\u7d2f\u51fa\u66f4\u5927\u7684\u6bb5\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c\u4f60\u7684\u641c\u7d22\u7ed3\u679c\u4e0d\u9700\u8981\u8fd1\u5b9e\u65f6\u7684\u51c6\u786e\u5ea6\uff0c\u8003\u8651\u628a\u6bcf\u4e2a\u7d22\u5f15\u7684 index.refresh_interval \u6539\u5230 30s\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5982\u679c\u4f60\u5728\u505a\u5927\u6279\u91cf\u5bfc\u5165\uff0c\u8003\u8651\u901a\u8fc7\u8bbe\u7f6e index.number_of_replicas: 0 \u5173\u95ed\u526f\u672c\u3002 <\/p>\n<\/li>\n<\/ul>\n<h3>7.8 GC \u65b9\u9762\uff0c\u5728\u4f7f\u7528 Elasticsearch \u65f6\u8981\u6ce8\u610f\u4ec0\u4e48\uff1f<\/h3>\n<ul>\n<li>\n<p>\u5012\u6392\u8bcd\u5178\u7684\u7d22\u5f15\u9700\u8981\u5e38\u9a7b\u5185\u5b58\uff0c\u65e0\u6cd5 GC\uff0c\u9700\u8981\u76d1\u63a7 data node \u4e0a segment memory \u589e\u957f\u8d8b\u52bf\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5404\u7c7b\u7f13\u5b58\uff0cfield cache, filter cache, indexing cache, bulk queue \u7b49\u7b49\uff0c\u8981\u8bbe\u7f6e\u5408\u7406\u7684\u5927\u5c0f\uff0c\u5e76\u4e14\u8981\u5e94\u8be5\u6839 \u636e\u6700\u574f\u7684\u60c5\u51b5\u6765\u770b heap \u662f\u5426\u591f\u7528\uff0c\u4e5f\u5c31\u662f\u5404\u7c7b\u7f13\u5b58\u5168\u90e8\u5360\u6ee1\u7684\u65f6\u5019\uff0c\u8fd8\u6709 heap \u7a7a\u95f4\u53ef\u4ee5\u5206\u914d\u7ed9\u5176\u4ed6 \u4efb\u52a1\u5417\uff1f\u907f\u514d\u91c7\u7528 clear cache \u7b49\u201c\u81ea\u6b3a\u6b3a\u4eba\u201d\u7684\u65b9\u5f0f\u6765\u91ca\u653e\u5185\u5b58\u3002 <\/p>\n<\/li>\n<li>\n<p>\u907f\u514d\u8fd4\u56de\u5927\u91cf\u7ed3\u679c\u96c6\u7684\u641c\u7d22\u4e0e\u805a\u5408\u3002\u786e\u5b9e\u9700\u8981\u5927\u91cf\u62c9\u53d6\u6570\u636e\u7684\u573a\u666f\uff0c\u53ef\u4ee5\u91c7\u7528 scan &amp; scroll api \u6765\u5b9e\u73b0\u3002 <\/p>\n<\/li>\n<li>\n<p>cluster stats \u9a7b\u7559\u5185\u5b58\u5e76\u65e0\u6cd5\u6c34\u5e73\u6269\u5c55\uff0c\u8d85\u5927\u89c4\u6a21\u96c6\u7fa4\u53ef\u4ee5\u8003\u8651\u5206\u62c6\u6210\u591a\u4e2a\u96c6\u7fa4\u901a\u8fc7 tribe node \u8fde\u63a5\u3002 <\/p>\n<\/li>\n<li>\n<p>\u60f3\u77e5\u9053 heap \u591f\u4e0d\u591f\uff0c\u5fc5\u987b\u7ed3\u5408\u5b9e\u9645\u5e94\u7528\u573a\u666f\uff0c\u5e76\u5bf9\u96c6\u7fa4\u7684 heap \u4f7f\u7528\u60c5\u51b5\u505a\u6301\u7eed\u7684\u76d1\u63a7\u3002 <\/p>\n<\/li>\n<\/ul>\n<h3>7.9 Elasticsearch \u5bf9\u4e8e\u5927\u6570\u636e\u91cf\uff08\u4e0a\u4ebf\u91cf\u7ea7\uff09\u7684\u805a\u5408\u5982\u4f55\u5b9e\u73b0\uff1f<\/h3>\n<p>\u200b   Elasticsearch \u63d0\u4f9b\u7684\u9996\u4e2a\u8fd1\u4f3c\u805a\u5408\u662f cardinality \u5ea6\u91cf\u3002\u5b83\u63d0\u4f9b\u4e00\u4e2a\u5b57\u6bb5\u7684\u57fa\u6570\uff0c\u5373\u8be5\u5b57\u6bb5\u7684 distinct \u6216\u8005 unique \u503c\u7684\u6570\u76ee\u3002\u5b83\u662f\u57fa\u4e8e HLL \u7b97\u6cd5\u7684\u3002HLL \u4f1a\u5148\u5bf9\u6211\u4eec\u7684\u8f93\u5165\u4f5c\u54c8\u5e0c\u8fd0\u7b97\uff0c\u7136\u540e\u6839\u636e\u54c8\u5e0c\u8fd0\u7b97\u7684 \u7ed3\u679c\u4e2d\u7684 bits \u505a\u6982\u7387\u4f30\u7b97\u4ece\u800c\u5f97\u5230\u57fa\u6570\u3002\u5176\u7279\u70b9\u662f\uff1a\u53ef\u914d\u7f6e\u7684\u7cbe\u5ea6\uff0c\u7528\u6765\u63a7\u5236\u5185\u5b58\u7684\u4f7f\u7528\uff08\u66f4\u7cbe\u786e \uff1d \u66f4 \u591a\u5185\u5b58\uff09\uff1b\u5c0f\u7684\u6570\u636e\u96c6\u7cbe\u5ea6\u662f\u975e\u5e38\u9ad8\u7684\uff1b\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u914d\u7f6e\u53c2\u6570\uff0c\u6765\u8bbe\u7f6e\u53bb\u91cd\u9700\u8981\u7684\u56fa\u5b9a\u5185\u5b58\u4f7f\u7528\u91cf\u3002\u65e0 \u8bba\u6570\u5343\u8fd8\u662f\u6570\u5341\u4ebf\u7684\u552f\u4e00\u503c\uff0c\u5185\u5b58\u4f7f\u7528\u91cf\u53ea\u4e0e\u4f60\u914d\u7f6e\u7684\u7cbe\u786e\u5ea6\u76f8\u5173 <\/p>\n<h3>7.10 \u5728\u5e76\u53d1\u60c5\u51b5\u4e0b\uff0cElasticsearch \u5982\u679c\u4fdd\u8bc1\u8bfb\u5199\u4e00\u81f4\uff1f<\/h3>\n<ul>\n<li>\n<p>\u53ef\u4ee5\u901a\u8fc7\u7248\u672c\u53f7\u4f7f\u7528\u4e50\u89c2\u5e76\u53d1\u63a7\u5236\uff0c\u4ee5\u786e\u4fdd\u65b0\u7248\u672c\u4e0d\u4f1a\u88ab\u65e7\u7248\u672c\u8986\u76d6\uff0c\u7531\u5e94\u7528\u5c42\u6765\u5904\u7406\u5177\u4f53\u7684\u51b2\u7a81\uff1b <\/p>\n<\/li>\n<li>\n<p>\u53e6\u5916\u5bf9\u4e8e\u5199\u64cd\u4f5c\uff0c\u4e00\u81f4\u6027\u7ea7\u522b\u652f\u6301 quorum\/one\/all\uff0c\u9ed8\u8ba4\u4e3a quorum\uff0c\u5373\u53ea\u6709\u5f53\u5927\u591a\u6570\u5206\u7247\u53ef\u7528\u65f6\u624d\u5141 \u8bb8\u5199\u64cd\u4f5c\u3002\u4f46\u5373\u4f7f\u5927\u591a\u6570\u53ef\u7528\uff0c\u4e5f\u53ef\u80fd\u5b58\u5728\u56e0\u4e3a\u7f51\u7edc\u7b49\u539f\u56e0\u5bfc\u81f4\u5199\u5165\u526f\u672c\u5931\u8d25\uff0c\u8fd9\u6837\u8be5\u526f\u672c\u88ab\u8ba4\u4e3a\u6545 \u969c\uff0c\u5206\u7247\u5c06\u4f1a\u5728\u4e00\u4e2a\u4e0d\u540c\u7684\u8282\u70b9\u4e0a\u91cd\u5efa\u3002 <\/p>\n<\/li>\n<li>\n<p>\u5bf9\u4e8e\u8bfb\u64cd\u4f5c\uff0c\u53ef\u4ee5\u8bbe\u7f6e replication \u4e3a sync(\u9ed8\u8ba4)\uff0c\u8fd9\u4f7f\u5f97\u64cd\u4f5c\u5728\u4e3b\u5206\u7247\u548c\u526f\u672c\u5206\u7247\u90fd\u5b8c\u6210\u540e\u624d\u4f1a\u8fd4\u56de\uff1b \u5982\u679c\u8bbe\u7f6e replication \u4e3a async \u65f6\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e\u641c\u7d22\u8bf7\u6c42\u53c2\u6570_preference \u4e3a primary \u6765\u67e5\u8be2\u4e3b\u5206\u7247\uff0c \u786e\u4fdd\u6587\u6863\u662f\u6700\u65b0\u7248\u672c\u3002 <\/p>\n<\/li>\n<\/ul>\n<h3>7.11 \u5982\u4f55\u76d1\u63a7 Elasticsearch \u96c6\u7fa4\u72b6\u6001\uff1f<\/h3>\n<p>elasticsearch-head \u63d2\u4ef6 <\/p>\n<p>\u901a\u8fc7 Kibana \u76d1\u63a7 Elasticsearch\u3002\u4f60\u53ef\u4ee5\u5b9e\u65f6\u67e5\u770b\u4f60\u7684\u96c6\u7fa4\u5065\u5eb7\u72b6\u6001\u548c\u6027\u80fd\uff0c\u4e5f\u53ef\u4ee5\u5206\u6790\u8fc7\u53bb\u7684\u96c6\u7fa4\u3001 \u7d22\u5f15\u548c\u8282\u70b9\u6307\u6807 <\/p>\n<h3>7.12 \u662f\u5426\u4e86\u89e3\u5b57\u5178\u6811\uff1f<\/h3>\n<ul>\n<li>\u5e38\u7528\u5b57\u5178\u6570\u636e\u7ed3\u6784\u5982\u4e0b\u6240\u793a: <\/li>\n<\/ul>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220526104045684.png'><img class=\"lazyload lazyload-style-11\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/raw.githubusercontent.com\/fangyishui\/interview\/master\/Elasticsearch\/images\/Elasticsearch\/image-20220526104045684.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20220526104045684\" \/><\/div><\/p>\n<p>\u5b57\u5178\u6811\u53c8\u79f0\u5355\u8bcd\u67e5\u627e\u6811\uff0cTrie \u6811\uff0c\u662f\u4e00\u79cd\u6811\u5f62\u7ed3\u6784\uff0c\u662f\u4e00\u79cd\u54c8\u5e0c\u6811\u7684\u53d8\u79cd\u3002\u5178\u578b\u5e94\u7528\u662f\u7528\u4e8e\u7edf\u8ba1\uff0c\u6392 \u5e8f\u548c\u4fdd\u5b58\u5927\u91cf\u7684\u5b57\u7b26\u4e32\uff08\u4f46\u4e0d\u4ec5\u9650\u4e8e\u5b57\u7b26\u4e32\uff09\uff0c\u6240\u4ee5\u7ecf\u5e38\u88ab\u641c\u7d22\u5f15\u64ce\u7cfb\u7edf\u7528\u4e8e\u6587\u672c\u8bcd\u9891\u7edf\u8ba1\u3002\u5b83\u7684\u4f18\u70b9\u662f\uff1a \u5229\u7528\u5b57\u7b26\u4e32\u7684\u516c\u5171\u524d\u7f00\u6765\u51cf\u5c11\u67e5\u8be2\u65f6\u95f4\uff0c\u6700\u5927\u9650\u5ea6\u5730\u51cf\u5c11\u65e0\u8c13\u7684\u5b57\u7b26\u4e32\u6bd4\u8f83\uff0c\u67e5\u8be2\u6548\u7387\u6bd4\u54c8\u5e0c\u6811\u9ad8\u3002 <\/p>\n<ul>\n<li>Trie \u7684\u6838\u5fc3\u601d\u60f3\u662f\u7a7a\u95f4\u6362\u65f6\u95f4\uff0c\u5229\u7528\u5b57\u7b26\u4e32\u7684\u516c\u5171\u524d\u7f00\u6765\u964d\u4f4e\u67e5\u8be2\u65f6\u95f4\u7684\u5f00\u9500\u4ee5\u8fbe\u5230\u63d0\u9ad8\u6548\u7387\u7684\u76ee\u7684\u3002 \u5b83\u6709 3 \u4e2a\u57fa\u672c\u6027\u8d28:\n<ul>\n<li>\u6839\u8282\u70b9\u4e0d\u5305\u542b\u5b57\u7b26\uff0c\u9664\u6839\u8282\u70b9\u5916\u6bcf\u4e00\u4e2a\u8282\u70b9\u90fd\u53ea\u5305\u542b\u4e00\u4e2a\u5b57\u7b26\u3002 <\/li>\n<li>\u4ece\u6839\u8282\u70b9\u5230\u67d0\u4e00\u8282\u70b9\uff0c\u8def\u5f84\u4e0a\u7ecf\u8fc7\u7684\u5b57\u7b26\u8fde\u63a5\u8d77\u6765\uff0c\u4e3a\u8be5\u8282\u70b9\u5bf9\u5e94\u7684\u5b57\u7b26\u4e32\u3002 <\/li>\n<li>\u6bcf\u4e2a\u8282\u70b9\u7684\u6240\u6709\u5b50\u8282\u70b9\u5305\u542b\u7684\u5b57\u7b26\u90fd\u4e0d\u76f8\u540c\u3002 <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u5bf9\u4e8e\u4e2d\u6587\u7684\u5b57\u5178\u6811\uff0c\u6bcf\u4e2a\u8282\u70b9\u7684\u5b50\u8282\u70b9\u7528\u4e00\u4e2a\u54c8\u5e0c\u8868\u5b58\u50a8\uff0c\u8fd9\u6837\u5c31\u4e0d\u7528\u6d6a\u8d39\u592a\u5927\u7684\u7a7a\u95f4\uff0c\u800c\u4e14\u67e5\u8be2\u901f\u5ea6\u4e0a \u53ef\u4ee5\u4fdd\u7559\u54c8\u5e0c\u7684\u590d\u6742\u5ea6 O(1)\u3002 <\/p>\n<h3>7.13 Elasticsearch \u4e2d\u7684\u96c6\u7fa4\u3001\u8282\u70b9\u3001\u7d22\u5f15\u3001\u6587\u6863\u3001\u7c7b\u578b\u662f\u4ec0\u4e48\uff1f<\/h3>\n<ul>\n<li>\n<p>\u96c6\u7fa4\u662f\u4e00\u4e2a\u6216\u591a\u4e2a\u8282\u70b9\uff08\u670d\u52a1\u5668\uff09\u7684\u96c6\u5408\uff0c\u5b83\u4eec\u5171\u540c\u4fdd\u5b58\u60a8\u7684\u6574\u4e2a\u6570\u636e\uff0c\u5e76\u63d0\u4f9b\u8de8\u6240\u6709\u8282\u70b9\u7684\u8054\u5408\u7d22 \u5f15\u548c\u641c\u7d22\u529f\u80fd\u3002\u7fa4\u96c6\u7531\u552f\u4e00\u540d\u79f0\u6807\u8bc6\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4e3a\u201celasticsearch\u201d\u3002\u6b64\u540d\u79f0\u5f88\u91cd\u8981\uff0c\u56e0\u4e3a\u5982\u679c\u8282\u70b9\u8bbe \u7f6e\u4e3a\u6309\u540d\u79f0\u52a0\u5165\u7fa4\u96c6\uff0c\u5219\u8be5\u8282\u70b9\u53ea\u80fd\u662f\u7fa4\u96c6\u7684\u4e00\u90e8\u5206\u3002 <\/p>\n<\/li>\n<li>\n<p>\u8282\u70b9\u662f\u5c5e\u4e8e\u96c6\u7fa4\u4e00\u90e8\u5206\u7684\u5355\u4e2a\u670d\u52a1\u5668\u3002\u5b83\u5b58\u50a8\u6570\u636e\u5e76\u53c2\u4e0e\u7fa4\u96c6\u7d22\u5f15\u548c\u641c\u7d22\u529f\u80fd\u3002 <\/p>\n<\/li>\n<li>\n<p>\u7d22\u5f15\u5c31\u50cf\u5173\u7cfb\u6570\u636e\u5e93\u4e2d\u7684\u201c\u6570\u636e\u5e93\u201d\u3002\u5b83\u6709\u4e00\u4e2a\u5b9a\u4e49\u591a\u79cd\u7c7b\u578b\u7684\u6620\u5c04\u3002\u7d22\u5f15\u662f\u903b\u8f91\u540d\u79f0\u7a7a\u95f4\uff0c\u6620\u5c04\u5230\u4e00 \u4e2a\u6216\u591a\u4e2a\u4e3b\u5206\u7247\uff0c\u5e76\u4e14\u53ef\u4ee5\u6709\u96f6\u4e2a\u6216\u591a\u4e2a\u526f\u672c\u5206\u7247\u3002 MySQL =&gt;\u6570\u636e\u5e93 Elasticsearch =&gt;\u7d22\u5f15 <\/p>\n<\/li>\n<li>\n<p>\u6587\u6863\u7c7b\u4f3c\u4e8e\u5173\u7cfb\u6570\u636e\u5e93\u4e2d\u7684\u4e00\u884c\u3002\u4e0d\u540c\u4e4b\u5904\u5728\u4e8e\u7d22\u5f15\u4e2d\u7684\u6bcf\u4e2a\u6587\u6863\u53ef\u4ee5\u5177\u6709\u4e0d\u540c\u7684\u7ed3\u6784\uff08\u5b57\u6bb5\uff09\uff0c\u4f46 \u662f\u5bf9\u4e8e\u901a\u7528\u5b57\u6bb5\u5e94\u8be5\u5177\u6709\u76f8\u540c\u7684\u6570\u636e\u7c7b\u578b\u3002 MySQL =&gt; Databases =&gt; Tables =&gt; Columns \/ Rows Elasticsearch =&gt; Indices =&gt; Types =&gt;\u5177\u6709\u5c5e\u6027\u7684\u6587\u6863 <\/p>\n<\/li>\n<li>\n<p>\u7c7b\u578b\u662f\u7d22\u5f15\u7684\u903b\u8f91\u7c7b\u522b\/\u5206\u533a\uff0c\u5176\u8bed\u4e49\u5b8c\u5168\u53d6\u51b3\u4e8e\u7528\u6237\u3002 <\/p>\n<\/li>\n<\/ul>\n<h3>7.14 Elasticsearch \u4e2d\u7684\u5012\u6392\u7d22\u5f15\u662f\u4ec0\u4e48\uff1f<\/h3>\n<p>\u200b   \u5012\u6392\u7d22\u5f15\u662f\u641c\u7d22\u5f15\u64ce\u7684\u6838\u5fc3\u3002\u641c\u7d22\u5f15\u64ce\u7684\u4e3b\u8981\u76ee\u6807\u662f\u5728\u67e5\u627e\u53d1\u751f\u641c\u7d22\u6761\u4ef6\u7684\u6587\u6863\u65f6\u63d0\u4f9b\u5feb\u901f\u641c\u7d22\u3002ES \u4e2d\u7684\u5012\u6392\u7d22\u5f15\u5176\u5b9e\u5c31\u662f lucene \u7684\u5012\u6392\u7d22\u5f15\uff0c\u533a\u522b\u4e8e\u4f20\u7edf\u7684\u6b63\u5411\u7d22\u5f15\uff0c\u5012\u6392\u7d22\u5f15\u4f1a\u518d\u5b58\u50a8\u6570\u636e\u65f6\u5c06\u5173\u952e\u8bcd\u548c \u6570\u636e\u8fdb\u884c\u5173\u8054\uff0c\u4fdd\u5b58\u5230\u5012\u6392\u8868\u4e2d\uff0c\u7136\u540e\u67e5\u8be2\u65f6\uff0c\u5c06\u67e5\u8be2\u5185\u5bb9\u8fdb\u884c\u5206\u8bcd\u540e\u5728\u5012\u6392\u8868\u4e2d\u8fdb\u884c\u67e5\u8be2\uff0c\u6700\u540e\u5339\u914d\u6570 \u636e\u5373\u53ef\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c1\u7ae0 Elasticsearch\u6982\u8ff0 1.1 Elasticsearch \u662f\u4ec0\u4e48 \u200b The Elastic [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[133],"tags":[33],"class_list":["post-600","post","type-post","status-publish","format-standard","hentry","category-dev-tools","tag-elasticsearch"],"_links":{"self":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts\/600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=600"}],"version-history":[{"count":1,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts\/600\/revisions"}],"predecessor-version":[{"id":2013,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts\/600\/revisions\/2013"}],"wp:attachment":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}