List of usage examples for org.apache.lucene.index IndexWriter ramBytesUsed
@Override public final long ramBytesUsed()
From source file:com.baidu.rigel.biplatform.tesseract.isservice.netty.service.IndexServerHandler.java
License:Open Source License
@Override public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception { logger.info(String.format(LogInfoConstants.INFO_PATTERN_MESSAGE_RECEIVED_BEGIN, "IndexServerHandler")); IndexMessage indexMsg = (IndexMessage) msg; // ??/*from ww w . ja va 2s . c o m*/ File idxFile = new File(indexMsg.getIdxPath()); File idxServiceFile = new File(indexMsg.getIdxServicePath()); if (indexMsg.getMessageHeader().getAction().equals(NettyAction.NETTY_ACTION_UPDATE) || indexMsg.getMessageHeader().getAction().equals(NettyAction.NETTY_ACTION_INITINDEX)) { // ?? // ? FileUtils.deleteFile(idxFile); if (indexMsg.getMessageHeader().getAction().equals(NettyAction.NETTY_ACTION_UPDATE) && idxServiceFile.exists()) { // ? FileUtils.copyFolder(indexMsg.getIdxServicePath(), indexMsg.getIdxPath()); } } IndexWriter idxWriter = IndexWriterFactory.getIndexWriter(indexMsg.getIdxPath()); TesseractResultSet data = indexMsg.getDataBody(); long currDiskSize = FileUtils.getDiskSize(indexMsg.getIdxPath()); BigDecimal currMaxId = null; // ?? if (currDiskSize < indexMsg.getBlockSize()) { while (data.next() && currDiskSize < indexMsg.getBlockSize()) { Document doc = new Document(); String[] fieldNameArr = data.getFieldNameArray(); for (String select : fieldNameArr) { if (select.equals(indexMsg.getIdName())) { currMaxId = data.getBigDecimal(select); } doc.add(new StringField(select, data.getString(select), Field.Store.NO)); } idxWriter.addDocument(doc); if ((currDiskSize + idxWriter.ramBytesUsed()) > indexMsg.getBlockSize()) { // ?????? idxWriter.commit(); // ?? currDiskSize = FileUtils.getDiskSize(indexMsg.getIdxPath()); } } idxWriter.commit(); } String feedBackIndexServicePath = null; String feedBackIndexFilePath = null; // ? or ???indexWriter\? long totalDiskSize = FileUtils.getDiskSize(indexMsg.getIdxPath()); if (totalDiskSize > indexMsg.getBlockSize() || indexMsg.isLastPiece()) { IndexWriterFactory.destoryWriters(indexMsg.getIdxPath()); feedBackIndexServicePath = indexMsg.getIdxPath(); feedBackIndexFilePath = indexMsg.getIdxServicePath(); } else { feedBackIndexServicePath = indexMsg.getIdxServicePath(); feedBackIndexFilePath = indexMsg.getIdxPath(); } MessageHeader messageHeader = new MessageHeader(NettyAction.NETTY_ACTION_INDEX_FEEDBACK); IndexMessage indexFeedbackMsg = new IndexMessage(messageHeader, indexMsg.getDataBody()); indexFeedbackMsg.setBlockSize(indexMsg.getBlockSize()); indexFeedbackMsg.setDiskSize(totalDiskSize); indexFeedbackMsg.setIdxServicePath(feedBackIndexServicePath); indexFeedbackMsg.setIdxPath(feedBackIndexFilePath); indexFeedbackMsg.setIdName(indexMsg.getIdName()); indexFeedbackMsg.setMaxId(currMaxId); ctx.writeAndFlush(indexFeedbackMsg); ctx.channel().close(); logger.info(String.format(LogInfoConstants.INFO_PATTERN_MESSAGE_RECEIVED_END, "IndexServerHandler")); }
From source file:org.elasticsearch.index.engine.internal.AsynchronousEngine.java
License:Apache License
@Override public SegmentsStats segmentsStats() { // Does ensureOpen for us: final IndexWriter indexWriter = currentIndexWriter(); assert indexWriter != null; try (final Searcher searcher = acquireSearcher("segments_stats")) { SegmentsStats stats = new SegmentsStats(); for (AtomicReaderContext reader : searcher.reader().leaves()) { stats.add(1, getReaderRamBytesUsed(reader)); }/*from w w w . j a v a 2 s.c om*/ stats.addVersionMapMemoryInBytes(versionMap.ramBytesUsed()); stats.addIndexWriterMemoryInBytes(indexWriter.ramBytesUsed()); stats.addIndexWriterMaxMemoryInBytes( (long) (indexWriter.getConfig().getRAMBufferSizeMB() * 1024 * 1024)); return stats; } }