Browse Source

fix #1143 add virtual_host field to fess index

fix #1144 add virtualHosts to crawling configs
Shinsuke Sugaya 8 years ago
parent
commit
92183cfdb4
46 changed files with 1317 additions and 12 deletions
  1. 18 0
      src/main/config/es/fess_config.json
  2. 2 0
      src/main/java/org/codelibs/fess/Constants.java
  3. 16 4
      src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java
  4. 3 0
      src/main/java/org/codelibs/fess/app/web/admin/dataconfig/CreateForm.java
  5. 15 4
      src/main/java/org/codelibs/fess/app/web/admin/fileconfig/AdminFileconfigAction.java
  6. 3 0
      src/main/java/org/codelibs/fess/app/web/admin/fileconfig/CreateForm.java
  7. 16 4
      src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java
  8. 3 0
      src/main/java/org/codelibs/fess/app/web/admin/webconfig/CreateForm.java
  9. 3 0
      src/main/java/org/codelibs/fess/crawler/transformer/AbstractFessFileTransformer.java
  10. 3 0
      src/main/java/org/codelibs/fess/crawler/transformer/FessXpathTransformer.java
  11. 1 0
      src/main/java/org/codelibs/fess/es/config/bsbhv/BsDataConfigBhv.java
  12. 1 0
      src/main/java/org/codelibs/fess/es/config/bsbhv/BsFileConfigBhv.java
  13. 1 0
      src/main/java/org/codelibs/fess/es/config/bsbhv/BsWebConfigBhv.java
  14. 17 0
      src/main/java/org/codelibs/fess/es/config/bsentity/BsDataConfig.java
  15. 17 0
      src/main/java/org/codelibs/fess/es/config/bsentity/BsFileConfig.java
  16. 17 0
      src/main/java/org/codelibs/fess/es/config/bsentity/BsWebConfig.java
  17. 9 0
      src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/DataConfigDbm.java
  18. 9 0
      src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/FileConfigDbm.java
  19. 9 0
      src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/WebConfigDbm.java
  20. 4 0
      src/main/java/org/codelibs/fess/es/config/cbean/bs/BsDataConfigCB.java
  21. 4 0
      src/main/java/org/codelibs/fess/es/config/cbean/bs/BsFileConfigCB.java
  22. 4 0
      src/main/java/org/codelibs/fess/es/config/cbean/bs/BsWebConfigCB.java
  23. 131 0
      src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsDataConfigCA.java
  24. 131 0
      src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsFileConfigCA.java
  25. 131 0
      src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsWebConfigCA.java
  26. 222 0
      src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsDataConfigCQ.java
  27. 222 0
      src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsFileConfigCQ.java
  28. 222 0
      src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsWebConfigCQ.java
  29. 2 0
      src/main/java/org/codelibs/fess/es/config/exentity/CrawlingConfig.java
  30. 5 0
      src/main/java/org/codelibs/fess/es/config/exentity/CrawlingConfigWrapper.java
  31. 3 0
      src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java
  32. 15 0
      src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
  33. 1 0
      src/main/resources/fess_config.properties
  34. 3 0
      src/main/resources/fess_indices/.fess_config/data_config.json
  35. 3 0
      src/main/resources/fess_indices/.fess_config/file_config.json
  36. 3 0
      src/main/resources/fess_indices/.fess_config/web_config.json
  37. 3 0
      src/main/resources/fess_indices/fess/doc.json
  38. 1 0
      src/main/resources/fess_label.properties
  39. 1 0
      src/main/resources/fess_label_en.properties
  40. 1 0
      src/main/resources/fess_label_ja.properties
  41. 5 0
      src/main/webapp/WEB-INF/view/admin/dataconfig/admin_dataconfig_details.jsp
  42. 9 0
      src/main/webapp/WEB-INF/view/admin/dataconfig/admin_dataconfig_edit.jsp
  43. 5 0
      src/main/webapp/WEB-INF/view/admin/fileconfig/admin_fileconfig_details.jsp
  44. 9 0
      src/main/webapp/WEB-INF/view/admin/fileconfig/admin_fileconfig_edit.jsp
  45. 5 0
      src/main/webapp/WEB-INF/view/admin/webconfig/admin_webconfig_details.jsp
  46. 9 0
      src/main/webapp/WEB-INF/view/admin/webconfig/admin_webconfig_edit.jsp

+ 18 - 0
src/main/config/es/fess_config.json

@@ -268,6 +268,9 @@
           },
           "userAgent" : {
             "type": "keyword"
+          },
+          "virtualHosts" : {
+            "type": "keyword"
           }
         }
       },
@@ -454,6 +457,9 @@
           },
           "updatedTime" : {
             "type" : "long"
+          },
+          "virtualHosts" : {
+            "type": "keyword"
           }
         }
       },
@@ -725,6 +731,9 @@
           },
           "updatedTime" : {
             "type" : "long"
+          },
+          "virtualHosts" : {
+            "type": "keyword"
           }
         }
       },
@@ -939,6 +948,9 @@
             "properties" : {
               "permissions" : {
                 "array" : "true"
+              },
+              "virtualHosts" : {
+                "array" : "true"
               }
             }
           },
@@ -946,6 +958,9 @@
             "properties" : {
               "permissions" : {
                 "array" : "true"
+              },
+              "virtualHosts" : {
+                "array" : "true"
               }
             }
           },
@@ -960,6 +975,9 @@
             "properties" : {
               "permissions" : {
                 "array" : "true"
+              },
+              "virtualHosts" : {
+                "array" : "true"
               }
             }
           },

+ 2 - 0
src/main/java/org/codelibs/fess/Constants.java

@@ -407,6 +407,8 @@ public class Constants extends CoreLibConstants {
 
     public static final String QUERIES = "queries";
 
+    public static final String VIRTUAL_HOSTS = "virtualHosts";
+
     public static final String CIPHER_PREFIX = "{cipher}";
 
     public static final String SYSTEM_USER = "system";

+ 16 - 4
src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java

@@ -147,13 +147,16 @@ public class AdminDataconfigAction extends FessAdminAction {
                         entity -> {
                             copyBeanToBean(entity, form, copyOp -> {
                                 copyOp.excludeNull();
-                                copyOp.exclude(Constants.PERMISSIONS);
+                                copyOp.exclude(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS);
                             });
                             final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                             form.permissions =
                                     stream(entity.getPermissions()).get(
                                             stream -> stream.map(permissionHelper::decode).filter(StringUtil::isNotBlank).distinct()
                                                     .collect(Collectors.joining("\n")));
+                            form.virtualHosts =
+                                    stream(entity.getVirtualHosts()).get(
+                                            stream -> stream.filter(StringUtil::isNotBlank).collect(Collectors.joining("\n")));
                         }).orElse(() -> {
                     throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
                 });
@@ -185,7 +188,7 @@ public class AdminDataconfigAction extends FessAdminAction {
                                         entity -> {
                                             copyBeanToBean(entity, form, copyOp -> {
                                                 copyOp.excludeNull();
-                                                copyOp.exclude(Constants.PERMISSIONS);
+                                                copyOp.exclude(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS);
                                             });
                                             final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                                             form.permissions =
@@ -193,6 +196,10 @@ public class AdminDataconfigAction extends FessAdminAction {
                                                             stream -> stream.map(s -> permissionHelper.decode(s))
                                                                     .filter(StringUtil::isNotBlank).distinct()
                                                                     .collect(Collectors.joining("\n")));
+                                            form.virtualHosts =
+                                                    stream(entity.getVirtualHosts()).get(
+                                                            stream -> stream.filter(StringUtil::isNotBlank).collect(
+                                                                    Collectors.joining("\n")));
                                             form.crudMode = crudMode;
                                         })
                                 .orElse(() -> throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id),
@@ -298,12 +305,17 @@ public class AdminDataconfigAction extends FessAdminAction {
                 entity -> {
                     entity.setUpdatedBy(username);
                     entity.setUpdatedTime(currentTime);
-                    copyBeanToBean(form, entity, op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
-                            Stream.of(Constants.PERMISSIONS)).toArray(n -> new String[n])));
+                    copyBeanToBean(
+                            form,
+                            entity,
+                            op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
+                                    Stream.of(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS)).toArray(n -> new String[n])));
                     final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                     entity.setPermissions(split(form.permissions, "\n").get(
                             stream -> stream.map(s -> permissionHelper.encode(s)).filter(StringUtil::isNotBlank).distinct()
                                     .toArray(n -> new String[n])));
+                    entity.setVirtualHosts(split(form.virtualHosts, "\n").get(
+                            stream -> stream.filter(StringUtil::isNotBlank).distinct().toArray(n -> new String[n])));
                     return entity;
                 });
     }

+ 3 - 0
src/main/java/org/codelibs/fess/app/web/admin/dataconfig/CreateForm.java

