diff --git a/pom.xml b/pom.xml
index 7f34468e3e5f51023cf2d98b840869f6657ab83e..3b74ff4911d37b7f48c32971922d664b3c6e5bec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,7 @@
 		<crawler.version>1.0.0</crawler.version>
 
 		<!-- Suggest -->
-		<suggest.version>2.0.1-SNAPSHOT</suggest.version>
+		<suggest.version>2.1.0-SNAPSHOT</suggest.version>
 
 		<!-- Elasticsearch -->
 		<elasticsearch.version>2.1.0</elasticsearch.version>
diff --git a/src/main/java/org/codelibs/fess/exec/SuggestCreator.java b/src/main/java/org/codelibs/fess/exec/SuggestCreator.java
index a33e968de29d60b0b881d270f4450f3a2d7c737d..406ab98e464ea1c69911a34b92814ee17e802d4b 100644
--- a/src/main/java/org/codelibs/fess/exec/SuggestCreator.java
+++ b/src/main/java/org/codelibs/fess/exec/SuggestCreator.java
@@ -118,6 +118,12 @@ public class SuggestCreator implements Serializable {
     }
 
     private int create() {
+        final DynamicProperties crawlerProperties = ComponentUtil.getCrawlerProperties();
+        if(!Constants.TRUE.equals(crawlerProperties.getProperty(Constants.SUGGEST_DOCUMENTS_PROPERTY, Constants.TRUE))) {
+            logger.info("Skip create suggest document.");
+            return 0;
+        }
+
         logger.info("Start create suggest document.");
 
         final AtomicInteger result = new AtomicInteger(1);
diff --git a/src/main/java/org/codelibs/fess/helper/SuggestHelper.java b/src/main/java/org/codelibs/fess/helper/SuggestHelper.java
index c9a44f2bebd825828be9e6a9d2df905d96ad4041..8236ff4adc795eacf236b489e5a7f3ee9f085d03 100644
--- a/src/main/java/org/codelibs/fess/helper/SuggestHelper.java
+++ b/src/main/java/org/codelibs/fess/helper/SuggestHelper.java
@@ -39,7 +39,6 @@ import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.suggest.Suggester;
 import org.codelibs.fess.suggest.constants.FieldNames;
 import org.codelibs.fess.suggest.entity.SuggestItem;
-import org.codelibs.fess.suggest.index.contents.document.DocumentReader;
 import org.codelibs.fess.suggest.index.contents.document.ESSourceReader;
 import org.codelibs.fess.suggest.settings.SuggestSettings;
 import org.codelibs.fess.suggest.util.SuggestUtil;
@@ -69,6 +68,10 @@ public class SuggestHelper {
 
     public String[] contentsIndexFieldNames = { "content", "title" };
 
+    public long updateRequestIntervalMills = 1;
+
+    public int sourceReaderScrollSize = 1;
+
     private static final String TEXT_SEP = " ";
 
     protected Suggester suggester;
@@ -138,17 +141,14 @@ public class SuggestHelper {
         }
 
         final FessConfig fessConfig = ComponentUtil.getFessConfig();
-        final DocumentReader reader =
+        final ESSourceReader reader =
                 new ESSourceReader(fessEsClient, suggester.settings(), fessConfig.getIndexDocumentIndex(),
                         fessConfig.getIndexDocumentType());
-
-        suggester.indexer().indexFromDocument(reader, 2, 100).then(response -> {
+        reader.setScrollSize(sourceReaderScrollSize);
+        suggester.indexer().indexFromDocument(reader, 2, updateRequestIntervalMills).then(response -> {
             suggester.refresh();
-
-            //TODO delete old doc
-
-                success.accept(true);
-            }).error(t -> error.accept(t));
+            success.accept(true);
+        }).error(t -> error.accept(t));
     }
 
     public void purgeDocumentSuggest(final LocalDateTime time) {
@@ -214,11 +214,11 @@ public class SuggestHelper {
 
     public void addElevateWord(final String word, final String reading, final String[] tags, final String roles, final float boost,
             final boolean commit) {
-        final List<String> labelList = new ArrayList<String>();
+        final List<String> labelList = new ArrayList<>();
         for (final String label : tags) {
             labelList.add(label);
         }
-        final List<String> roleList = new ArrayList<String>();
+        final List<String> roleList = new ArrayList<>();
         if (StringUtil.isNotBlank(roles)) {
             final String[] array = roles.trim().split(",");
             for (final String role : array) {