±à¼ÍƼö: |
±¾ÎÄ´ÓÈçϼ¸¸ö·½Ãæ·Ö±ð½éÉÜ£¬°üº¬£º
Ó²¼þÑ¡Ôñ¡¢ÄÚ²¿Ñ¹Ëõ ¡¢·ÖƬ²ßÂÔ¡¢Ë÷ÒýÓÅ»¯¡¢²éѯЧÂÊ¡¢ESµÄÄÚ´æÉèÖᢵ÷ÕûJVMÉèÖõÈÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÄ»ÎÞÑ©´úÂ벩¿Í£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
Ó²¼þÑ¡Ôñ
Elasticsearch£¨ºóÎļò³Æ ES£©µÄ»ù´¡ÊÇ Lucene£¬ËùÓеÄË÷ÒýºÍÎĵµÊý¾ÝÊÇ´æ´¢ÔÚ±¾µØµÄ´ÅÅÌÖУ¬¾ßÌåµÄ·¾¶¿ÉÔÚ
ES µÄÅäÖÃÎļþ../config/elasticsearch.ymlÖÐÅäÖã¬ÈçÏ£º
# Path to directory
where to store the data (separate multiple locations
by comma):
#
path.data: /path/to/data
#
# Path to log files:
#
path.logs: /path/to/logs |
´ÅÅÌÉæ¼°µ½ IO µÄ¶ÁдËÙ¶ÈÎÊÌ⣬Òò´ËÈç¹ûÌõ¼þÔÊÐíµÄÌõ¼þÏ£¬¾¡¿ÉÄÜʹÓÃ
SSD Ó²ÅÌºÍ ¸ßÅäÖÃµÄ CPU¡£IOµÄÌáÉý£¬»á¼«´ó¸Ä½ø ES µÄËٶȺÍÐÔÄÜ¡£
´ÅÅ̱¸·Ý²ÉÓà RAID0¡£ÒòΪ Elasticsearch ÔÚ×ÔÉí²ãÃæÍ¨¹ý¸±±¾£¬ÒѾÌṩÁ˱¸·ÝµÄ¹¦ÄÜ£¬ËùÒÔ²»ÐèÒªÀûÓôÅÅ̵ı¸·Ý¹¦ÄÜ£¬µ«ÊÇÈç¹ûͬʱʹÓôÅÅ̱¸·Ý¹¦Äܵϰ£¬¶ÔдÈëËÙ¶ÈÓнϴóµÄÌáÉý¡£
ÄÚ²¿Ñ¹Ëõ
Ó²¼þ×ÊÔ´±È½Ï°º¹ó£¬Ò»°ã²»»á»¨´ó³É±¾È¥¹ºÖÃÕâЩ£¬¿É¿ØµÄ½â¾ö·½°¸»¹ÊÇÐèÒª´ÓÈí¼þ·½ÃæÀ´ÊµÏÖÐÔÄÜÓÅ»¯ÌáÉý¡£
Æäʵ£¬¶ÔÓÚÒ»¸ö·Ö²¼Ê½¡¢¿ÉÀ©Õ¹¡¢Ö§³ÖPB¼¶±ðÊý¾Ý¡¢ÊµÊ±µÄËÑË÷ÓëÊý¾Ý·ÖÎöÒýÇæ£¬ES ±¾Éí¶ÔÓÚË÷ÒýÊý¾ÝºÍÎĵµÊý¾ÝµÄ´æ´¢·½ÃæÄÚ²¿×öÁ˺ܶàÓÅ»¯£¬¾ßÌåÌåÏÖÔÚ¶ÔÊý¾ÝµÄѹËõ£¬ÄÇôÊÇÈçºÎѹËõµÄÄØ£¿½éÉÜǰÏÈҪ˵Ã÷ÏÂ
Postings lists µÄ¸ÅÄî¡£
Postings lists
ËÑË÷ÒýÇæÒ»ÏîºÜÖØÒªµÄ¹¤×÷¾ÍÊǸßЧµÄѹËõºÍ¿ìËٵĽâѹËõһϵÁÐÓÐÐòµÄÕûÊýÁÐ±í¡£ÎÒÃǶ¼ÖªµÀ£¬Elasticsearch
»ùÓÚ Lucene£¬Ò»¸ö Lucene Ë÷Òý ÎÒÃÇÔÚ Elasticsearch ³Æ×÷ ·ÖƬ £¬ Õâ¸ö
java ¿âÒýÈëÁË °´¶ÎËÑË÷ µÄ¸ÅÄеÄÎĵµÊ×Ïȱ»Ìí¼Óµ½ÄÚ´æË÷Òý»º´æÖУ¬È»ºóдÈëµ½Ò»¸ö»ùÓÚ´ÅÅ̵ĶΡ£ÔÚÿ¸ö
segment ÄÚÎĵµ¶¼»áÓÐÒ»¸ö 0 µ½Îĵµ¸öÊýÖ®¼äµÄ±êʶ·û£¨×î¸ßÖµ 2^31 -1£©£¬³ÆÖ®Îª doc
ID¡£ÕâÔÚ¸ÅÄîÉÏÀàËÆÓÚÊý×éÖеÄË÷Òý£ºËü±¾Éí²»×ö´æ´¢£¬µ«×ãÒÔʶ±ðÿ¸öitem Êý¾Ý¡£
Segments °´Ë³Ðò´æ´¢ÓйØÎĵµµÄÊý¾Ý£¬ÔÚÒ»¸öSegments ÖÐ doc ID ÊÇ ÎĵµµÄË÷Òý¡£Òò´Ë£¬segment
ÖеĵÚÒ»¸öÎĵµµÄ doc ID Ϊ0£¬µÚ¶þ¸öΪ1£¬µÈµÈ£¬Ö±µ½×îºóÒ»¸öÎĵµ£¬Æä doc ID µÈÓÚ segment
ÖÐÎĵµµÄ×ÜÊý¼õ1¡£
ÄÇôÕâЩ doc ID ÓÐʲôÓÃÄØ£¿µ¹ÅÅË÷ÒýÐèÒª½« terms Ó³Éäµ½°üº¬¸Ãµ¥´Ê £¨term£© µÄÎĵµÁÐ±í£¬ÕâÑùµÄÓ³ÉäÁбíÎÒÃdzÆÖ®Îª£ºµ¹ÅÅÁÐ±í£¨postings
list£©¡£¾ßÌåijһÌõÓ³ÉäÊý¾Ý³ÆÖ®Îª£ºµ¹ÅÅË÷ÒýÏPosting£©¡£
¾Ù¸öÀý×Ó£¬ÎĵµºÍ´ÊÌõÖ®¼äµÄ¹ØÏµÈçÏÂͼËùʾ£¬ÓұߵĹØÏµ±í¼´Îªµ¹ÅÅÁÐ±í£º

