Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
SolrÓÅ»¯°¸Àý·ÖÎö
 
  4824  次浏览      27
 2018-2-8
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª´ÓSolrϵͳ²ãÃæºÍË÷Òý×Ö¶ÎÓÅ»¯Á½¸ö·½Ãæ½øÐÐÓÅ»¯ÒÔ¼°Õ¹¿ªÒ»Ïµİ¸Àý·ÖÎö¡£

Ëæ×Åumc½ÓÈëÖ÷»úµÄÊýÁ¿Ô½À´Ô½¶à£¬Ã¿Ìì²úÉúµÄsyslogÈÕÖ¾ÊýÁ¿Ò²ÔÚ¾çÔö£¬ ֮ǰһÌì²úÉúsyslogÊýÁ¿²Å²»µ½1W£¬Ëæ×ÅÕû¸ö¼¯ÍŵÄÍøÂçÉ豸²»¶Ë½ÓÈ룬µ¼ÖÂÏÖÔÚÿÌì²úÉúµÄsyslogÊýÁ¿´ó¸Å180w×óÓÒ£¬¶øÕâЩsyslog¶ÔÍøÂçºÍPEͬѧÅŲéÏßÉÏÍøÂçÉ豸ÎÊÌâÓÖÊÇÊ®·ÖÖØÒªµÄ£¬ËûÃǵÄÒªÇóÊÇ¿ÉÒÔÌṩ²éѯ×î½ü3¸öÔµÄsyslog£¬ ±£´æÒ»ÄêµÄsyslog£¬ÔÚ7Ô·ݵÄʱºò£¬Õë¶ÔÁ¿²»¶àµÄÇé¿ö£¬Õë¶Ômysqlµ¥±í×öÁËË÷Òý£¬ºóÀ´ÓÖ×öÁ˵¥±í±¸·Ý£¬µ«ÊDzéѯµÄËÙ¶È»¹ÊÇÎÞ·¨ÈÃÈ˽ÓÊÜ£¬ºóÃæÓÖ½áºÏÒ³ÃæÕë¶Ômysqlcount(*)Óï¾ä×öÁËÓÅ»¯£º ʹÓÃcount(*)Óï¾äÖ»ÊÇÔÚµÚÒ»´Î²éѯµÄʱºò²éѯһ´Î£¬ºóÃæ±£´æÏÂÀ´£¬ÔÚºóÃæ·ÖÒ³²éѯµÄʱºò£¬²»ÔÙÐèÒªÔÙ²éѯ×ÜÊýÁ¿£¬¼´²»µ÷ÓÃcount(*)Ö®ÀàµÄsqlÓï¾ä£¬½á¹ûÔÚ·­Ò³Ê±£¬ËÙ¶È»¹ÊDZȽϿ죬µ«Ê״βéѯµÄʱºò£¬»¹ÊǷdz£·Ç³£Âý£¬µ«Õâ±Ï¾¹Ö»ÊÇÒ»¸öÁÙʱµÄ½â¾ö·½°¸£»ºóÃæ½áºÏsyslogËÑË÷µÄÒµÎñÇé¿ö£¬½áºÏ¸÷ÖÖ¼¼Êõ²Î¿¼£¬×îÖÕÑ¡ÔñÁËʹÓÃSolrËÑË÷ÒýÇæÀ´½â¾ösyslog²éÕÒÂýµÄÎÊÌ⣻

ÔÚ×öѹÁ¦²âÊÔµÄʱºò£¬·¢ÏÖÐÔÄÜÎÊÌ⣺ÔÚÊý¾ÝÁ¿²»´ó(<1000W)µÄʱºò£¬ÓÃSolrËÑË÷ÊDZȽϿ죬µ«Ëæ×Å×Å

syslogÊý¾ÝÁ¿µÄ²»¶ÏÔö¶à£¬Ð´Ë÷ÒýºÍËÑË÷µÄËÙ¶ÈÔ½À´Ô½²»ÄÜÈÃÈ˽ÓÊÜ£¬Òò´Ë²»µÃ²»¿¼ÂǶÔSolr½øÐÐÓÅ»¯£»

ÍøÉÏÁËËÑÁËÒ»ÏÂSolrÓÅ»¯µÄ´óÌå·½°¸£¬Ö÷Òª´ÓÈçÏÂÁ½¸ö²½ÖèÀ´½øÐÐÓÅ»¯£º

1. Solrϵͳ²ãÃæ£»

2. Ë÷Òý×Ö¶ÎÓÅ»¯£»

Õë¶ÔSolrϵͳ²ãµÄÓÅ»¯£¬Ö÷ÒªÓÐÈçÏµķ½·¨£º

1. Êʵ±µ÷´óSolr²éѯ»º´æ£»

2.Êʵ±Ôö¼ÓSolr¼¯ÈºµÄÇÐÆ¬£»