@@ -64,6 +64,9 @@ public class CreateForm {
     @CustomSize(maxKey = "form.admin.max.input.size")
     public String permissions;
 
+    @CustomSize(maxKey = "form.admin.max.input.size")
+    public String virtualHosts;
+
     @Required
     @Min(value = 0)
     @Max(value = 2147483647)

+ 15 - 4
src/main/java/org/codelibs/fess/app/web/admin/fileconfig/AdminFileconfigAction.java

@@ -143,12 +143,15 @@ public class AdminFileconfigAction extends FessAdminAction {
                         entity -> {
                             copyBeanToBean(entity, form, copyOp -> {
                                 copyOp.excludeNull();
-                                copyOp.exclude(Constants.PERMISSIONS);
+                                copyOp.exclude(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS);
                             });
                             form.permissions =
                                     stream(entity.getPermissions()).get(
                                             stream -> stream.map(permissionHelper::decode).filter(StringUtil::isNotBlank).distinct()
                                                     .collect(Collectors.joining("\n")));
+                            form.virtualHosts =
+                                    stream(entity.getVirtualHosts()).get(
+                                            stream -> stream.filter(StringUtil::isNotBlank).collect(Collectors.joining("\n")));
                         })
                 .orElse(() -> throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml()));
         saveToken();
@@ -178,7 +181,7 @@ public class AdminFileconfigAction extends FessAdminAction {
                                     entity -> {
                                         copyBeanToBean(entity, form, copyOp -> {
                                             copyOp.excludeNull();
-                                            copyOp.exclude(Constants.PERMISSIONS);
+                                            copyOp.exclude(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS);
                                         });
                                         final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                                         form.permissions =
@@ -186,6 +189,9 @@ public class AdminFileconfigAction extends FessAdminAction {
                                                         stream -> stream.map(s -> permissionHelper.decode(s))
                                                                 .filter(StringUtil::isNotBlank).distinct()
                                                                 .collect(Collectors.joining("\n")));
+                                        form.virtualHosts =
+                                                stream(entity.getVirtualHosts()).get(
+                                                        stream -> stream.filter(StringUtil::isNotBlank).collect(Collectors.joining("\n")));
                                         form.crudMode = crudMode;
                                     })
                             .orElse(() -> throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id),
@@ -290,12 +296,17 @@ public class AdminFileconfigAction extends FessAdminAction {
                 entity -> {
                     entity.setUpdatedBy(username);
                     entity.setUpdatedTime(currentTime);
-                    copyBeanToBean(form, entity, op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
-                            Stream.of(Constants.PERMISSIONS)).toArray(n -> new String[n])));
+                    copyBeanToBean(
+                            form,
+                            entity,
+                            op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
+                                    Stream.of(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS)).toArray(n -> new String[n])));
                     final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                     entity.setPermissions(split(form.permissions, "\n").get(
                             stream -> stream.map(s -> permissionHelper.encode(s)).filter(StringUtil::isNotBlank).distinct()
                                     .toArray(n -> new String[n])));
+                    entity.setVirtualHosts(split(form.virtualHosts, "\n").get(
+                            stream -> stream.filter(StringUtil::isNotBlank).distinct().toArray(n -> new String[n])));
                     return entity;
                 });
     }

+ 3 - 0
src/main/java/org/codelibs/fess/app/web/admin/fileconfig/CreateForm.java

@@ -99,6 +99,9 @@ public class CreateForm {
     @CustomSize(maxKey = "form.admin.max.input.size")
     public String permissions;
 
+    @CustomSize(maxKey = "form.admin.max.input.size")
+    public String virtualHosts;
+
     @Required
     @Min(value = 0)
     @Max(value = 2147483647)

+ 16 - 4
src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java

@@ -144,13 +144,16 @@ public class AdminWebconfigAction extends FessAdminAction {
                         entity -> {
                             copyBeanToBean(entity, form, copyOp -> {
                                 copyOp.excludeNull();
-                                copyOp.exclude(Constants.PERMISSIONS);
+                                copyOp.exclude(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS);
                             });
                             final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                             form.permissions =
                                     stream(entity.getPermissions()).get(
                                             stream -> stream.map(s -> permissionHelper.decode(s)).filter(StringUtil::isNotBlank).distinct()
                                                     .collect(Collectors.joining("\n")));
+                            form.virtualHosts =
+                                    stream(entity.getVirtualHosts()).get(
+                                            stream -> stream.filter(StringUtil::isNotBlank).collect(Collectors.joining("\n")));
                         }).orElse(() -> {
                     throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
                 });
@@ -182,7 +185,7 @@ public class AdminWebconfigAction extends FessAdminAction {
                                         entity -> {
                                             copyBeanToBean(entity, form, copyOp -> {
                                                 copyOp.excludeNull();
-                                                copyOp.exclude(Constants.PERMISSIONS);
+                                                copyOp.exclude(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS);
                                             });
                                             final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                                             form.permissions =
@@ -190,6 +193,10 @@ public class AdminWebconfigAction extends FessAdminAction {
                                                             stream -> stream.map(s -> permissionHelper.decode(s))
                                                                     .filter(StringUtil::isNotBlank).distinct()
                                                                     .collect(Collectors.joining("\n")));
+                                            form.virtualHosts =
+                                                    stream(entity.getVirtualHosts()).get(
+                                                            stream -> stream.filter(StringUtil::isNotBlank).collect(
+                                                                    Collectors.joining("\n")));
                                             form.crudMode = crudMode;
                                         })
                                 .orElse(() -> {
@@ -297,12 +304,17 @@ public class AdminWebconfigAction extends FessAdminAction {
                 entity -> {
                     entity.setUpdatedBy(username);
                     entity.setUpdatedTime(currentTime);
-                    copyBeanToBean(form, entity, op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
-                            Stream.of(Constants.PERMISSIONS)).toArray(n -> new String[n])));
+                    copyBeanToBean(
+                            form,
+                            entity,
+                            op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
+                                    Stream.of(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS)).toArray(n -> new String[n])));
                     final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                     entity.setPermissions(split(form.permissions, "\n").get(
                             stream -> stream.map(s -> permissionHelper.encode(s)).filter(StringUtil::isNotBlank).distinct()
                                     .toArray(n -> new String[n])));
+                    entity.setVirtualHosts(split(form.virtualHosts, "\n").get(
+                            stream -> stream.filter(StringUtil::isNotBlank).distinct().toArray(n -> new String[n])));
                     return entity;
                 });
     }

+ 3 - 0
src/main/java/org/codelibs/fess/app/web/admin/webconfig/CreateForm.java

@@ -105,6 +105,9 @@ public class CreateForm {
     @CustomSize(maxKey = "form.admin.max.input.size")
     public String permissions;
 
+    @CustomSize(maxKey = "form.admin.max.input.size")
+    public String virtualHosts;
+
     @Required
     @Min(value = 0)
     @Max(value = 2147483647)

+ 3 - 0
src/main/java/org/codelibs/fess/crawler/transformer/AbstractFessFileTransformer.java

@@ -295,6 +295,9 @@ public abstract class AbstractFessFileTransformer extends AbstractTransformer im
         final List<String> roleTypeList = getRoleTypes(responseData);
         stream(crawlingConfig.getPermissions()).of(stream -> stream.forEach(p -> roleTypeList.add(p)));
         putResultDataBody(dataMap, fessConfig.getIndexFieldRole(), roleTypeList);
+        // virtualHosts
+        putResultDataBody(dataMap, fessConfig.getIndexFieldVirtualHost(),
+                stream(crawlingConfig.getVirtualHosts()).get(stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n])));
         // TODO date
         // lang
         if (StringUtil.isNotBlank(fessConfig.getCrawlerDocumentFileDefaultLang())) {

+ 3 - 0
src/main/java/org/codelibs/fess/crawler/transformer/FessXpathTransformer.java

@@ -382,6 +382,9 @@ public class FessXpathTransformer extends XpathTransformer implements FessTransf
         final List<String> roleTypeList = new ArrayList<>();
         stream(crawlingConfig.getPermissions()).of(stream -> stream.forEach(p -> roleTypeList.add(p)));
         putResultDataBody(dataMap, fessConfig.getIndexFieldRole(), roleTypeList);
+        // virtualHosts
+        putResultDataBody(dataMap, fessConfig.getIndexFieldVirtualHost(),
+                stream(crawlingConfig.getVirtualHosts()).get(stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n])));
         // id
         putResultDataBody(dataMap, fessConfig.getIndexFieldId(), crawlingInfoHelper.generateId(dataMap));
         // parentId

+ 1 - 0
src/main/java/org/codelibs/fess/es/config/bsbhv/BsDataConfigBhv.java

@@ -86,6 +86,7 @@ public abstract class BsDataConfigBhv extends EsAbstractBehavior<DataConfig, Dat
             result.setSortOrder(DfTypeUtil.toInteger(source.get("sortOrder")));
             result.setUpdatedBy(DfTypeUtil.toString(source.get("updatedBy")));
             result.setUpdatedTime(DfTypeUtil.toLong(source.get("updatedTime")));