µ¹ÅÅÁбí ÓÃÀ´¼Ç¼ÓÐÄÄЩÎĵµ°üº¬ÁËij¸öµ¥´Ê£¨Term£©¡£Ò»°ãÔÚÎĵµ¼¯ºÏÀï»áÓкܶàÎĵµ°üº¬Ä³¸öµ¥´Ê£¬Ã¿¸öÎĵµ»á¼Ç¼Îĵµ±àºÅ£¨doc
ID£©£¬µ¥´ÊÔÚÕâ¸öÎĵµÖгöÏֵĴÎÊý£¨TF£©¼°µ¥´ÊÔÚÎĵµÖÐÄÄЩλÖóöÏÖ¹ýµÈÐÅÏ¢£¬ÕâÑùÓëÒ»¸öÎĵµÏà¹ØµÄÐÅÏ¢±»³Æ×ö
µ¹ÅÅË÷ÒýÏPosting£©£¬°üº¬Õâ¸öµ¥´ÊµÄһϵÁе¹ÅÅË÷ÒýÏîÐγÉÁËÁбí½á¹¹£¬Õâ¾ÍÊÇij¸öµ¥´Ê¶ÔÓ¦µÄ µ¹ÅÅÁбí
Frame Of Reference
Á˽âÁË·Ö´Ê£¨Term£©ºÍÎĵµ£¨Document£©Ö®¼äµÄÓ³Éä¹ØÏµºó£¬ÎªÁ˸ßЧµÄ¼ÆËã½»¼¯ºÍ²¢¼¯£¬ÎÒÃÇÐèÒªµ¹ÅÅÁÐ±í£¨postings
lists£©ÊÇÓÐÐòµÄ£¬ÕâÑù·½±ãÎÒÃÇѹËõºÍ½âѹËõ¡£
Õë¶Ôµ¹ÅÅÁÐ±í£¬Lucene ²ÉÓÃÒ»ÖÖÔöÁ¿±àÂëµÄ·½Ê½½«Ò»ÏµÁÐ ID ½øÐÐѹËõ´æ´¢£¬¼´³ÆÎªFrame
Of ReferenceµÄѹËõ·½Ê½£¨FOR£©£¬×ÔLucene 4.1ÒÔÀ´Ò»Ö±ÔÚʹÓá£
ÔÚʵ¼ÊµÄËÑË÷ÒýÇæÏµÍ³ÖУ¬²¢²»´æ´¢µ¹ÅÅË÷ÒýÏîÖеÄʵ¼ÊÎĵµ±àºÅ£¨Doc ID£©£¬¶øÊÇ´úÖ®ÒÔÎĵµ±àºÅ²îÖµ£¨D-Gap£©¡£Îĵµ±àºÅ²îÖµÊǵ¹ÅÅÁбíÖÐÏàÁÚµÄÁ½¸öµ¹ÅÅË÷ÒýÏîÎĵµ±àºÅµÄ²îÖµ£¬Ò»°ãÔÚË÷Òý¹¹½¨¹ý³ÌÖУ¬¿ÉÒÔ±£Ö¤µ¹ÅÅÁбíÖкóÃæ³öÏÖµÄÎĵµ±àºÅ´óÓÚ֮ǰ³öÏÖµÄÎĵµ±àºÅ£¬ËùÒÔÎĵµ±àºÅ²îÖµ×ÜÊÇ´óÓÚ0µÄÕûÊý¡£Èçͼ2ËùʾµÄÀý×ÓÖУ¬ÔʼµÄ
3¸öÎĵµ±àºÅ·Ö±ðÊÇ187¡¢196ºÍ199£¬Í¨¹ý±àºÅ²îÖµ¼ÆË㣬ÔÚʵ¼Ê´æ´¢µÄʱºò¾Íת»¯³ÉÁË£º187¡¢9¡¢3¡£

Ö®ËùÒÔÒª¶ÔÎĵµ±àºÅ½øÐвîÖµ¼ÆË㣬Ö÷ÒªÔÒòÊÇΪÁ˸üºÃµØ¶ÔÊý¾Ý½øÐÐѹËõ£¬ÔʼÎĵµ±àºÅÒ»°ã¶¼ÊÇ´óÊýÖµ£¬Í¨¹ý²îÖµ¼ÆË㣬¾ÍÓÐЧµØ½«´óÊýֵת»»ÎªÁËСÊýÖµ£¬¶øÕâÓÐÖúÓÚÔö¼ÓÊý¾ÝµÄѹËõÂÊ¡£
±ÈÈçÒ»¸ö´Ê¶ÔÓ¦µÄÎĵµID Áбí[73, 300, 302, 332,343, 372] £¬IDÁбíÊ×ÏÈÒª´ÓСµ½´óÅźÃÐò£»
µÚÒ»²½£º ÔöÁ¿±àÂë¾ÍÊÇ´ÓµÚ¶þ¸öÊý¿ªÊ¼Ã¿¸öÊý´æ´¢Óëǰһ¸öidµÄ²îÖµ£¬¼´300-73=227£¬302-300=2£¬...£¬Ò»Ö±µ½×îºóÒ»¸öÊý£»
µÚ¶þ²½£º ¾ÍÊǽ«ÕâЩ²îÖµ·Åµ½²»Í¬µÄÇø¿é£¬LuceneʹÓÃ256¸öÇø¿é£¬ÏÂÃæÊ¾ÀýΪÁË·½±ãչʾʹÓÃÁË3¸öÇø¿é£¬¼´Ã¿3¸öÊýÒ»×飻
µÚÈý²½£º λѹËõ£¬¼ÆËãÿ×é3¸öÊýÖÐ×î´óµÄÄǸöÊýÐèÒªÕ¼ÓÃbitλÊý£¬±ÈÈç30¡¢11¡¢29ÖÐ×î´óÊý30×îСÐèÒª5¸öbitλ´æ´¢£¬ÕâÑù11¡¢29Ò²ÓÃ5¸öbitλ´æ´¢£¬ÕâÑù²ÅÕ¼ÓÃ15¸öbit£¬²»µ½2¸ö×Ö½Ú£¬Ñ¹ËõЧ¹ûºÜºÃ¡£
ÈçÏÂÃæÔÀíͼËùʾ£¬ÕâÊÇÒ»¸öÇø¿é´óСΪ3µÄʾÀý£¨Êµ¼ÊÉÏÊÇ256£©£º