3¸ù¾Ý²éѯµÄÒµÎñ³¡¾°£¬Êʵ±µ÷

ÕûË÷ÒýºÏ²¢µÄʱ¼ä£¬µÈµÈһϵÁÐͨÓõÄ×ö·¨£¬Õë¶ÔÕâЩÐÞ¸ÄÒԺ󣬷¢ÏÖÐÞ¸Äǰºó£¬¶Ô²éѯµÄÐÔÄÜûÓб¾ÖʵÄÌá¸ß£»

Õë¶ÔË÷Òý×ֶεÄÓÅ»¯£¬¾ÍÊÇÕë¶ÔÌí¼Óµ½LucenceÖÐÎĵµ¸÷Ë÷Òý×ֶεÄÓÅ»¯£¬ syslogË÷Òý×Ö¶ÎÖ÷ÒªµÄ×Ö¶ÎÓУº

id(Integer),

ip(String),

log_level(String),

log_value(String)

syslog_time(Date),

ÒªÕë¶ÔÕâЩ×Ö¶ÎÓÅË÷ÒýÓÅ»¯£¬¾ÍÒªÊ×ÏÈ·ÖÎöË÷Òý²éÕҵĹý³Ì£¬Òª×öµ½×Ö¶ÎÓÅ»¯Ë÷Òý£¬¿ÉÒÔ´ÓÁ½·½Ã濼ÂÇ£¬

1. ¼õÉÙ×Ö¶ÎË÷Òý´æ´¢Á¿£¬

2. Ìá¸ß²éѯË÷Òý±È½ÏµÄʱ¼ä£¬ Õë¶ÔÕâÁ½µã£¬

¿ÉÒÔºÁ²»ÓÌÔ¥µÄ¿¼ÂǰÑStringÀàÐ͵Ä×Ö¶ÎÏòInteger»òLongÀàÐÍÖ®ÀàµÄÕûÐÍ×Ö¶ÎÓ³Éäת»»(ÕûÐ͵ÄË÷Òý´æ´¢¿Õ¼äÒ»°ã±È×ֶδ®ËùÕ¼µÄ´æ´¢Ë÷Òý¿Õ¼äҪС£»ÕûÐ͵IJéÕұȽÏËٶȱÈ×ֶδ®ÀàÐÍÒª¿ì£¬ÆäʵÕâÒ²ÊÇÊý¾Ý¿â²éÕÒÓÅ»¯µÄÒ»¸ö·½Ãæ)£»»ùÓÚÕâÑùµÄ¿¼ÂÇ£¬ip¡¢log_levelºÍsyslog_time¿ÉÒÔÏòÏàÓ¦µÄÕûÐÍÓ³É䣬¸÷¸ö×ֶξßÌåµÄÓ³Éä·½·¨ÈçÏ£º

1. ip µØÖ·ÏòÕûÐÎÓ³É䣬Õâ¸öÎÊÌâ±È½ÏºÃ½â¾ö£¬ÔÚ¼ÆËã»úÍøÂçЭÒéÖУ¬ÔڵײãÊÇ»á°ÑipµØÖ·×ª»»³É¶ÔÓ¦µÄÎÞ·ûºÅ³¤ÕûÐÍ£¬µ«ÓÉÓÚjavaûÓÐÎÞ·ûºÅÕâ¸ö¸ÅÄÒò´Ë¿ÉÒÔ¿¼ÂǰÑipµØÖ·ÏòÕûÐÍ»ò³¤ÕûÐÍ×öÏ໥ӳÉäת»»,µ«ÒòΪÕûÐͱȳ¤ÕûÐÍÕ¼ÓõÄ×Ö½Ú¸üÉÙ£¬Òò´Ë²ÉÓÃÕûÐÍ£¬¾ßÌåת»»´úÂëÈçÏ£º

public static Long ipToInteger(String ip) {

String[] ips = StringUtils.split(ip,'.');
if (ips == null || ips.length < 4){
throw newRuntimeException("ipµØÖ··Ç·¨!");
}
Integer integerIP = 0;
Integer ip0= Integer.parseInteger(ips[0]);
Integer ip1= Integer.parseInteger(ips[1]);
Integer ip2= Integer.parseInteger(ips[2]);
Integer ip3= Integer.parseInteger(ips[3]);
if (ip0 > 255) {
throw newRuntimeException("ip0µØÖ··Ç·¨:" + ip0);
}
if (ip1 > 255) {
throw newRuntimeException("ip1µØÖ··Ç·¨:" + ip1);
}
if (ip2 > 255) {
throw newRuntimeException("ip2µØÖ··Ç·¨:" + ip2);
}
if (ip3 > 255) {
throw newRuntimeException("ip3µØÖ··Ç·¨:" + ip3);
}
integerIP |=( ip0 << 24) & (0xff000000);
integerIP |=( ip1 << 16) & (0x00ff0000);
integerIP |=( ip2 << 8) & (0x0000ff00);
integerIP |=( ip3 << 0) & (0x000000ff);
return integerIP ;
}

 