+            result.setVirtualHosts(toStringArray(source.get("virtualHosts")));
             return updateEntity(source, result);
         } catch (InstantiationException | IllegalAccessException e) {
             final String msg = "Cannot create a new instance: " + entityType.getName();

+ 1 - 0
src/main/java/org/codelibs/fess/es/config/bsbhv/BsFileConfigBhv.java

@@ -94,6 +94,7 @@ public abstract class BsFileConfigBhv extends EsAbstractBehavior<FileConfig, Fil
             result.setSortOrder(DfTypeUtil.toInteger(source.get("sortOrder")));
             result.setUpdatedBy(DfTypeUtil.toString(source.get("updatedBy")));
             result.setUpdatedTime(DfTypeUtil.toLong(source.get("updatedTime")));
+            result.setVirtualHosts(toStringArray(source.get("virtualHosts")));
             return updateEntity(source, result);
         } catch (InstantiationException | IllegalAccessException e) {
             final String msg = "Cannot create a new instance: " + entityType.getName();

+ 1 - 0
src/main/java/org/codelibs/fess/es/config/bsbhv/BsWebConfigBhv.java

@@ -95,6 +95,7 @@ public abstract class BsWebConfigBhv extends EsAbstractBehavior<WebConfig, WebCo
             result.setUpdatedTime(DfTypeUtil.toLong(source.get("updatedTime")));
             result.setUrls(DfTypeUtil.toString(source.get("urls")));
             result.setUserAgent(DfTypeUtil.toString(source.get("userAgent")));
+            result.setVirtualHosts(toStringArray(source.get("virtualHosts")));
             return updateEntity(source, result);
         } catch (InstantiationException | IllegalAccessException e) {
             final String msg = "Cannot create a new instance: " + entityType.getName();

+ 17 - 0
src/main/java/org/codelibs/fess/es/config/bsentity/BsDataConfig.java

@@ -76,6 +76,9 @@ public class BsDataConfig extends EsAbstractEntity {
     /** updatedTime */
     protected Long updatedTime;
 
+    /** virtualHosts */
+    protected String[] virtualHosts;
+
     // [Referrers] *comment only
 
     // ===================================================================================
@@ -136,6 +139,9 @@ public class BsDataConfig extends EsAbstractEntity {
         if (updatedTime != null) {
             addFieldToSource(sourceMap, "updatedTime", updatedTime);
         }
+        if (virtualHosts != null) {
+            addFieldToSource(sourceMap, "virtualHosts", virtualHosts);
+        }
         return sourceMap;
     }
 
@@ -162,6 +168,7 @@ public class BsDataConfig extends EsAbstractEntity {
         sb.append(dm).append(sortOrder);
         sb.append(dm).append(updatedBy);
         sb.append(dm).append(updatedTime);
+        sb.append(dm).append(virtualHosts);
         if (sb.length() > dm.length()) {
             sb.delete(0, dm.length());
         }
@@ -301,4 +308,14 @@ public class BsDataConfig extends EsAbstractEntity {
         registerModifiedProperty("updatedTime");
         this.updatedTime = value;
     }
+
+    public String[] getVirtualHosts() {
+        checkSpecifiedProperty("virtualHosts");
+        return virtualHosts;
+    }
+
+    public void setVirtualHosts(String[] value) {
+        registerModifiedProperty("virtualHosts");
+        this.virtualHosts = value;
+    }
 }

+ 17 - 0
src/main/java/org/codelibs/fess/es/config/bsentity/BsFileConfig.java

@@ -100,6 +100,9 @@ public class BsFileConfig extends EsAbstractEntity {
     /** updatedTime */
     protected Long updatedTime;
 
+    /** virtualHosts */
+    protected String[] virtualHosts;
+
     // [Referrers] *comment only
 
     // ===================================================================================
@@ -184,6 +187,9 @@ public class BsFileConfig extends EsAbstractEntity {
         if (updatedTime != null) {
             addFieldToSource(sourceMap, "updatedTime", updatedTime);
         }
+        if (virtualHosts != null) {
+            addFieldToSource(sourceMap, "virtualHosts", virtualHosts);
+        }
         return sourceMap;
     }
 
@@ -218,6 +224,7 @@ public class BsFileConfig extends EsAbstractEntity {
         sb.append(dm).append(sortOrder);
         sb.append(dm).append(updatedBy);
         sb.append(dm).append(updatedTime);
+        sb.append(dm).append(virtualHosts);
         if (sb.length() > dm.length()) {
             sb.delete(0, dm.length());
         }
@@ -437,4 +444,14 @@ public class BsFileConfig extends EsAbstractEntity {
         registerModifiedProperty("updatedTime");
         this.updatedTime = value;
     }
+
+    public String[] getVirtualHosts() {
+        checkSpecifiedProperty("virtualHosts");
+        return virtualHosts;
+    }
+
+    public void setVirtualHosts(String[] value) {
+        registerModifiedProperty("virtualHosts");
+        this.virtualHosts = value;
+    }
 }

+ 17 - 0
src/main/java/org/codelibs/fess/es/config/bsentity/BsWebConfig.java

@@ -103,6 +103,9 @@ public class BsWebConfig extends EsAbstractEntity {
     /** userAgent */
     protected String userAgent;
 
+    /** virtualHosts */
+    protected String[] virtualHosts;
+
     // [Referrers] *comment only
 
     // ===================================================================================
@@ -190,6 +193,9 @@ public class BsWebConfig extends EsAbstractEntity {
         if (userAgent != null) {
             addFieldToSource(sourceMap, "userAgent", userAgent);
         }
+        if (virtualHosts != null) {
+            addFieldToSource(sourceMap, "virtualHosts", virtualHosts);
+        }
         return sourceMap;
     }
 
@@ -225,6 +231,7 @@ public class BsWebConfig extends EsAbstractEntity {
         sb.append(dm).append(updatedTime);
         sb.append(dm).append(urls);
         sb.append(dm).append(userAgent);
+        sb.append(dm).append(virtualHosts);
         if (sb.length() > dm.length()) {
             sb.delete(0, dm.length());
         }
@@ -454,4 +461,14 @@ public class BsWebConfig extends EsAbstractEntity {
         registerModifiedProperty("userAgent");
         this.userAgent = value;
     }
+
+    public String[] getVirtualHosts() {
+        checkSpecifiedProperty("virtualHosts");
+        return virtualHosts;
+    }
+
+    public void setVirtualHosts(String[] value) {
+        registerModifiedProperty("virtualHosts");
+        this.virtualHosts = value;
+    }
 }

+ 9 - 0
src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/DataConfigDbm.java

@@ -103,6 +103,8 @@ public class DataConfigDbm extends AbstractDBMeta {
                 "updatedBy");
         setupEpg(_epgMap, et -> ((DataConfig) et).getUpdatedTime(), (et, vl) -> ((DataConfig) et).setUpdatedTime(DfTypeUtil.toLong(vl)),
                 "updatedTime");
+        setupEpg(_epgMap, et -> ((DataConfig) et).getVirtualHosts(), (et, vl) -> ((DataConfig) et).setVirtualHosts((String[]) vl),
+                "virtualHosts");
     }
 
     @Override
@@ -165,6 +167,8 @@ public class DataConfigDbm extends AbstractDBMeta {
             false, "keyword", 0, 0, null, false, null, null, null, null, null, false);
     protected final ColumnInfo _columnUpdatedTime = cci("updatedTime", "updatedTime", null, null, Long.class, "updatedTime", null, false,
             false, false, "Long", 0, 0, null, false, null, null, null, null, null, false);
+    protected final ColumnInfo _columnVirtualHosts = cci("virtualHosts", "virtualHosts", null, null, String[].class, "virtualHosts", null,
+            false, false, false, "keyword", 0, 0, null, false, null, null, null, null, null, false);
 
     public ColumnInfo columnAvailable() {
         return _columnAvailable;
@@ -218,6 +222,10 @@ public class DataConfigDbm extends AbstractDBMeta {
         return _columnUpdatedTime;
     }
 
+    public ColumnInfo columnVirtualHosts() {
+        return _columnVirtualHosts;
+    }
+
     protected List<ColumnInfo> ccil() {
         List<ColumnInfo> ls = newArrayList();
         ls.add(columnAvailable());
@@ -233,6 +241,7 @@ public class DataConfigDbm extends AbstractDBMeta {
         ls.add(columnSortOrder());
         ls.add(columnUpdatedBy());
         ls.add(columnUpdatedTime());
+        ls.add(columnVirtualHosts());
         return ls;
     }
 

+ 9 - 0
src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/FileConfigDbm.java

@@ -117,6 +117,8 @@ public class FileConfigDbm extends AbstractDBMeta {
                 "updatedBy");
         setupEpg(_epgMap, et -> ((FileConfig) et).getUpdatedTime(), (et, vl) -> ((FileConfig) et).setUpdatedTime(DfTypeUtil.toLong(vl)),
                 "updatedTime");
+        setupEpg(_epgMap, et -> ((FileConfig) et).getVirtualHosts(), (et, vl) -> ((FileConfig) et).setVirtualHosts((String[]) vl),
+                "virtualHosts");
     }
 
     @Override
@@ -195,6 +197,8 @@ public class FileConfigDbm extends AbstractDBMeta {
             false, "keyword", 0, 0, null, false, null, null, null, null, null, false);
     protected final ColumnInfo _columnUpdatedTime = cci("updatedTime", "updatedTime", null, null, Long.class, "updatedTime", null, false,
             false, false, "Long", 0, 0, null, false, null, null, null, null, null, false);
+    protected final ColumnInfo _columnVirtualHosts = cci("virtualHosts", "virtualHosts", null, null, String[].class, "virtualHosts", null,
+            false, false, false, "keyword", 0, 0, null, false, null, null, null, null, null, false);
 
     public ColumnInfo columnAvailable() {
         return _columnAvailable;
@@ -280,6 +284,10 @@ public class FileConfigDbm extends AbstractDBMeta {
         return _columnUpdatedTime;
     }
 
+    public ColumnInfo columnVirtualHosts() {
+        return _columnVirtualHosts;
+    }
+
     protected List<ColumnInfo> ccil() {
         List<ColumnInfo> ls = newArrayList();
         ls.add(columnAvailable());
@@ -303,6 +311,7 @@ public class FileConfigDbm extends AbstractDBMeta {
         ls.add(columnSortOrder());
         ls.add(columnUpdatedBy());
         ls.add(columnUpdatedTime());
+        ls.add(columnVirtualHosts());
         return ls;
     }
 

+ 9 - 0
src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/WebConfigDbm.java

@@ -119,6 +119,8 @@ public class WebConfigDbm extends AbstractDBMeta {
         setupEpg(_epgMap, et -> ((WebConfig) et).getUrls(), (et, vl) -> ((WebConfig) et).setUrls(DfTypeUtil.toString(vl)), "urls");
         setupEpg(_epgMap, et -> ((WebConfig) et).getUserAgent(), (et, vl) -> ((WebConfig) et).setUserAgent(DfTypeUtil.toString(vl)),
                 "userAgent");
+        setupEpg(_epgMap, et -> ((WebConfig) et).getVirtualHosts(), (et, vl) -> ((WebConfig) et).setVirtualHosts((String[]) vl),
+                "virtualHosts");
     }
 
     @Override
@@ -199,6 +201,8 @@ public class WebConfigDbm extends AbstractDBMeta {
             0, null, false, null, null, null, null, null, false);
     protected final ColumnInfo _columnUserAgent = cci("userAgent", "userAgent", null, null, String.class, "userAgent", null, false, false,
             false, "keyword", 0, 0, null, false, null, null, null, null, null, false);
+    protected final ColumnInfo _columnVirtualHosts = cci("virtualHosts", "virtualHosts", null, null, String[].class, "virtualHosts", null,
+            false, false, false, "keyword", 0, 0, null, false, null, null, null, null, null, false);
 
     public ColumnInfo columnAvailable() {
         return _columnAvailable;
@@ -288,6 +292,10 @@ public class WebConfigDbm extends AbstractDBMeta {
         return _columnUserAgent;
     }
 
+    public ColumnInfo columnVirtualHosts() {
+        return _columnVirtualHosts;
+    }
+
     protected List<ColumnInfo> ccil() {
         List<ColumnInfo> ls = newArrayList();
         ls.add(columnAvailable());
@@ -312,6 +320,7 @@ public class WebConfigDbm extends AbstractDBMeta {
         ls.add(columnUpdatedTime());
         ls.add(columnUrls());
         ls.add(columnUserAgent());
+        ls.add(columnVirtualHosts());
         return ls;
     }
 

+ 4 - 0
src/main/java/org/codelibs/fess/es/config/cbean/bs/BsDataConfigCB.java

@@ -227,5 +227,9 @@ public class BsDataConfigCB extends EsAbstractConditionBean {
         public void columnUpdatedTime() {
             doColumn("updatedTime");
         }
+
+        public void columnVirtualHosts() {
+            doColumn("virtualHosts");
+        }
     }
 }

+ 4 - 0
src/main/java/org/codelibs/fess/es/config/cbean/bs/BsFileConfigCB.java

@@ -259,5 +259,9 @@ public class BsFileConfigCB extends EsAbstractConditionBean {
         public void columnUpdatedTime() {
             doColumn("updatedTime");
         }
+
+        public void columnVirtualHosts() {
+            doColumn("virtualHosts");
+        }
     }
 }

+ 4 - 0
src/main/java/org/codelibs/fess/es/config/cbean/bs/BsWebConfigCB.java

@@ -263,5 +263,9 @@ public class BsWebConfigCB extends EsAbstractConditionBean {
         public void columnUserAgent() {
             doColumn("userAgent");
         }
+
+        public void columnVirtualHosts() {
+            doColumn("virtualHosts");
+        }
     }
 }

+ 131 - 0
src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsDataConfigCA.java

@@ -2201,4 +2201,135 @@ public abstract class BsDataConfigCA extends EsAbstractConditionAggregation {
         }
     }
 
+    public void setVirtualHosts_Terms() {
+        setVirtualHosts_Terms(null);
+    }
+
+    public void setVirtualHosts_Terms(ConditionOptionCall<TermsAggregationBuilder> opLambda) {
+        setVirtualHosts_Terms("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_Terms(ConditionOptionCall<TermsAggregationBuilder> opLambda, OperatorCall<BsDataConfigCA> aggsLambda) {
+        setVirtualHosts_Terms("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_Terms(String name, ConditionOptionCall<TermsAggregationBuilder> opLambda,
+            OperatorCall<BsDataConfigCA> aggsLambda) {
+        TermsAggregationBuilder builder = regTermsA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            DataConfigCA ca = new DataConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_SignificantTerms() {
+        setVirtualHosts_SignificantTerms(null);
+    }
+
+    public void setVirtualHosts_SignificantTerms(ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda) {
+        setVirtualHosts_SignificantTerms("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_SignificantTerms(ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda,
+            OperatorCall<BsDataConfigCA> aggsLambda) {
+        setVirtualHosts_SignificantTerms("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_SignificantTerms(String name, ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda,
+            OperatorCall<BsDataConfigCA> aggsLambda) {
+        SignificantTermsAggregationBuilder builder = regSignificantTermsA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            DataConfigCA ca = new DataConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_IpRange() {
+        setVirtualHosts_IpRange(null);
+    }
+
+    public void setVirtualHosts_IpRange(ConditionOptionCall<IpRangeAggregationBuilder> opLambda) {
+        setVirtualHosts_IpRange("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_IpRange(ConditionOptionCall<IpRangeAggregationBuilder> opLambda, OperatorCall<BsDataConfigCA> aggsLambda) {
+        setVirtualHosts_IpRange("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_IpRange(String name, ConditionOptionCall<IpRangeAggregationBuilder> opLambda,
+            OperatorCall<BsDataConfigCA> aggsLambda) {
+        IpRangeAggregationBuilder builder = regIpRangeA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            DataConfigCA ca = new DataConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_Count() {
+        setVirtualHosts_Count(null);
+    }
+
+    public void setVirtualHosts_Count(ConditionOptionCall<ValueCountAggregationBuilder> opLambda) {
+        setVirtualHosts_Count("virtualHosts", opLambda);
+    }
+
+    public void setVirtualHosts_Count(String name, ConditionOptionCall<ValueCountAggregationBuilder> opLambda) {
+        ValueCountAggregationBuilder builder = regCountA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Cardinality() {
+        setVirtualHosts_Cardinality(null);
+    }
+
+    public void setVirtualHosts_Cardinality(ConditionOptionCall<CardinalityAggregationBuilder> opLambda) {
+        setVirtualHosts_Cardinality("virtualHosts", opLambda);
+    }
+
+    public void setVirtualHosts_Cardinality(String name, ConditionOptionCall<CardinalityAggregationBuilder> opLambda) {
+        CardinalityAggregationBuilder builder = regCardinalityA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Missing() {
+        setVirtualHosts_Missing(null);
+    }
+
+    public void setVirtualHosts_Missing(ConditionOptionCall<MissingAggregationBuilder> opLambda) {
+        setVirtualHosts_Missing("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_Missing(ConditionOptionCall<MissingAggregationBuilder> opLambda, OperatorCall<BsDataConfigCA> aggsLambda) {
+        setVirtualHosts_Missing("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_Missing(String name, ConditionOptionCall<MissingAggregationBuilder> opLambda,
+            OperatorCall<BsDataConfigCA> aggsLambda) {
+        MissingAggregationBuilder builder = regMissingA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            DataConfigCA ca = new DataConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
 }

+ 131 - 0
src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsFileConfigCA.java

@@ -3718,4 +3718,135 @@ public abstract class BsFileConfigCA extends EsAbstractConditionAggregation {
         }
     }
 
+    public void setVirtualHosts_Terms() {
+        setVirtualHosts_Terms(null);
+    }
+
+    public void setVirtualHosts_Terms(ConditionOptionCall<TermsAggregationBuilder> opLambda) {
+        setVirtualHosts_Terms("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_Terms(ConditionOptionCall<TermsAggregationBuilder> opLambda, OperatorCall<BsFileConfigCA> aggsLambda) {
+        setVirtualHosts_Terms("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_Terms(String name, ConditionOptionCall<TermsAggregationBuilder> opLambda,
+            OperatorCall<BsFileConfigCA> aggsLambda) {
+        TermsAggregationBuilder builder = regTermsA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            FileConfigCA ca = new FileConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_SignificantTerms() {
+        setVirtualHosts_SignificantTerms(null);
+    }
+
+    public void setVirtualHosts_SignificantTerms(ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda) {
+        setVirtualHosts_SignificantTerms("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_SignificantTerms(ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda,
+            OperatorCall<BsFileConfigCA> aggsLambda) {
+        setVirtualHosts_SignificantTerms("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_SignificantTerms(String name, ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda,
+            OperatorCall<BsFileConfigCA> aggsLambda) {
+        SignificantTermsAggregationBuilder builder = regSignificantTermsA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            FileConfigCA ca = new FileConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_IpRange() {
+        setVirtualHosts_IpRange(null);
+    }
+
+    public void setVirtualHosts_IpRange(ConditionOptionCall<IpRangeAggregationBuilder> opLambda) {
+        setVirtualHosts_IpRange("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_IpRange(ConditionOptionCall<IpRangeAggregationBuilder> opLambda, OperatorCall<BsFileConfigCA> aggsLambda) {
+        setVirtualHosts_IpRange("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_IpRange(String name, ConditionOptionCall<IpRangeAggregationBuilder> opLambda,
+            OperatorCall<BsFileConfigCA> aggsLambda) {
+        IpRangeAggregationBuilder builder = regIpRangeA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            FileConfigCA ca = new FileConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_Count() {
+        setVirtualHosts_Count(null);
+    }
+
+    public void setVirtualHosts_Count(ConditionOptionCall<ValueCountAggregationBuilder> opLambda) {
+        setVirtualHosts_Count("virtualHosts", opLambda);
+    }
+
+    public void setVirtualHosts_Count(String name, ConditionOptionCall<ValueCountAggregationBuilder> opLambda) {
+        ValueCountAggregationBuilder builder = regCountA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Cardinality() {
+        setVirtualHosts_Cardinality(null);
+    }
+
+    public void setVirtualHosts_Cardinality(ConditionOptionCall<CardinalityAggregationBuilder> opLambda) {
+        setVirtualHosts_Cardinality("virtualHosts", opLambda);
+    }
+
+    public void setVirtualHosts_Cardinality(String name, ConditionOptionCall<CardinalityAggregationBuilder> opLambda) {
+        CardinalityAggregationBuilder builder = regCardinalityA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Missing() {
+        setVirtualHosts_Missing(null);
+    }
+
+    public void setVirtualHosts_Missing(ConditionOptionCall<MissingAggregationBuilder> opLambda) {
+        setVirtualHosts_Missing("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_Missing(ConditionOptionCall<MissingAggregationBuilder> opLambda, OperatorCall<BsFileConfigCA> aggsLambda) {
+        setVirtualHosts_Missing("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_Missing(String name, ConditionOptionCall<MissingAggregationBuilder> opLambda,
+            OperatorCall<BsFileConfigCA> aggsLambda) {
+        MissingAggregationBuilder builder = regMissingA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            FileConfigCA ca = new FileConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
 }

+ 131 - 0
src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsWebConfigCA.java

@@ -3845,4 +3845,135 @@ public abstract class BsWebConfigCA extends EsAbstractConditionAggregation {
         }
     }
 
+    public void setVirtualHosts_Terms() {
+        setVirtualHosts_Terms(null);
+    }
+
+    public void setVirtualHosts_Terms(ConditionOptionCall<TermsAggregationBuilder> opLambda) {
+        setVirtualHosts_Terms("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_Terms(ConditionOptionCall<TermsAggregationBuilder> opLambda, OperatorCall<BsWebConfigCA> aggsLambda) {
+        setVirtualHosts_Terms("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_Terms(String name, ConditionOptionCall<TermsAggregationBuilder> opLambda,
+            OperatorCall<BsWebConfigCA> aggsLambda) {
+        TermsAggregationBuilder builder = regTermsA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            WebConfigCA ca = new WebConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_SignificantTerms() {
+        setVirtualHosts_SignificantTerms(null);
+    }
+
+    public void setVirtualHosts_SignificantTerms(ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda) {
+        setVirtualHosts_SignificantTerms("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_SignificantTerms(ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda,
+            OperatorCall<BsWebConfigCA> aggsLambda) {
+        setVirtualHosts_SignificantTerms("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_SignificantTerms(String name, ConditionOptionCall<SignificantTermsAggregationBuilder> opLambda,
+            OperatorCall<BsWebConfigCA> aggsLambda) {
+        SignificantTermsAggregationBuilder builder = regSignificantTermsA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            WebConfigCA ca = new WebConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_IpRange() {
+        setVirtualHosts_IpRange(null);
+    }
+
+    public void setVirtualHosts_IpRange(ConditionOptionCall<IpRangeAggregationBuilder> opLambda) {
+        setVirtualHosts_IpRange("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_IpRange(ConditionOptionCall<IpRangeAggregationBuilder> opLambda, OperatorCall<BsWebConfigCA> aggsLambda) {
+        setVirtualHosts_IpRange("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_IpRange(String name, ConditionOptionCall<IpRangeAggregationBuilder> opLambda,
+            OperatorCall<BsWebConfigCA> aggsLambda) {
+        IpRangeAggregationBuilder builder = regIpRangeA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            WebConfigCA ca = new WebConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
+    public void setVirtualHosts_Count() {
+        setVirtualHosts_Count(null);
+    }
+
+    public void setVirtualHosts_Count(ConditionOptionCall<ValueCountAggregationBuilder> opLambda) {
+        setVirtualHosts_Count("virtualHosts", opLambda);
+    }
+
+    public void setVirtualHosts_Count(String name, ConditionOptionCall<ValueCountAggregationBuilder> opLambda) {
+        ValueCountAggregationBuilder builder = regCountA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Cardinality() {
+        setVirtualHosts_Cardinality(null);
+    }
+
+    public void setVirtualHosts_Cardinality(ConditionOptionCall<CardinalityAggregationBuilder> opLambda) {
+        setVirtualHosts_Cardinality("virtualHosts", opLambda);
+    }
+
+    public void setVirtualHosts_Cardinality(String name, ConditionOptionCall<CardinalityAggregationBuilder> opLambda) {
+        CardinalityAggregationBuilder builder = regCardinalityA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Missing() {
+        setVirtualHosts_Missing(null);
+    }
+
+    public void setVirtualHosts_Missing(ConditionOptionCall<MissingAggregationBuilder> opLambda) {
+        setVirtualHosts_Missing("virtualHosts", opLambda, null);
+    }
+
+    public void setVirtualHosts_Missing(ConditionOptionCall<MissingAggregationBuilder> opLambda, OperatorCall<BsWebConfigCA> aggsLambda) {
+        setVirtualHosts_Missing("virtualHosts", opLambda, aggsLambda);
+    }
+
+    public void setVirtualHosts_Missing(String name, ConditionOptionCall<MissingAggregationBuilder> opLambda,
+            OperatorCall<BsWebConfigCA> aggsLambda) {
+        MissingAggregationBuilder builder = regMissingA(name, "virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+        if (aggsLambda != null) {
+            WebConfigCA ca = new WebConfigCA();
+            aggsLambda.callback(ca);
+            ca.getAggregationBuilderList().forEach(builder::subAggregation);
+        }
+    }
+
 }

+ 222 - 0
src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsDataConfigCQ.java

@@ -2842,4 +2842,226 @@ public abstract class BsDataConfigCQ extends EsAbstractConditionQuery {
         return this;
     }
 
+    public void setVirtualHosts_Equal(String virtualHosts) {
+        setVirtualHosts_Term(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Equal(String virtualHosts, ConditionOptionCall<TermQueryBuilder> opLambda) {
+        setVirtualHosts_Term(virtualHosts, opLambda);
+    }
+
+    public void setVirtualHosts_Term(String virtualHosts) {
+        setVirtualHosts_Term(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Term(String virtualHosts, ConditionOptionCall<TermQueryBuilder> opLambda) {
+        TermQueryBuilder builder = regTermQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_NotEqual(String virtualHosts) {
+        setVirtualHosts_NotTerm(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_NotTerm(String virtualHosts) {
+        setVirtualHosts_NotTerm(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_NotEqual(String virtualHosts, ConditionOptionCall<BoolQueryBuilder> opLambda) {
+        setVirtualHosts_NotTerm(virtualHosts, opLambda);
+    }
+
+    public void setVirtualHosts_NotTerm(String virtualHosts, ConditionOptionCall<BoolQueryBuilder> opLambda) {
+        not(not -> not.setVirtualHosts_Term(virtualHosts), opLambda);
+    }
+
+    public void setVirtualHosts_Terms(Collection<String> virtualHostsList) {
+        setVirtualHosts_Terms(virtualHostsList, null);
+    }
+
+    public void setVirtualHosts_Terms(Collection<String> virtualHostsList, ConditionOptionCall<TermsQueryBuilder> opLambda) {
+        TermsQueryBuilder builder = regTermsQ("virtualHosts", virtualHostsList);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_InScope(Collection<String> virtualHostsList) {
+        setVirtualHosts_Terms(virtualHostsList, null);
+    }
+
+    public void setVirtualHosts_InScope(Collection<String> virtualHostsList, ConditionOptionCall<TermsQueryBuilder> opLambda) {
+        setVirtualHosts_Terms(virtualHostsList, opLambda);
+    }
+
+    public void setVirtualHosts_Match(String virtualHosts) {
+        setVirtualHosts_Match(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Match(String virtualHosts, ConditionOptionCall<MatchQueryBuilder> opLambda) {
+        MatchQueryBuilder builder = regMatchQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_MatchPhrase(String virtualHosts) {
+        setVirtualHosts_MatchPhrase(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_MatchPhrase(String virtualHosts, ConditionOptionCall<MatchPhraseQueryBuilder> opLambda) {
+        MatchPhraseQueryBuilder builder = regMatchPhraseQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_MatchPhrasePrefix(String virtualHosts) {
+        setVirtualHosts_MatchPhrasePrefix(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_MatchPhrasePrefix(String virtualHosts, ConditionOptionCall<MatchPhrasePrefixQueryBuilder> opLambda) {
+        MatchPhrasePrefixQueryBuilder builder = regMatchPhrasePrefixQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Fuzzy(String virtualHosts) {
+        setVirtualHosts_Fuzzy(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Fuzzy(String virtualHosts, ConditionOptionCall<MatchQueryBuilder> opLambda) {
+        MatchQueryBuilder builder = regFuzzyQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Prefix(String virtualHosts) {
+        setVirtualHosts_Prefix(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Prefix(String virtualHosts, ConditionOptionCall<PrefixQueryBuilder> opLambda) {
+        PrefixQueryBuilder builder = regPrefixQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Wildcard(String virtualHosts) {
+        setVirtualHosts_Wildcard(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Wildcard(String virtualHosts, ConditionOptionCall<WildcardQueryBuilder> opLambda) {
+        WildcardQueryBuilder builder = regWildcardQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Regexp(String virtualHosts) {
+        setVirtualHosts_Regexp(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Regexp(String virtualHosts, ConditionOptionCall<RegexpQueryBuilder> opLambda) {
+        RegexpQueryBuilder builder = regRegexpQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_SpanTerm(String virtualHosts) {
+        setVirtualHosts_SpanTerm("virtualHosts", null);
+    }
+
+    public void setVirtualHosts_SpanTerm(String virtualHosts, ConditionOptionCall<SpanTermQueryBuilder> opLambda) {
+        SpanTermQueryBuilder builder = regSpanTermQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_GreaterThan(String virtualHosts) {
+        setVirtualHosts_GreaterThan(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_GreaterThan(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_GREATER_THAN, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_LessThan(String virtualHosts) {
+        setVirtualHosts_LessThan(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_LessThan(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_LESS_THAN, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_GreaterEqual(String virtualHosts) {
+        setVirtualHosts_GreaterEqual(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_GreaterEqual(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_GREATER_EQUAL, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_LessEqual(String virtualHosts) {
+        setVirtualHosts_LessEqual(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_LessEqual(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_LESS_EQUAL, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Exists() {
+        setVirtualHosts_Exists(null);
+    }
+
+    public void setVirtualHosts_Exists(ConditionOptionCall<ExistsQueryBuilder> opLambda) {
+        ExistsQueryBuilder builder = regExistsQ("virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_CommonTerms(String virtualHosts) {
+        setVirtualHosts_CommonTerms(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_CommonTerms(String virtualHosts, ConditionOptionCall<CommonTermsQueryBuilder> opLambda) {
+        CommonTermsQueryBuilder builder = regCommonTermsQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public BsDataConfigCQ addOrderBy_VirtualHosts_Asc() {
+        regOBA("virtualHosts");
+        return this;
+    }
+
+    public BsDataConfigCQ addOrderBy_VirtualHosts_Desc() {
+        regOBD("virtualHosts");
+        return this;
+    }
+
 }

+ 222 - 0
src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsFileConfigCQ.java

@@ -4398,4 +4398,226 @@ public abstract class BsFileConfigCQ extends EsAbstractConditionQuery {
         return this;
     }
 
+    public void setVirtualHosts_Equal(String virtualHosts) {
+        setVirtualHosts_Term(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Equal(String virtualHosts, ConditionOptionCall<TermQueryBuilder> opLambda) {
+        setVirtualHosts_Term(virtualHosts, opLambda);
+    }
+
+    public void setVirtualHosts_Term(String virtualHosts) {
+        setVirtualHosts_Term(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Term(String virtualHosts, ConditionOptionCall<TermQueryBuilder> opLambda) {
+        TermQueryBuilder builder = regTermQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_NotEqual(String virtualHosts) {
+        setVirtualHosts_NotTerm(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_NotTerm(String virtualHosts) {
+        setVirtualHosts_NotTerm(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_NotEqual(String virtualHosts, ConditionOptionCall<BoolQueryBuilder> opLambda) {
+        setVirtualHosts_NotTerm(virtualHosts, opLambda);
+    }
+
+    public void setVirtualHosts_NotTerm(String virtualHosts, ConditionOptionCall<BoolQueryBuilder> opLambda) {
+        not(not -> not.setVirtualHosts_Term(virtualHosts), opLambda);
+    }
+
+    public void setVirtualHosts_Terms(Collection<String> virtualHostsList) {
+        setVirtualHosts_Terms(virtualHostsList, null);
+    }
+
+    public void setVirtualHosts_Terms(Collection<String> virtualHostsList, ConditionOptionCall<TermsQueryBuilder> opLambda) {
+        TermsQueryBuilder builder = regTermsQ("virtualHosts", virtualHostsList);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_InScope(Collection<String> virtualHostsList) {
+        setVirtualHosts_Terms(virtualHostsList, null);
+    }
+
+    public void setVirtualHosts_InScope(Collection<String> virtualHostsList, ConditionOptionCall<TermsQueryBuilder> opLambda) {
+        setVirtualHosts_Terms(virtualHostsList, opLambda);
+    }
+
+    public void setVirtualHosts_Match(String virtualHosts) {
+        setVirtualHosts_Match(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Match(String virtualHosts, ConditionOptionCall<MatchQueryBuilder> opLambda) {
+        MatchQueryBuilder builder = regMatchQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_MatchPhrase(String virtualHosts) {
+        setVirtualHosts_MatchPhrase(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_MatchPhrase(String virtualHosts, ConditionOptionCall<MatchPhraseQueryBuilder> opLambda) {
+        MatchPhraseQueryBuilder builder = regMatchPhraseQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_MatchPhrasePrefix(String virtualHosts) {
+        setVirtualHosts_MatchPhrasePrefix(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_MatchPhrasePrefix(String virtualHosts, ConditionOptionCall<MatchPhrasePrefixQueryBuilder> opLambda) {
+        MatchPhrasePrefixQueryBuilder builder = regMatchPhrasePrefixQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Fuzzy(String virtualHosts) {
+        setVirtualHosts_Fuzzy(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Fuzzy(String virtualHosts, ConditionOptionCall<MatchQueryBuilder> opLambda) {
+        MatchQueryBuilder builder = regFuzzyQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Prefix(String virtualHosts) {
+        setVirtualHosts_Prefix(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Prefix(String virtualHosts, ConditionOptionCall<PrefixQueryBuilder> opLambda) {
+        PrefixQueryBuilder builder = regPrefixQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Wildcard(String virtualHosts) {
+        setVirtualHosts_Wildcard(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Wildcard(String virtualHosts, ConditionOptionCall<WildcardQueryBuilder> opLambda) {
+        WildcardQueryBuilder builder = regWildcardQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Regexp(String virtualHosts) {
+        setVirtualHosts_Regexp(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Regexp(String virtualHosts, ConditionOptionCall<RegexpQueryBuilder> opLambda) {
+        RegexpQueryBuilder builder = regRegexpQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_SpanTerm(String virtualHosts) {
+        setVirtualHosts_SpanTerm("virtualHosts", null);
+    }
+
+    public void setVirtualHosts_SpanTerm(String virtualHosts, ConditionOptionCall<SpanTermQueryBuilder> opLambda) {
+        SpanTermQueryBuilder builder = regSpanTermQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_GreaterThan(String virtualHosts) {
+        setVirtualHosts_GreaterThan(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_GreaterThan(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_GREATER_THAN, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_LessThan(String virtualHosts) {
+        setVirtualHosts_LessThan(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_LessThan(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_LESS_THAN, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_GreaterEqual(String virtualHosts) {
+        setVirtualHosts_GreaterEqual(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_GreaterEqual(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_GREATER_EQUAL, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_LessEqual(String virtualHosts) {
+        setVirtualHosts_LessEqual(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_LessEqual(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_LESS_EQUAL, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Exists() {
+        setVirtualHosts_Exists(null);
+    }
+
+    public void setVirtualHosts_Exists(ConditionOptionCall<ExistsQueryBuilder> opLambda) {
+        ExistsQueryBuilder builder = regExistsQ("virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_CommonTerms(String virtualHosts) {
+        setVirtualHosts_CommonTerms(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_CommonTerms(String virtualHosts, ConditionOptionCall<CommonTermsQueryBuilder> opLambda) {
+        CommonTermsQueryBuilder builder = regCommonTermsQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public BsFileConfigCQ addOrderBy_VirtualHosts_Asc() {
+        regOBA("virtualHosts");
+        return this;
+    }
+
+    public BsFileConfigCQ addOrderBy_VirtualHosts_Desc() {
+        regOBD("virtualHosts");
+        return this;
+    }
+
 }

+ 222 - 0
src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsWebConfigCQ.java

@@ -4619,4 +4619,226 @@ public abstract class BsWebConfigCQ extends EsAbstractConditionQuery {
         return this;
     }
 
+    public void setVirtualHosts_Equal(String virtualHosts) {
+        setVirtualHosts_Term(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Equal(String virtualHosts, ConditionOptionCall<TermQueryBuilder> opLambda) {
+        setVirtualHosts_Term(virtualHosts, opLambda);
+    }
+
+    public void setVirtualHosts_Term(String virtualHosts) {
+        setVirtualHosts_Term(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Term(String virtualHosts, ConditionOptionCall<TermQueryBuilder> opLambda) {
+        TermQueryBuilder builder = regTermQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_NotEqual(String virtualHosts) {
+        setVirtualHosts_NotTerm(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_NotTerm(String virtualHosts) {
+        setVirtualHosts_NotTerm(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_NotEqual(String virtualHosts, ConditionOptionCall<BoolQueryBuilder> opLambda) {
+        setVirtualHosts_NotTerm(virtualHosts, opLambda);
+    }
+
+    public void setVirtualHosts_NotTerm(String virtualHosts, ConditionOptionCall<BoolQueryBuilder> opLambda) {
+        not(not -> not.setVirtualHosts_Term(virtualHosts), opLambda);
+    }
+
+    public void setVirtualHosts_Terms(Collection<String> virtualHostsList) {
+        setVirtualHosts_Terms(virtualHostsList, null);
+    }
+
+    public void setVirtualHosts_Terms(Collection<String> virtualHostsList, ConditionOptionCall<TermsQueryBuilder> opLambda) {
+        TermsQueryBuilder builder = regTermsQ("virtualHosts", virtualHostsList);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_InScope(Collection<String> virtualHostsList) {
+        setVirtualHosts_Terms(virtualHostsList, null);
+    }
+
+    public void setVirtualHosts_InScope(Collection<String> virtualHostsList, ConditionOptionCall<TermsQueryBuilder> opLambda) {
+        setVirtualHosts_Terms(virtualHostsList, opLambda);
+    }
+
+    public void setVirtualHosts_Match(String virtualHosts) {
+        setVirtualHosts_Match(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Match(String virtualHosts, ConditionOptionCall<MatchQueryBuilder> opLambda) {
+        MatchQueryBuilder builder = regMatchQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_MatchPhrase(String virtualHosts) {
+        setVirtualHosts_MatchPhrase(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_MatchPhrase(String virtualHosts, ConditionOptionCall<MatchPhraseQueryBuilder> opLambda) {
+        MatchPhraseQueryBuilder builder = regMatchPhraseQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_MatchPhrasePrefix(String virtualHosts) {
+        setVirtualHosts_MatchPhrasePrefix(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_MatchPhrasePrefix(String virtualHosts, ConditionOptionCall<MatchPhrasePrefixQueryBuilder> opLambda) {
+        MatchPhrasePrefixQueryBuilder builder = regMatchPhrasePrefixQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Fuzzy(String virtualHosts) {
+        setVirtualHosts_Fuzzy(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Fuzzy(String virtualHosts, ConditionOptionCall<MatchQueryBuilder> opLambda) {
+        MatchQueryBuilder builder = regFuzzyQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Prefix(String virtualHosts) {
+        setVirtualHosts_Prefix(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Prefix(String virtualHosts, ConditionOptionCall<PrefixQueryBuilder> opLambda) {
+        PrefixQueryBuilder builder = regPrefixQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Wildcard(String virtualHosts) {
+        setVirtualHosts_Wildcard(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Wildcard(String virtualHosts, ConditionOptionCall<WildcardQueryBuilder> opLambda) {
+        WildcardQueryBuilder builder = regWildcardQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Regexp(String virtualHosts) {
+        setVirtualHosts_Regexp(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_Regexp(String virtualHosts, ConditionOptionCall<RegexpQueryBuilder> opLambda) {
+        RegexpQueryBuilder builder = regRegexpQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_SpanTerm(String virtualHosts) {
+        setVirtualHosts_SpanTerm("virtualHosts", null);
+    }
+
+    public void setVirtualHosts_SpanTerm(String virtualHosts, ConditionOptionCall<SpanTermQueryBuilder> opLambda) {
+        SpanTermQueryBuilder builder = regSpanTermQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_GreaterThan(String virtualHosts) {
+        setVirtualHosts_GreaterThan(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_GreaterThan(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_GREATER_THAN, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_LessThan(String virtualHosts) {
+        setVirtualHosts_LessThan(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_LessThan(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_LESS_THAN, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_GreaterEqual(String virtualHosts) {
+        setVirtualHosts_GreaterEqual(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_GreaterEqual(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_GREATER_EQUAL, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_LessEqual(String virtualHosts) {
+        setVirtualHosts_LessEqual(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_LessEqual(String virtualHosts, ConditionOptionCall<RangeQueryBuilder> opLambda) {
+        final Object _value = virtualHosts;
+        RangeQueryBuilder builder = regRangeQ("virtualHosts", ConditionKey.CK_LESS_EQUAL, _value);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_Exists() {
+        setVirtualHosts_Exists(null);
+    }
+
+    public void setVirtualHosts_Exists(ConditionOptionCall<ExistsQueryBuilder> opLambda) {
+        ExistsQueryBuilder builder = regExistsQ("virtualHosts");
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public void setVirtualHosts_CommonTerms(String virtualHosts) {
+        setVirtualHosts_CommonTerms(virtualHosts, null);
+    }
+
+    public void setVirtualHosts_CommonTerms(String virtualHosts, ConditionOptionCall<CommonTermsQueryBuilder> opLambda) {
+        CommonTermsQueryBuilder builder = regCommonTermsQ("virtualHosts", virtualHosts);
+        if (opLambda != null) {
+            opLambda.callback(builder);
+        }
+    }
+
+    public BsWebConfigCQ addOrderBy_VirtualHosts_Asc() {
+        regOBA("virtualHosts");
+        return this;
+    }
+
+    public BsWebConfigCQ addOrderBy_VirtualHosts_Desc() {
+        regOBD("virtualHosts");
+        return this;
+    }
+
 }

+ 2 - 0
src/main/java/org/codelibs/fess/es/config/exentity/CrawlingConfig.java

@@ -27,6 +27,8 @@ public interface CrawlingConfig {
 
     String[] getPermissions();
 
+    String[] getVirtualHosts();
+
     String[] getLabelTypeValues();
 
     String getDocumentBoost();

+ 5 - 0
src/main/java/org/codelibs/fess/es/config/exentity/CrawlingConfigWrapper.java

@@ -42,6 +42,11 @@ public class CrawlingConfigWrapper implements CrawlingConfig {
         return crawlingConfig.getPermissions();
     }
 
+    @Override
+    public String[] getVirtualHosts() {
+        return crawlingConfig.getVirtualHosts();
+    }
+
     @Override
     public String[] getLabelTypeValues() {
         return crawlingConfig.getLabelTypeValues();

+ 3 - 0
src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java

@@ -1052,6 +1052,9 @@ public class FessLabels extends UserMessages {
     /** The key of the message: Permissions */
     public static final String LABELS_PERMISSIONS = "{labels.permissions}";
 
+    /** The key of the message: Virtual Hosts */
+    public static final String LABELS_virtual_hosts = "{labels.virtual_hosts}";
+
     /** The key of the message: Label */
     public static final String LABELS_label_type = "{labels.label_type}";
 

+ 15 - 0
src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java

@@ -393,6 +393,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     /** The key of the configuration. e.g. thumbnail */
     String INDEX_FIELD_THUMBNAIL = "index.field.thumbnail";
 
+    /** The key of the configuration. e.g. virtual_host */
+    String INDEX_FIELD_virtual_host = "index.field.virtual_host";
+
     /** The key of the configuration. e.g. content_title */
     String RESPONSE_FIELD_content_title = "response.field.content_title";
 
@@ -2414,6 +2417,13 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
      */
     String getIndexFieldThumbnail();
 
+    /**
+     * Get the value for the key 'index.field.virtual_host'. <br>
+     * The value is, e.g. virtual_host <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     */
+    String getIndexFieldVirtualHost();
+
     /**
      * Get the value for the key 'response.field.content_title'. <br>
      * The value is, e.g. content_title <br>
@@ -5855,6 +5865,10 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             return get(FessConfig.INDEX_FIELD_THUMBNAIL);
         }
 
+        public String getIndexFieldVirtualHost() {
+            return get(FessConfig.INDEX_FIELD_virtual_host);
+        }
+
         public String getResponseFieldContentTitle() {
             return get(FessConfig.RESPONSE_FIELD_content_title);
         }
@@ -7481,6 +7495,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             defaultMap.put(FessConfig.INDEX_FIELD_FILETYPE, "filetype");
             defaultMap.put(FessConfig.INDEX_FIELD_FILENAME, "filename");
             defaultMap.put(FessConfig.INDEX_FIELD_THUMBNAIL, "thumbnail");
+            defaultMap.put(FessConfig.INDEX_FIELD_virtual_host, "virtual_host");
             defaultMap.put(FessConfig.RESPONSE_FIELD_content_title, "content_title");
             defaultMap.put(FessConfig.RESPONSE_FIELD_content_description, "content_description");
             defaultMap.put(FessConfig.RESPONSE_FIELD_url_link, "url_link");

+ 1 - 0
src/main/resources/fess_config.properties

@@ -186,6 +186,7 @@ index.field.content_length=content_length
 index.field.filetype=filetype
 index.field.filename=filename
 index.field.thumbnail=thumbnail
+index.field.virtual_host=virtual_host
 response.field.content_title=content_title
 response.field.content_description=content_description
 response.field.url_link=url_link

+ 3 - 0
src/main/resources/fess_indices/.fess_config/data_config.json

@@ -28,6 +28,9 @@
       "permissions": {
         "type": "keyword"
       },
+      "virtualHosts": {
+        "type": "keyword"
+      },
       "sortOrder": {
         "type": "integer"
       },

+ 3 - 0
src/main/resources/fess_indices/.fess_config/file_config.json

@@ -52,6 +52,9 @@
       "permissions": {
         "type": "keyword"
       },
+      "virtualHosts": {
+        "type": "keyword"
+      },
       "sortOrder": {
         "type": "integer"
       },

+ 3 - 0
src/main/resources/fess_indices/.fess_config/web_config.json

@@ -55,6 +55,9 @@
       "permissions": {
         "type": "keyword"
       },
+      "virtualHosts": {
+        "type": "keyword"
+      },
       "sortOrder": {
         "type": "integer"
       },

+ 3 - 0
src/main/resources/fess_indices/fess/doc.json

@@ -574,6 +574,9 @@
       "label": {
         "type": "keyword"
       },
+      "virtual_host": {
+        "type": "keyword"
+      },
       "segment": {
         "type": "keyword"
       },

+ 1 - 0
src/main/resources/fess_label.properties

@@ -341,6 +341,7 @@ labels.number_of_thread=The number of Tread
 labels.interval_time=Interval time
 labels.millisec=ms
 labels.permissions=Permissions
+labels.virtual_hosts=Virtual Hosts
 labels.label_type=Label
 labels.file_crawling_button_create=Create
 labels.file_crawling_button_create_job=Create new job

+ 1 - 0
src/main/resources/fess_label_en.properties

@@ -341,6 +341,7 @@ labels.number_of_thread=The number of Tread
 labels.interval_time=Interval time
 labels.millisec=ms
 labels.permissions=Permissions
+labels.virtual_hosts=Virtual Hosts
 labels.label_type=Label
 labels.file_crawling_button_create=Create
 labels.file_crawling_button_create_job=Create new job

+ 1 - 0
src/main/resources/fess_label_ja.properties

@@ -334,6 +334,7 @@ labels.number_of_thread=\u30b9\u30ec\u30c3\u30c9\u6570
 labels.interval_time=\u9593\u9694
 labels.millisec=\u30df\u30ea\u79d2
 labels.permissions=\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3
+labels.virtual_hosts=\u4eee\u60f3\u30db\u30b9\u30c8
 labels.label_type=\u30e9\u30d9\u30eb
 labels.file_crawling_button_create=\u4f5c\u6210
 labels.file_crawling_button_create_job=\u65b0\u3057\u3044\u30b8\u30e7\u30d6\u306e\u4f5c\u6210

+ 5 - 0
src/main/webapp/WEB-INF/view/admin/dataconfig/admin_dataconfig_details.jsp

@@ -87,6 +87,11 @@
 												<td>${f:br(f:h(permissions))}<la:hidden
 														property="permissions" /></td>
 											</tr>
+											<tr>
+												<th><la:message key="labels.virtual_hosts" /></th>
+												<td>${f:br(f:h(virtualHosts))}<la:hidden
+														property="virtualHosts" /></td>
+											</tr>
 											<tr>
 												<th><la:message key="labels.label_type" /></th>
 												<td><c:forEach var="l" varStatus="s"

+ 9 - 0
src/main/webapp/WEB-INF/view/admin/dataconfig/admin_dataconfig_edit.jsp

@@ -102,6 +102,15 @@
 												rows="5" />
 										</div>
 									</div>
+									<div class="form-group">
+										<label for="virtualHosts" class="col-sm-3 control-label"><la:message
+												key="labels.virtual_hosts" /></label>
+										<div class="col-sm-9">
+											<la:errors property="virtualHosts" />
+											<la:textarea styleId="virtualHosts" property="virtualHosts" styleClass="form-control"
+												rows="5" />
+										</div>
+									</div>
 									<div class="form-group">
 										<label for="labelTypeIds" class="col-sm-3 control-label"><la:message
 												key="labels.label_type" /></label>

+ 5 - 0
src/main/webapp/WEB-INF/view/admin/fileconfig/admin_fileconfig_details.jsp

@@ -117,6 +117,11 @@
 												<td>${f:br(f:h(permissions))}<la:hidden
 														property="permissions" /></td>
 											</tr>
+											<tr>
+												<th><la:message key="labels.virtual_hosts" /></th>
+												<td>${f:br(f:h(virtualHosts))}<la:hidden
+														property="virtualHosts" /></td>
+											</tr>
 											<tr>
 												<th><la:message key="labels.label_type" /></th>
 												<td><c:forEach var="l" varStatus="s"

+ 9 - 0
src/main/webapp/WEB-INF/view/admin/fileconfig/admin_fileconfig_edit.jsp

@@ -165,6 +165,15 @@
 												rows="5" />
 										</div>
 									</div>
+									<div class="form-group">
+										<label for="virtualHosts" class="col-sm-3 control-label"><la:message
+												key="labels.virtual_hosts" /></label>
+										<div class="col-sm-9">
+											<la:errors property="virtualHosts" />
+											<la:textarea styleId="virtualHosts" property="virtualHosts" styleClass="form-control"
+												rows="5" />
+										</div>
+									</div>
 									<div class="form-group">
 										<label for="labelTypeIds" class="col-sm-3 control-label"><la:message
 												key="labels.label_type" /></label>

+ 5 - 0
src/main/webapp/WEB-INF/view/admin/webconfig/admin_webconfig_details.jsp

@@ -121,6 +121,11 @@
 												<td>${f:br(f:h(permissions))}<la:hidden
 														property="permissions" /></td>
 											</tr>
+											<tr>
+												<th><la:message key="labels.virtual_hosts" /></th>
+												<td>${f:br(f:h(virtualHosts))}<la:hidden
+														property="virtualHosts" /></td>
+											</tr>
 											<tr>
 												<th><la:message key="labels.label_type" /></th>
 												<td><c:forEach var="l" varStatus="s"

+ 9 - 0
src/main/webapp/WEB-INF/view/admin/webconfig/admin_webconfig_edit.jsp

@@ -173,6 +173,15 @@
 												rows="5" />
 										</div>
 									</div>
+									<div class="form-group">
+										<label for="virtualHosts" class="col-sm-3 control-label"><la:message
+												key="labels.virtual_hosts" /></label>
+										<div class="col-sm-9">
+											<la:errors property="virtualHosts" />
+											<la:textarea styleId="virtualHosts" property="virtualHosts" styleClass="form-control"
+												rows="5" />
+										</div>
+									</div>
 									<div class="form-group">
 										<label for="labelTypeIds" class="col-sm-3 control-label"><la:message
 												key="labels.label_type" /></label>