¿¼Âǵ½Æµ·±³öÏÖµÄterm£¨Ëùνlow cardinalityµÄÖµ£©£¬±ÈÈçgenderÀïµÄÄлòÕßÅ®¡£Èç¹ûÓÐ1°ÙÍò¸öÎĵµ£¬ÄÇôÐÔ±ðΪÄеÄ
posting list Àï¾Í»áÓÐ50Íò¸öintÖµ¡£Óà Frame of Reference ±àÂë½øÐÐѹËõ¿ÉÒÔ¼«´ó¼õÉÙ´ÅÅÌÕ¼Óá£Õâ¸öÓÅ»¯¶ÔÓÚ¼õÉÙË÷Òý³ß´çÓзdz£ÖØÒªµÄÒâÒå¡£
ÒòΪÕâ¸ö FOR µÄ±àÂëÊÇÓнâѹËõ³É±¾µÄ¡£ÀûÓÃskip list£¬³ýÁËÌø¹ýÁ˱éÀúµÄ³É±¾£¬Ò²Ìø¹ýÁ˽âѹËõÕâЩѹËõ¹ýµÄblockµÄ¹ý³Ì£¬´Ó¶ø½ÚÊ¡ÁËcpu¡£
Roaring bitmaps
Frame Of Reference ѹËõËã·¨¶ÔÓÚµ¹ÅűíÀ´ËµÐ§¹ûºÜºÃ£¬µ«¶ÔÓÚÐèÒª´æ´¢ÔÚÄÚ´æÖеÄFilter»º´æµÈ²»Ì«ºÏÊÊ£¬Á½ÕßÖ®¼äÓкܶ಻֮ͬ´¦£ºµ¹ÅÅ±í´æ´¢ÔÚ´ÅÅÌ£¬Õë¶Ôÿ¸ö´Ê¶¼ÐèÒª½øÐбàÂ룬¶øFilterµÈÄڴ滺´æÖ»»á´æ´¢ÄÇЩ¾³£Ê¹ÓõÄÊý¾Ý£¬¶øÇÒÕë¶ÔFilterÊý¾ÝµÄ»º´æ¾ÍÊÇΪÁ˼ÓËÙ´¦ÀíЧÂÊ£¬¶ÔѹËõËã·¨ÒªÇó¸ü¸ß£»Õâ¾Í²úÉúÁËÏÂÃæÕë¶ÔÄڴ滺´æÊý¾Ý¿ÉÒÔ½øÐиßЧѹËõ½âѹºÍÂß¼ÔËËãµÄroaring
bitmapsËã·¨¡£
˵µ½Roaring bitmaps£¬¾Í±ØÐëÏÈ´Óbitmap˵Æð¡£BitmapÊÇÒ»ÖÖÊý¾Ý½á¹¹£¬¼ÙÉèÓÐij¸öposting
list£º
¶ÔÓ¦µÄBitmap¾ÍÊÇ£º
·Ç³£Ö±¹Û£¬ÓÃ0/1±íʾij¸öÖµÊÇ·ñ´æÔÚ£¬±ÈÈç8Õâ¸öÖµ¾Í¶ÔÓ¦µÚ8룬¶ÔÓ¦µÄbitÖµÊÇ1£¬ÕâÑùÓÃÒ»¸ö×ֽھͿÉÒÔ´ú±í8¸öÎĵµid£¨1B
= 8bit£©£¬¾É°æ±¾(5.0֮ǰ)µÄLucene¾ÍÊÇÓÃÕâÑùµÄ·½Ê½À´Ñ¹ËõµÄ¡£µ«ÕâÑùµÄѹËõ·½Ê½ÈÔÈ»²»¹»¸ßЧ£¬Bitmap×ÔÉí¾ÍÓÐѹËõµÄÌØµã£¬ÆäÓÃÒ»¸öbyte¾Í¿ÉÒÔ´ú±í8¸öÎĵµ£¬ËùÒÔ100Íò¸öÎĵµÖ»ÐèÒª12.5Íò¸öbyte¡£µ«ÊÇ¿¼Âǵ½Îĵµ¿ÉÄÜÓÐÊýÊ®ÒÚÖ®¶à£¬ÔÚÄÚ´æÀï±£´æBitmapÈÔÈ»ÊǺÜÉݳ޵ÄÊÂÇé¡£¶øÇÒ¶ÔÓÚ¸öÿһ¸öfilter¶¼ÒªÏûºÄÒ»¸öBitmap£¬±ÈÈçage=18»º´æÆðÀ´µÄ»°ÊÇÒ»¸öBitmap£¬18<=age<25ÊÇÁíÍâÒ»¸öfilter»º´æÆðÀ´Ò²ÒªÒ»¸öBitmap¡£
BitmapµÄȱµãÊÇ´æ´¢¿Õ¼äËæ×ÅÎĵµ¸öÊýÏßÐÔÔö³¤£¬ËùÒÔÃØ¾÷¾ÍÔÚÓÚÐèÒªÓÐÒ»¸öÊý¾Ý½á¹¹´òÆÆÕâ¸öħÖ䣬ÄÇô¾ÍÒ»¶¨ÒªÓõ½Ä³Ð©Ö¸ÊýÌØÐÔ£º
¿ÉÒÔºÜѹËõµØ±£´æÉÏÒÚ¸öbit´ú±í¶ÔÓ¦µÄÎĵµÊÇ·ñÆ¥Åäfilter£»
Õâ¸öѹËõµÄBitmapÈÔÈ»¿ÉÒÔºÜ¿ìµØ½øÐÐANDºÍ ORµÄÂß¼²Ù×÷¡£
LuceneʹÓõÄÕâ¸öÊý¾Ý½á¹¹½Ð×ö Roaring Bitmap¡£