/**
* intÀàÐ͵½ipת»»
* @param integerIP
* @return
*/
public static String integerToIP(IntegerintegerIP) {

String ip = "";
Integer ip0= (integerIP & 0xff000000) >>> 24;
Integer ip1= (integerIP & 0x00ff0000) >> 16 ;
Integer ip2= (integerIP & 0x0000ff00) >> 8;
Integer ip3= (integerIP & 0x000000ff) >> 0;
ip = ip0 + "." + ip1 +"." + ip2 + "." + ip3;
return ip;
}

2. log_level Ö»ÓÐ8ÖÖÖµ£¬·Ö±ðÊÇ£ºEmergency£¬ Alert£¬ Critical£¬ Error£¬ Warning£¬Notice£¬Informational£¬Debug£» Õâ¸öºÃת»»£¬Ö±½Ó°´Ï±íµÄ·½Ê½×öÏ໥ӳÉä¼´¿É

3. °Ñsyslog_timeת»»³ÉLongÀàÐÍ£¬Õâ¸ö¸üÈÝÒ×£¬javaÖÐDateÀàÐÍÓÐÒ»¸ögetTime()·½·¨¾­¹ý°ÑÕâÈý¸ö×ֶζ¼×ª»»³ÉÕûÐÍÒÔºó£¬Ë÷Òý²åÈëºÍËÑË÷Ëٶȶ¼Ìá¸ß²»ÉÙ£¬ÌرðÊÇËÑË÷ËÙ¶ÈÓзdz£·Ç³£Ã÷ÏÔµÄÌáÉý£¬ÌرðÊÇÔÚÊý¾ÝÁ¿³¬¹ý2ÒÚµÄʱ¼ä£¬Ð§¹û¸üÃ÷ÏÔµ½´Ë£¬×Ö¶ÎÓÅ»¯Íê±Ï£»µ«´Ëʱ»¹·¢ÏÖÒ»¸öÎÊÌ⣺һ´Î²éÕÒ·µ»ØµÄÊý¾ÝÁ¿Ì«¶à£¬µ¼Ö´æÔÚ·­Ò³ÂýµÄÎÊÌ⣬ÀýÈ磺һ´Î·µ»Ø10WÒ³Êý¾Ý£¬Èç¹ûһϷ­µ½µÚ10WÒ³£¬²éѯµÄËÙ¶È»á·Ç³£·Ç³£ÂýÉõÖÁ¿ÉÄܳöÏÖSolr¼¯ÈºÈ«²¿å´»úµÄÇé¿ö£¬ÕâÊDz»ÄܽÓÊܵģ¬ÒòΪÎÒÃÇÒ³ÃæÉÏÌṩÁË·­µ½×îºóÒ»ÃæµÄ¹¦ÄÜ£¬ ËäÈ»Óû§Ò»°ãÇé¿öϲ»»áÕâô×ö£¬µ«ÍòÒ»²»Ð¡µã´íÁË£¬Õû¸öÏßÉÏSorl¼¯Èº¾ÍÈ«²¿¹ÒÁË£¬Ôõô°ì£¿Õâ¸öÎÊÌ⣬ÈÃÎÒÏëÆðÁËmysqlÀïµÄ·­Ò³µÄÎÊÌ⣬ÏÂÃæÁ½ÌõSQLÓï¾ä£º

select * from umc_syslog where syslog_time between date1 and date2 order by id limit 0, 10;
select * from umc_syslog where syslog_time between date1 and date2 order by id limit 10000, 10;

ÎÒÃÇÖªµÀ£¬µÚÒ»ÌõSQLÓï¾ä²éѯµÄËٶȷdz£¿ì£¬µÚ¶þSQLÓï¾ä²éѯµÄËٶȷdz£Âý£¬ÔÚϵͳѹÁ¦½Ï´óµÄÇé¿öÏ£¬¿ÉÄÜ»á°Ñmysql·þÎñŪ¹Ò£¬¸ù±¾Ô­ÒòÔÚÓÚlimitstart, rowsÓï¾ä£¬mysql»áÔÚɨÃèʱ£¬»áɨ¹ýÂú×ã½á¹ûµÄǰstartÐеļǼ£¬È»ºó²Å¶ÁÈ¡lenÐеÄÊý¾Ý£¬Èç¹ûstartÌØ±ð´ó£¬»á·Ç³£Âý£¬ÔÚ¸ßÐÔÄÜmysqlÕâ±¾ÊéÖнéÉÜÁ˸÷ÖÖ½â¾ö·ÖÒ³ÎÊÌâµÄÓÅ»¯£¬ÈçÑÓ³Ù¹ØÁª¡¢½×µÝ·ÖÒ³µÈ£¬ÆäÖн׵ݷÖÒ³¿ÉÒÔÔÚSolrÖÐʵÏÖ£¬µ«ÎÒÃÇÒ³Ãæ²»ÔÊÐíÕâô×ö£¬²»È»Ôç¾ÍÓÃHbaseÀ´½â¾öÁË£¬Ôõô°ì£¬ÔÚÎÞ½â¾öµÄÇé¿öÏ£¬Í»È»·¢ÏÖ£¬Solr²éѯÖÐÓÐorder byÅÅÐòµÄÎÊÌ⣬Êʵ±ÓÃorder by¿ÉÒԺܺÃÀ´½â¾ölimit ·ÖÒ³ÂýµÄÎÊÌ⣺

¼ÙÉè Ò»¸öSolr²éѯ°´id ½µÐòÅÅÐò·µ»Ø£¬¼ÙÉè·µ»Ø10WÐмǼ£¬Ç°5WÌõ¼Ç¼¿ÉÒÔËæ»ú·ÖÒ³²éѯµ½£¬µ«ºóÃæ5WÌõ¼Ç¼ºÜÄÑËæ»ú·ÖÒ³²éѯµ½£¬Ôì³ÉÕâ¸öÎÊÌâµÄÔ­ÒòÊǰ´id½µÐò·µ»Ø£¬Èç¹ûÊʵ±ÐÞ¸ÄһϲéѯÓï¾ä£¬ËÙ¶È¿ÉÄÜ»áÓÐËùÌá¸ß£¬ÒòΪSolr²éѯÿ´Î¶¼»á·µ»Ø×ܵļǼÌõÊý£¬Õâ¸ö×ܵļǼÌõÊýÊÇÒÑÖªµÄ£¬ ¼ÇΪtotal, ×÷ÈçÏ´¦Àí£ºÈç¹ûstart СÓÚµÈÓÚ £¨total >> 1£©,Ôò´ÓǰÍùºó¶Á£»·ñÔò¾Í´ÓºóÍùǰ¶Á£¬È»ºó£¬ÔÙ°Ñ·µ»ØµÄ½á¹ûÄæÐò£¬ÏÔʾ¼´¿É£¬Î±´úÂëÈçÏ£»

if start <= (total >> 1)
query order by id desc limit start, rows;
else
calculate new start as start';
calculate new rows as rows';
query order by asc limit start', rows';
reverse the return data;
end

³ÌÐòÖÐÏà¹Ø´úÂ룺

// ÊÇ·ñÊǰ´idÉýÐò²éѯ, ĬÈÏÊÇfalse
boolean isAscend = false;

// ÉýÐò»ò½µÐò²éѯÅжÏ
if (totalCount == 0) {
isAscend = false;
} else {
if (start >= (totalCount >> 1) ) {
isAscend = true;
}
}

if (!isAscend) {
realStart = start;
realRows = rows;
} else {
Integer count = totalCount.intValue();
realStart = (start + rows)>= count? 0 : (count - (start +rows));
realRows = (start + rows)>= count? (count - start + 1) : rows;
}
solrQuery.setStart(realStart);
solrQuery.setRows(realRows);

if (!isAscend) {// id½µÐò
solrQuery.setSort("id", ORDER.desc);
} else { // id ÉýÐò
solrQuery.setSort("id", ORDER.asc);
}

// ÄæÐò´¦Àí
if (isAscend) {
int size = syslogVOList.size();
int left = 0;
int right = size - 1;
while (left < right) {
SyslogVO leftSyslogVO =syslogVOList.get(left);
SyslogVO rightSyslogVO =syslogVOList.get(right);
syslogVOList.set(left, rightSyslogVO);
syslogVOList.set(right, leftSyslogVO);
left ++;
right --;
}
}

¾­¹ýÕâ¸ö¹ý³ÌµÄ´¦ÀíÖ®ºó£¬Ïòºó·­Ò³²éѯµÄËÙ¶È¿ìÁ˺ܶ࣬ÖÁÉÙ²»»á³öÏÖå´»úµÄÏÖÏó£»

²éÑ¯Ò³ÃæÈçÏ£º

ÔÚÏàͬµÄÌõ¼þÏ£º

ÓÅ»¯ºóSolr²éѯµÄʱ¼ä£º

ÓÅ»¯Ç°mysqlµÄ²éѯʱ¼ä£º

ÆäʵÕâ¸ö¼¼ÇÉÔÚmysql·ÖÒ³²éѯ£¬Êý¾ÝÁ¿·Ç³£´óµÄʱºòÒ²ÊÊÓã»

   
4824 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