ÆäѹËõµÄ˼·ÆäʵºÜ¼òµ¥¡£ÓëÆä±£´æ100¸ö0£¬Õ¼ÓÃ100¸öbit¡£»¹²»Èç±£´æ0Ò»´Î£¬È»ºóÉùÃ÷Õâ¸ö0ÖØ¸´ÁË100±é¡£
ÕâÁ½Öֺϲ¢Ê¹ÓÃË÷ÒýµÄ·½Ê½¶¼ÓÐÆäÓÃ;¡£Elasticsearch ¶ÔÆäÐÔÄÜÓÐÏêϸµÄ¶Ô±È£¬¿ÉÔĶÁ Frame
of Reference and Roaring Bitmaps¡£
·ÖƬ²ßÂÔ
´´½¨Ë÷ÒýµÄʱºò£¬ÎÒÃÇÐèÒªÔ¤·ÖÅä ES ¼¯ÈºµÄ·ÖƬÊýºÍ¸±±¾Êý£¬¼´Ê¹Êǵ¥»úÇé¿öÏ¡£Èç¹ûûÓÐÔÚ mapping
ÎļþÖÐÖ¸¶¨£¬ÄÇôË÷ÒýÔÚĬÈÏÇé¿öÏ»ᱻ·ÖÅä5¸öÖ÷·ÖƬºÍÿ¸öÖ÷·ÖƬµÄ1¸ö¸±±¾¡£
·ÖƬºÍ¸±±¾µÄÉè¼ÆÎª ES ÌṩÁËÖ§³Ö·Ö²¼Ê½ºÍ¹ÊÕÏ×ªÒÆµÄÌØÐÔ£¬µ«²¢²»Òâζ×Å·ÖÆ¬ºÍ¸±±¾ÊÇ¿ÉÒÔÎÞÏÞ·ÖÅäµÄ¡£¶øÇÒË÷ÒýµÄ·ÖƬÍê³É·ÖÅäºóÓÉÓÚË÷ÒýµÄ·ÓÉ»úÖÆ£¬ÎÒÃÇÊDz»ÄÜÖØÐÂÐÞ¸Ä·ÖÆ¬ÊýµÄ¡£ÀýÈçij¸ö´´Òµ¹«Ë¾³õʼÓû§µÄË÷Òý
t_user ·ÖƬÊýΪ2£¬µ«ÊÇËæ×ÅÒµÎñµÄ·¢Õ¹Óû§µÄÊý¾ÝÁ¿Ñ¸ËÙÔö³¤£¬ÕâʱÎÒÃÇÊDz»ÄÜÖØÐ½«Ë÷Òý t_user
µÄ·ÖƬÊýÔö¼ÓΪ3»òÕ߸ü´óµÄÊý¡£
¿ÉÄÜÓÐÈË»á˵£¬ÎÒ²»ÖªµÀÕâ¸öË÷Òý½«À´»á±äµÃ¶à´ó£¬²¢ÇÒ¹ýºóÎÒÒ²²»Äܸü¸ÄË÷ÒýµÄ´óС£¬ËùÒÔΪÁ˱£ÏÕÆð¼û£¬»¹ÊǸøËüÉèΪ
1000 ¸ö·ÖƬ°É¡
Ò»¸ö·ÖƬ²¢²»ÊÇûÓдú¼ÛµÄ¡£ÐèÒªÁ˽⣺
Ò»¸ö·ÖƬµÄµ×²ã¼´ÎªÒ»¸ö Lucene Ë÷Òý£¬»áÏûºÄÒ»¶¨Îļþ¾ä±ú¡¢ÄÚ´æ¡¢ÒÔ¼° CPU ÔËת¡£
ÿһ¸öËÑË÷ÇëÇó¶¼ÐèÒªÃüÖÐË÷ÒýÖеÄÿһ¸ö·ÖƬ£¬Èç¹ûÿһ¸ö·ÖƬ¶¼´¦ÓÚ²»Í¬µÄ½Úµã»¹ºÃ£¬ µ«Èç¹û¶à¸ö·ÖƬ¶¼ÐèÒªÔÚͬһ¸ö½ÚµãÉϾºÕùʹÓÃÏàͬµÄ×ÊÔ´¾ÍÓÐЩÔã¸âÁË¡£
ÓÃÓÚ¼ÆËãÏà¹Ø¶ÈµÄ´ÊÏîͳ¼ÆÐÅÏ¢ÊÇ»ùÓÚ·ÖÆ¬µÄ¡£Èç¹ûÓÐÐí¶à·ÖƬ£¬Ã¿Ò»¸ö¶¼Ö»ÓкÜÉÙµÄÊý¾Ý»áµ¼Öºܵ͵ÄÏà¹Ø¶È¡£
Êʵ±µÄÔ¤·ÖÅäÊǺõġ£µ«ÉÏǧ¸ö·ÖƬ¾ÍÓÐЩÔã¸â¡£ÎÒÃǺÜÄÑÈ¥¶¨Òå·ÖƬÊÇ·ñ¹ý¶àÁË£¬ÕâÈ¡¾öÓÚËüÃǵĴóСÒÔ¼°ÈçºÎȥʹÓÃËüÃÇ¡£
Ò»°Ù¸ö·ÖƬµ«ºÜÉÙʹÓû¹ºÃ£¬Á½¸ö·ÖƬµ«·Ç³£Æµ·±µØÊ¹ÓÃÓпÉÄܾÍÓеã¶àÁË¡£ ¼à¿ØÄãµÄ½Úµã±£Ö¤ËüÃÇÁôÓÐ×ã¹»µÄ¿ÕÏÐ×ÊÔ´À´´¦ÀíÒ»Ð©ÌØÊâÇé¿ö¡£
Ò»¸öÒµÎñË÷Òý¾ßÌåÐèÒª·ÖÅä¶àÉÙ·ÖÆ¬¿ÉÄÜÐèÒª¼Ü¹¹Ê¦ºÍ¼¼ÊõÈËÔ±¶ÔÒµÎñµÄÔö³¤ÓиöÔ¤ÏȵÄÅжϣ¬ºáÏòÀ©Õ¹Ó¦µ±·Ö½×¶Î½øÐС£ÎªÏÂÒ»½×¶Î×¼±¸ºÃ×ã¹»µÄ×ÊÔ´¡£
Ö»Óе±Äã½øÈëµ½ÏÂÒ»¸ö½×¶Î£¬Äã²ÅÓÐʱ¼ä˼¿¼ÐèÒª×÷³öÄÄЩ¸Ä±äÀ´´ïµ½Õâ¸ö½×¶Î¡£
Ò»°ãÀ´Ëµ£¬ÎÒÃÇ×ñÑһЩÔÔò£º
¿ØÖÆÃ¿¸ö·ÖƬռÓõÄÓ²ÅÌÈÝÁ¿²»³¬¹ýESµÄ×î´óJVMµÄ¶Ñ¿Õ¼äÉèÖã¨Ò»°ãÉèÖò»³¬¹ý32G£¬²Î¼ÓÏÂÎĵÄJVMÉèÖÃÔÔò£©£¬Òò´Ë£¬Èç¹ûË÷ÒýµÄ×ÜÈÝÁ¿ÔÚ500G×óÓÒ£¬ÄÇ·ÖÆ¬´óСÔÚ16¸ö×óÓÒ¼´¿É£»µ±È»£¬×îºÃͬʱ¿¼ÂÇÔÔò2¡£
¿¼ÂÇÒ»ÏÂnodeÊýÁ¿£¬Ò»°ãÒ»¸ö½ÚµãÓÐʱºò¾ÍÊÇһ̨ÎïÀí»ú£¬Èç¹û·ÖƬÊý¹ý¶à£¬´ó´ó³¬¹ýÁ˽ڵãÊý£¬ºÜ¿ÉÄܻᵼÖÂÒ»¸ö½ÚµãÉÏ´æÔÚ¶à¸ö·ÖƬ£¬Ò»µ©¸Ã½Úµã¹ÊÕÏ£¬¼´Ê¹±£³ÖÁË1¸öÒÔÉϵĸ±±¾£¬Í¬ÑùÓпÉÄܻᵼÖÂÊý¾Ý¶ªÊ§£¬¼¯ÈºÎÞ·¨»Ö¸´¡£ËùÒÔ£¬
Ò»°ã¶¼ÉèÖÃ·ÖÆ¬Êý²»³¬¹ý½ÚµãÊýµÄ3±¶¡£
Ö÷·ÖƬ£¬¸±±¾ºÍ½Úµã×î´óÊýÖ®¼äÊýÁ¿£¬ÎÒÃÇ·ÖÅäµÄʱºò¿ÉÒԲο¼ÒÔϹØÏµ£º
½ÚµãÊý<=Ö÷·ÖƬÊý*£¨¸±±¾Êý+1£©
´´½¨Ë÷ÒýµÄʱºòÐèÒª¿ØÖÆ·ÖÆ¬·ÖÅäÐÐΪ£¬ºÏÀí·ÖÅä·ÖƬ£¬Èç¹ûºóÆÚË÷ÒýËù¶ÔÓ¦µÄÊý¾ÝÔ½À´Ô½¶à£¬ÎÒÃÇ»¹¿ÉÒÔͨ¹ýË÷Òý±ðÃûµÈÆäËû·½Ê½½â¾ö¡£
ÒÔÉÏÊÇÔÚ´´½¨Ã¿¸öË÷ÒýµÄʱºòÐèÒª¿¼ÂǵÄÓÅ»¯·½·¨£¬È»¶øÔÚË÷ÒýÒÑ´´½¨ºÃµÄǰÌáÏ£¬ÊÇ·ñ¾ÍÊÇûÓа취´Ó·ÖƬµÄ½Ç¶ÈÌá¸ßÁËÐÔÄÜÁËÄØ£¿µ±È»²»ÊÇ£¬Ê×ÏÈÄÜ×öµÄÊǵ÷Õû·ÖƬ·ÖÅäÆ÷µÄÀàÐÍ£¬¾ßÌåÊÇÔÚ
elasticsearch.yml ÖÐÉèÖÃcluster.routing.allocation.type
ÊôÐÔ£¬¹²ÓÐÁ½ÖÖ·ÖÆ¬Æ÷even_shard£¬balanced£¨Ä¬ÈÏ£©¡£
even_shard ÊǾ¡Á¿±£Ö¤Ã¿¸ö½Úµã¶¼¾ßÓÐÏàͬÊýÁ¿µÄ·ÖƬ£¬balanced ÊÇ»ùÓÚ¿É¿ØÖƵÄÈ¨ÖØ½øÐзÖÅ䣬Ïà¶ÔÓÚǰһ¸ö·ÖÅäÆ÷£¬Ëü¸ü±©Â©ÁËһЩ²ÎÊý¶øÒýÈëµ÷Õû·ÖÅä¹ý³ÌµÄÄÜÁ¦¡£
ÿ´ÎESµÄ·ÖƬµ÷Õû¶¼ÊÇÔÚESÉϵÄÊý¾Ý·Ö²¼·¢ÉúÁ˱仯µÄʱºò½øÐеģ¬×îÓдú±íÐԵľÍÊÇÓÐеÄÊý¾Ý½Úµã¼ÓÈëÁ˼¯ÈºµÄʱºò¡£µ±È»µ÷Õû·ÖƬµÄʱ»ú²¢²»ÊÇÓÉij¸öãÐÖµ´¥·¢µÄ£¬ESÄÚÖÃʮһ¸ö²Ã¾öÕßÀ´¾ö¶¨ÊÇ·ñ´¥·¢·ÖƬµ÷Õû£¬ÕâÀïÔݲ»×¸Êö¡£ÁíÍ⣬ÕâЩ·ÖÅ䲿Êð²ßÂÔ¶¼ÊÇ¿ÉÒÔÔÚÔËÐÐʱ¸üÐµģ¬¸ü¶àÅäÖÃ·ÖÆ¬µÄÊôÐÔÒ²Çë´ó¼Ò×ÔÐвéÔÄÍøÉÏ×ÊÁÏ¡£
Ë÷ÒýÓÅ»¯
Mapping½¨Ä£
¾¡Á¿±ÜÃâʹÓÃnested»ò parent/child£¬Äܲ»ÓþͲ»Óã»nested queryÂý£¬ parent/child
query ¸üÂý£¬±Ènested queryÂýÉϰٱ¶£»Òò´ËÄÜÔÚmappingÉè¼Æ½×¶Î¸ã¶¨µÄ£¨´ó¿í±íÉè¼Æ»ò²ÉÓñȽÏsmartµÄÊý¾Ý½á¹¹£©£¬¾Í²»ÒªÓø¸×Ó¹ØÏµµÄmapping¡£
Èç¹ûÒ»¶¨ÒªÊ¹ÓÃnested fields£¬±£Ö¤nested fields×ֶβ»Äܹý¶à£¬Ä¿Ç°ESĬÈÏÏÞÖÆÊÇ50¡£²Î¿¼£º
index.mapping.nested_fields.limit £º50
ÒòΪÕë¶Ô1¸ödocument, ÿһ¸önested field, ¶¼»áÉú³ÉÒ»¸ö¶ÀÁ¢µÄdocument,
Õ⽫ʹDocÊýÁ¿¾çÔö£¬Ó°Ïì²éѯЧÂÊ£¬ÓÈÆäÊÇJOINµÄЧÂÊ¡£
±ÜÃâʹÓö¯Ì¬Öµ×÷×Ö¶Î(key), ¶¯Ì¬µÝÔöµÄmapping£¬»áµ¼Ö¼¯Èº±ÀÀ££»Í¬Ñù£¬Ò²ÐèÒª¿ØÖÆ×ֶεÄÊýÁ¿£¬ÒµÎñÖв»Ê¹ÓõÄ×ֶΣ¬¾Í²»ÒªË÷Òý¡£¿ØÖÆË÷ÒýµÄ×Ö¶ÎÊýÁ¿¡¢mappingÉî¶È¡¢Ë÷Òý×ֶεÄÀàÐÍ£¬¶ÔÓÚESµÄÐÔÄÜÓÅ»¯ÊÇÖØÖÐÖ®ÖØ¡£ÒÔÏÂÊÇES¹ØÓÚ×Ö¶ÎÊý¡¢mappingÉî¶ÈµÄһЩĬÈÏÉèÖãº
index.mapping.nested_objects.limit :10000 index.mapping.total_fields.limit:1000
index.mapping.depth.limit: 20
²»ÐèÒª×öÄ£ºý¼ìË÷µÄ×Ö¶ÎʹÓà keywordÀàÐÍ´úÌæ text ÀàÐÍ¡£
Ë÷ÒýÉèÖÃ
Èç¹ûÄãµÄËÑË÷½á¹û²»ÐèÒª½üʵʱµÄ׼ȷ¶È£¬¿¼ÂǰÑÿ¸öË÷ÒýµÄ index.refresh_interval
¸Äµ½ 30s»òÕ߸ü´ó¡£ Èç¹ûÄãÊÇÔÚ×ö´óÅúÁ¿µ¼È룬ÉèÖà refresh_interval Ϊ-1£¬Í¬Ê±ÉèÖÃnumber_of_replicas
Ϊ0£¬Í¨¹ý¹Ø±Õ refresh ¼ä¸ôÖÜÆÚ£¬Í¬Ê±²»ÉèÖø±±¾À´Ìá¸ßдÐÔÄÜ¡£
ÎĵµÔÚ¸´ÖƵÄʱºò£¬Õû¸öÎĵµÄÚÈݶ¼±»·¢Íù¸±±¾½Úµã£¬È»ºóÖð×ֵİÑË÷Òý¹ý³ÌÖØ¸´Ò»±é¡£ÕâÒâζ×Åÿ¸ö¸±±¾Ò²»áÖ´ÐзÖÎö¡¢Ë÷ÒýÒÔ¼°¿ÉÄܵĺϲ¢¹ý³Ì¡£Ïà·´£¬Èç¹ûÄãµÄË÷ÒýÊÇÁ㸱±¾£¬È»ºóÔÚдÈëÍê³ÉºóÔÙ¿ªÆô¸±±¾£¬»Ö¸´¹ý³Ì±¾ÖÊÉÏÖ»ÊÇÒ»¸ö×Ö½Úµ½×Ö½ÚµÄÍøÂç´«Êä¡£Ïà±ÈÖØ¸´Ë÷Òý¹ý³Ì£¬Õâ¸öËãÊÇÏ൱¸ßЧµÄÁË¡£
ÐÞ¸Ä index_buffer_size µÄÉèÖ㬿ÉÒÔÉèÖóɰٷÖÊý£¬Ò²¿ÉÉèÖóɾßÌåµÄ´óС£¬×î¶à¸ø512M£¬´óÓÚÕâ¸öÖµ»á´¥·¢refresh¡£Ä¬ÈÏÖµÊÇJVMµÄÄÚ´æ10%£¬µ«ÊÇÊÇËùÓÐÇÐÆ¬¹²Ïí´óС¡£¿É¸ù¾Ý¼¯ÈºµÄ¹æÄ£×ö²»Í¬µÄÉèÖòâÊÔ¡£
indices.memory.index_buffer_size£º10%£¨Ä¬ÈÏ£© indices.memory.min_index_buffer_size£º
48mb£¨Ä¬ÈÏ£© indices.memory.max_index_buffer_size
ÐÞ¸Ä translog Ïà¹ØµÄÉèÖãº
a. ¿ØÖÆÊý¾Ý´ÓÄÚ´æµ½Ó²Å̵IJÙ×÷ƵÂÊ£¬ÒÔ¼õÉÙÓ²ÅÌIO¡£¿É½« sync_interval µÄʱ¼äÉèÖôóһЩ¡£
index.translog.sync_interval£º5s(ĬÈÏ)¡£
b. ¿ØÖÆ tranlog Êý¾Ý¿éµÄ´óС£¬´ïµ½ threshold ´óСʱ£¬²Å»á flush µ½ lucene
Ë÷ÒýÎļþ¡£
index.translog.flush_threshold_size£º512mb(ĬÈÏ)
_id×ֶεÄʹÓã¬Ó¦¾¡¿ÉÄܱÜÃâ×Ô¶¨Òå_id, ÒÔ±ÜÃâÕë¶ÔIDµÄ°æ±¾¹ÜÀí£»½¨ÒéʹÓÃESµÄĬÈÏIDÉú³É²ßÂÔ»òʹÓÃÊý×ÖÀàÐÍID×öΪÖ÷¼ü£¬°üÀ¨ÁãÌî³äÐòÁÐ
ID¡¢UUID-1 ºÍÄÉÃ룻ÕâЩ ID ¶¼ÊÇÓÐÒ»Öµģ¬Ñ¹ËõÁ¼ºÃµÄÐòÁÐģʽ¡£Ïà·´µÄ£¬Ïñ UUID-4
ÕâÑùµÄ ID£¬±¾ÖÊÉÏÊÇËæ»úµÄ£¬Ñ¹Ëõ±ÈºÜµÍ£¬»áÃ÷ÏÔÍÏÂý Lucene¡£
_all ×ֶμ°_source ×ֶεÄʹÓã¬Ó¦¸Ã×¢Òⳡ¾°ºÍÐèÒª£¬_all×ֶΰüº¬ÁËËùÓеÄË÷Òý×ֶΣ¬·½±ã×öÈ«ÎļìË÷£¬Èç¹ûÎÞ´ËÐèÇ󣬿ÉÒÔ½ûÓã»_source´æ´¢ÁËÔʼµÄdocumentÄÚÈÝ£¬Èç¹ûûÓлñÈ¡ÔʼÎĵµÊý¾ÝµÄÐèÇ󣬿Éͨ¹ýÉèÖÃincludes¡¢excludes
ÊôÐÔÀ´¶¨Òå·ÅÈë_sourceµÄ×ֶΡ£
ºÏÀíµÄÅäÖÃʹÓÃindexÊôÐÔ£¬analyzed ºÍnot_analyzed£¬¸ù¾ÝÒµÎñÐèÇóÀ´¿ØÖÆ×Ö¶ÎÊÇ·ñ·Ö´Ê»ò²»·Ö´Ê¡£Ö»ÓÐ
groupbyÐèÇóµÄ×ֶΣ¬ÅäÖÃʱ¾ÍÉèÖóÉnot_analyzed, ÒÔÌá¸ß²éѯ»ò¾ÛÀàµÄЧÂÊ¡£
²éѯЧÂÊ
ʹÓÃÅúÁ¿ÇëÇó£¬ÅúÁ¿Ë÷ÒýµÄЧÂʿ϶¨±Èµ¥ÌõË÷ÒýµÄЧÂÊÒª¸ß¡£
query_string »ò multi_match µÄ²éѯ×Ö¶ÎÔ½¶à£¬ ²éѯԽÂý¡£¿ÉÒÔÔÚ mapping
½×¶Î£¬ÀûÓà copy_to ÊôÐÔ½«¶à×ֶεÄÖµË÷Òýµ½Ò»¸öÐÂ×ֶΣ¬multi_matchʱ£¬ÓÃеÄ×ֶβéѯ¡£
ÈÕÆÚ×ֶεIJéѯ£¬ ÓÈÆäÊÇÓÃnow µÄ²éѯʵ¼ÊÉÏÊDz»´æÔÚ»º´æµÄ£¬Òò´Ë£¬ ¿ÉÒÔ´ÓÒµÎñµÄ½Ç¶ÈÀ´¿¼ÂÇÊÇ·ñÒ»¶¨ÒªÓÃnow,
±Ï¾¹ÀûÓà query cache ÊÇÄܹ»´ó´óÌá¸ß²éѯЧÂʵġ£
²éѯ½á¹û¼¯µÄ´óС²»ÄÜËæÒâÉèÖóɴóµÃÀëÆ×µÄÖµ£¬ Èçquery.setSize²»ÄÜÉèÖÃ³É Integer.MAX_VALUE£¬
ÒòΪESÄÚ²¿ÐèÒª½¨Á¢Ò»¸öÊý¾Ý½á¹¹À´·ÅÖ¸¶¨´óСµÄ½á¹û¼¯Êý¾Ý¡£
¾¡Á¿±ÜÃâʹÓà script£¬Íò²»µÃÒÑÐèҪʹÓõϰ£¬Ñ¡Ôñpainless & experssions
ÒýÇæ¡£Ò»µ©Ê¹Óà script ²éѯ£¬Ò»¶¨Òª×¢Òâ¿ØÖÆ·µ»Ø£¬Ç§Íò²»ÒªÓÐËÀÑ»·£¨ÈçÏ´íÎóµÄÀý×Ó£©£¬ÒòΪESûÓнű¾ÔËÐеij¬Ê±¿ØÖÆ£¬Ö»Òªµ±Ç°µÄ½Å±¾Ã»Ö´ÐÐÍ꣬¸Ã²éѯ»áÒ»Ö±×èÈû¡£È磺
{ ¡°script_fields¡±£º{ ¡°test1¡±£º{ ¡°lang¡±£º¡°groovy¡±£¬ ¡°script¡±£º¡°while£¨true£©{print
'don¡¯t use script'}¡± } } }
±ÜÃâ²ã¼¶¹ýÉîµÄ¾ÛºÏ²éѯ£¬ ²ã¼¶¹ýÉîµÄgroup by , »áµ¼ÖÂÄÚ´æ¡¢CPUÏûºÄ£¬½¨ÒéÔÚ·þÎñ²ãͨ¹ý³ÌÐòÀ´×é×°ÒµÎñ£¬Ò²¿ÉÒÔͨ¹ýpipeline
µÄ·½Ê½À´ÓÅ»¯¡£
¸´ÓÃÔ¤Ë÷ÒýÊý¾Ý·½Ê½À´Ìá¸ß AGG ÐÔÄÜ£º
Èçͨ¹ý terms aggregations Ìæ´ú range aggregations£¬ ÈçÒª¸ù¾ÝÄêÁäÀ´·Ö×飬·Ö×éÄ¿±êÊÇ:
ÉÙÄ꣨14ËêÒÔÏ£© ÇàÄ꣨14-28£© ÖÐÄ꣨29-50£© ÀÏÄ꣨51ÒÔÉÏ£©£¬ ¿ÉÒÔÔÚË÷ÒýµÄʱºòÉèÖÃÒ»¸öage_group×ֶΣ¬Ô¤ÏȽ«Êý¾Ý½øÐзÖÀà¡£´Ó¶ø²»Óð´ageÀ´×örange
aggregations, ͨ¹ýage_group×ֶξͿÉÒÔÁË¡£
CacheµÄÉèÖü°Ê¹Óãº
a) QueryCache: ES²éѯµÄʱºò£¬Ê¹ÓÃfilter²éѯ»áʹÓÃquery cache,
Èç¹ûÒµÎñ³¡¾°ÖеĹýÂ˲éѯ±È½Ï¶à£¬½¨Ò齫querycacheÉèÖôóһЩ£¬ÒÔÌá¸ß²éѯËÙ¶È¡£
indices.queries.cache.size£º 10%£¨Ä¬ÈÏ£©£¬//¿ÉÉèÖóɰٷֱȣ¬Ò²¿ÉÉèÖóɾßÌåÖµ£¬Èç256mb¡£
µ±È»Ò²¿ÉÒÔ½ûÓòéѯ»º´æ£¨Ä¬ÈÏÊÇ¿ªÆô£©£¬ ͨ¹ýindex.queries.cache.enabled£ºfalseÉèÖá£
b) FieldDataCache: ÔÚ¾ÛÀà»òÅÅÐòʱ£¬field data cache»áʹÓÃÆµ·±£¬Òò´Ë£¬ÉèÖÃ×Ö¶ÎÊý¾Ý»º´æµÄ´óС£¬ÔÚ¾ÛÀà»òÅÅÐò³¡¾°½Ï¶àµÄÇéÐÎϺÜÓбØÒª£¬¿Éͨ¹ýindices.fielddata.cache.size£º30%
»ò¾ßÌåÖµ10GBÀ´ÉèÖᣵ«ÊÇÈç¹û³¡¾°»òÊý¾Ý±ä¸ü±È½ÏƵ·±£¬ÉèÖÃcache²¢²»ÊǺõÄ×ö·¨£¬ÒòΪ»º´æ¼ÓÔØµÄ¿ªÏúÒ²ÊÇÌØ±ð´óµÄ¡£
c) ShardRequestCache: ²éѯÇëÇ󷢯ðºó£¬Ã¿¸ö·ÖƬ»á½«½á¹û·µ»Ø¸øÐµ÷½Úµã(Coordinating
Node), ÓÉе÷½Úµã½«½á¹ûÕûºÏ¡£
Èç¹ûÓÐÐèÇ󣬿ÉÒÔÉèÖÿªÆô; ͨ¹ýÉèÖÃindex.requests.cache.enable: trueÀ´¿ªÆô¡£
²»¹ý£¬shard request cache Ö»»º´æ hits.total, aggregations,
suggestions ÀàÐ͵ÄÊý¾Ý£¬²¢²»»á»º´æhitsµÄÄÚÈÝ¡£Ò²¿ÉÒÔͨ¹ýÉèÖÃindices.requests.cache.size:
1%£¨Ä¬ÈÏ£©À´¿ØÖÆ»º´æ¿Õ¼ä´óС¡£
ESµÄÄÚ´æÉèÖÃ
ÓÉÓÚES¹¹½¨»ùÓÚlucene, ¶øluceneÉè¼ÆÇ¿´óÖ®´¦ÔÚÓÚluceneÄܹ»ºÜºÃµÄÀûÓòÙ×÷ϵͳÄÚ´æÀ´»º´æË÷ÒýÊý¾Ý£¬ÒÔÌṩ¿ìËٵIJéѯÐÔÄÜ¡£luceneµÄË÷ÒýÎļþsegementsÊÇ´æ´¢ÔÚµ¥ÎļþÖе쬲¢ÇÒ²»¿É±ä£¬¶ÔÓÚOSÀ´Ëµ£¬Äܹ»ºÜÓѺõؽ«Ë÷ÒýÎļþ±£³ÖÔÚcacheÖУ¬ÒÔ±ã¿ìËÙ·ÃÎÊ£»Òò´Ë£¬ÎÒÃǺÜÓбØÒª½«Ò»°ëµÄÎïÀíÄÚ´æÁô¸ølucene
; ÁíÒ»°ëµÄÎïÀíÄÚ´æÁô¸øES£¨JVM heap )¡£ËùÒÔ£¬ ÔÚESÄÚ´æÉèÖ÷½Ã棬¿ÉÒÔ×ñÑÒÔÏÂÔÔò£º
µ±»úÆ÷ÄÚ´æÐ¡ÓÚ64Gʱ£¬×ñÑͨÓõÄÔÔò£¬50%¸øES£¬50%Áô¸ølucene¡£
µ±»úÆ÷ÄÚ´æ´óÓÚ64Gʱ£¬×ñÑÒÔÏÂÔÔò£º
a. Èç¹ûÖ÷ÒªµÄʹÓó¡¾°ÊÇÈ«ÎļìË÷, ÄÇô½¨Ò鏸ES Heap·ÖÅä 4~32GµÄÄÚ´æ¼´¿É£»ÆäËüÄÚ´æÁô¸ø²Ù×÷ϵͳ,
¹©luceneʹÓã¨segments cache), ÒÔÌṩ¸ü¿ìµÄ²éѯÐÔÄÜ¡£
b. Èç¹ûÖ÷ÒªµÄʹÓó¡¾°ÊǾۺϻòÅÅÐò£¬ ²¢ÇÒ´ó¶àÊýÊÇnumerics, dates, geo_points
ÒÔ¼°not_analyzedµÄ×Ö·ûÀàÐÍ£¬ ½¨Òé·ÖÅ䏸ES Heap·ÖÅä 4~32GµÄÄÚ´æ¼´¿É£¬ÆäËüÄÚ´æÁô¸ø²Ù×÷ϵͳ£¬¹©luceneʹÓÃ(doc
values cache)£¬Ìṩ¿ìËٵĻùÓÚÎĵµµÄ¾ÛÀà¡¢ÅÅÐòÐÔÄÜ¡£
c. Èç¹ûʹÓó¡¾°ÊǾۺϻòÅÅÐò£¬²¢ÇÒ¶¼ÊÇ»ùÓÚanalyzed ×Ö·ûÊý¾Ý£¬ÕâʱÐèÒª¸ü¶àµÄ heap size,
½¨Òé»úÆ÷ÉÏÔËÐжàESʵÀý£¬Ã¿¸öʵÀý±£³Ö²»³¬¹ý50%µÄES heapÉèÖÃ(µ«²»³¬¹ý32G£¬¶ÑÄÚ´æÉèÖÃ32GÒÔÏÂʱ£¬JVMʹÓöÔÏóÖ¸±êѹËõ¼¼ÇɽÚÊ¡¿Õ¼ä)£¬50%ÒÔÉÏÁô¸ølucene¡£
½ûÖ¹swap£¬Ò»µ©ÔÊÐíÄÚ´æÓë´ÅÅ̵Ľ»»»£¬»áÒýÆðÖÂÃüµÄÐÔÄÜÎÊÌâ¡£ ͨ¹ý£º ÔÚelasticsearch.yml
ÖÐ bootstrap.memory_lock: true£¬ ÒÔ±£³ÖJVMËø¶¨Äڴ棬±£Ö¤ESµÄÐÔÄÜ¡£
µ÷ÕûJVMÉèÖÃ
ES ÊÇÔÚ lucene µÄ»ù´¡ÉϽøÐÐÑз¢µÄ£¬Òþ²ØÁË lucene µÄ¸´ÔÓÐÔ£¬Ìṩ¼òµ¥Ò×ÓÃµÄ RESTful
Api½Ó¿Ú¡£ES µÄ·ÖƬÏ൱ÓÚ lucene µÄË÷Òý¡£ÓÉÓÚ lucene ÊÇ Java ÓïÑÔ¿ª·¢µÄ£¬ÊÇ
Java ÓïÑÔ¾ÍÉæ¼°µ½ JVM£¬ËùÒÔ ES ´æÔÚ JVMµÄµ÷ÓÅÎÊÌâ¡£
µ÷ÕûÄÚ´æ´óС¡£µ±Æµ·±³öÏÖfull gcºó¿¼ÂÇÔö¼ÓÄÚ´æ´óС£¬µ«ÊǶÑÄÚ´æºÍ¶ÑÍâÄÚ´æ²»Òª³¬¹ý32G¡£
µ÷ÕûдÈëµÄÏß³ÌÊýºÍ¶ÓÁдóС¡£²»¹ýÏß³ÌÊý×î´ó²»Äܳ¬¹ý33¸ö£¨es¿ØÖÆËÀ£©¡£
ES·Ç³£ÒÀÀµÎļþϵͳ»º´æ£¬ÒÔ±ã¿ìËÙËÑË÷¡£Ò»°ãÀ´Ëµ£¬Ó¦¸ÃÖÁÉÙÈ·±£ÎïÀíÉÏÓÐÒ»°ëµÄ¿ÉÓÃÄÚ´æ·ÖÅäµ½Îļþϵͳ»º´æ¡£
GCÉèÖÃÔÔò£º
a. ±£³ÖGCµÄÏÖÓÐÉèÖã¬Ä¬ÈÏÉèÖÃΪ£ºConcurrent-Mark and Sweep (CMS)£¬±ð»»³ÉG1GC£¬ÒòΪĿǰG1»¹ÓкܶàBUG¡£
b. ±£³ÖÏ̳߳صÄÏÖÓÐÉèÖã¬Ä¿Ç°ESµÄÏ̳߳ؽÏ1.XÓÐÁ˽϶àÓÅ»¯ÉèÖ㬱£³ÖÏÖ×´¼´¿É£»Ä¬ÈÏÏ̳߳شóСµÈÓÚCPUºËÐÄÊý¡£Èç¹ûÒ»¶¨Òª¸Ä£¬°´¹«Ê½£¨£¨CPUºËÐÄÊý*
3£©/ 2£©+ 1ÉèÖ㻲»Äܳ¬¹ýCPUºËÐÄÊýµÄ2±¶£»µ«ÊDz»½¨ÒéÐÞ¸ÄĬÈÏÅäÖ㬷ñÔò»á¶ÔCPUÔì³ÉÓ²ÉË¡£ |