Overview
The Fess crawler is a feature that automatically collects content from websites, file systems, and other sources and registers it in the search index. This guide explains the basic concepts and configuration methods for the crawler.
Basic Crawler Concepts
What is a Crawler
A crawler is a program that automatically collects content by following links starting from specified URLs or file paths.
The Fess crawler has the following features:
Multi-protocol support: HTTP/HTTPS, file systems, SMB, FTP, etc.
Scheduled execution: Periodic automatic crawling
Incremental crawling: Updates only changed content
Parallel processing: Simultaneous crawling of multiple URLs
Robots.txt compliance: Respects robots.txt
Crawler Types
Fess provides the following crawler types depending on the target:
Creating Crawl Configurations
Adding Basic Crawl Configuration
Access the Administration Screen
Access
http://localhost:8080/adminin your browser and log in as administrator.Open Crawler Configuration Screen
Select “Crawler” → “Web” or “File System” from the left menu.
Create New Configuration
Click the “New” button.
Enter Basic Information
Name: Identifier for the crawl configuration (e.g., Corporate Wiki)
URL: Crawl start URL (e.g.,
https://wiki.example.com/)Interval: Access interval per URL in milliseconds (e.g., 10000)
Thread Count: Number of parallel crawls (e.g., 5)
Depth: Link traversal depth (e.g., 3)
Save
Click the “Create” button to save the configuration.
Web Crawler Configuration Examples
Crawling Internal Intranet Site
Crawling Public Website
File Crawler Configuration Examples
Local File System
Authentication Configuration
To access sites or file servers that require authentication, configure authentication credentials.
Select “Crawler” → “Web Authentication” (or “File Authentication” for file servers) in the administration screen
Click “New”
Enter authentication information:
Note
The Scheme is selected from Basic / Digest / NTLM / Form. You must also select the target crawl configuration in the “Web Config” field (or “File System Config” for file authentication); credentials are tied to a crawl configuration.
Click “Create”
Running Crawls
Manual Execution
To run a configured crawl immediately, start the crawler job from the Scheduler menu.
Open the “Scheduler” menu
Select the “Default Crawler” job
Click the “Start Now” button
Check the job execution status
Note
The crawl config (Web / File System) list pages do NOT have an individual “Start” button; crawls run per scheduler job. The “Default Crawler” job runs against all enabled crawl configurations.
Scheduled Execution
To run crawls periodically:
Open the “Scheduler” menu
Select the “Default Crawler” job
Set the schedule expression (Cron format)
Click “Update”
Note
The Fess scheduler uses cron4j-style expressions with 5 fields (minute hour day-of-month month day-of-week). There is no seconds field and no ? character (unlike Quartz). Day-of-week is 0 (Sunday) to 6 (Saturday).
Checking Crawl Status
To check running crawl status:
Open the “Scheduler” menu
Check running jobs
Check details in logs:
Note
The above path is for RPM/DEB package installations. For zip/tar.gz deployments, logs are located under the
logs/directory.
Basic Configuration Items
Restricting Crawl Targets
Restrictions by URL Pattern
You can restrict crawling to specific URL patterns or exclude them.
Include URL patterns (regular expressions):
Exclude URL patterns (regular expressions):
Depth Restriction
Restrict the depth of link traversal:
0: Start URL only
1: Start URL and pages linked from it
blank (unset): Unlimited (follow all links)
Note
The admin UI “Depth” field accepts only integers >= 0; to crawl with unlimited depth, leave the field blank (internally treated as -1, meaning unlimited).
Maximum Access Count
Upper limit on the number of pages to crawl:
Stops after crawling 1000 pages. Leaving the field blank means unlimited (no cap).
Parallel Crawl Count (Thread Count)
Specifies the number of URLs to crawl simultaneously.
Warning
Increasing thread count too much places excessive load on the crawl target server. Set an appropriate value.
Note
The default thread count for new configs is 1 for the Web crawler and 5 for the File crawler. The default request interval is 10000 ms for the Web crawler and 1000 ms for the File crawler.
Crawl Interval
Specifies the frequency of crawl execution.
File Size Configuration
You can set upper limits for crawled file sizes.
Maximum File Size to Retrieve
Add the following to “Configuration Parameters” in crawler configuration:
Retrieves files up to 10MB. Default is unlimited.
Note
When crawling large files, also adjust memory settings. See Memory Configuration for details.
Maximum File Size to Index
You can set upper limits for indexing sizes by file type.
Default values:
HTML files: 2.5MB
Other files: 10MB
Configuration file: app/WEB-INF/classes/crawler/contentlength.xml
Default configuration:
Customization example (adding PDF file processing up to 5MB):
Warning
When increasing file sizes to handle, also increase crawler memory settings.
Note
If the document size exceeds 50MB, you also need to change the OpenSearch settings. OpenSearch limits the maximum length of string fields in JSON content to 50MB by default.
Add the following to opensearch.yml:
The above example sets the limit to 100MB. For details, see the OpenSearch documentation.
Word Length Restrictions
Overview
Long alphanumeric strings or consecutive symbols cause index size increases and performance degradation. Therefore, Fess sets the following restrictions by default:
Consecutive alphanumeric characters: Up to 20 characters
Consecutive symbols: Up to 10 characters
Configuration Method
Edit fess_config.properties.
Default settings:
Example: Relaxing restrictions
Note
If you need to search by long alphanumeric strings (e.g., serial numbers, tokens), increase this value. However, index size will increase.
Proxy Configuration
Overview
When crawling external sites from within an intranet, they may be blocked by a firewall. In such cases, crawl via a proxy server.
Configuration Method
Add the following to “Configuration Parameters” in the crawl configuration on the administration screen.
Basic proxy configuration:
Authenticated proxy:
Exclude specific hosts from proxy:
Hosts to exclude from proxy are not set in the crawl configuration parameters, but via JVM system properties. Set the FESS_NON_PROXY_HOSTS environment variable in fess.in.sh (Linux/Mac) or fess.in.bat (Windows).
Proxy common to all crawl configurations
To apply a proxy to all crawl configurations that do not set their own client.proxyHost / client.proxyPort, configure the following in fess_config.properties (per-config values take precedence):
System-wide (JVM) proxy
To route ALL Fess HTTP traffic (crawler, SSO, LLM) through a proxy, set environment variables in fess.in.sh (Linux/Mac) or fess.in.bat (Windows). These become JVM system properties (-Dhttp.proxyHost etc.):
Note
FESS_PROXY_HOST / FESS_PROXY_PORT apply to both HTTP and HTTPS. The shell http_proxy / https_proxy / no_proxy environment variables are NOT read by the JVM and have no effect.
robots.txt Configuration
Overview
robots.txt is a file that instructs crawlers whether crawling is allowed. Fess respects robots.txt by default.
Configuration Method
To ignore robots.txt, edit fess_config.properties.
The default value of crawler.ignore.robots.txt is false (Fess obeys robots.txt). Set it to true to ignore robots.txt.
To also ignore HTML robots meta tags (noindex / nofollow), use the following property (default false):
Warning
When crawling external sites, respect robots.txt. Ignoring it may place excessive load on servers or violate terms of service.
User-Agent Configuration
You can change the crawler’s User-Agent.
For the Web crawler
The Web crawler has a dedicated “User Agent” field in the crawl config edit screen. Enter the desired user-agent string in that field:
Note
In Web crawl configs, specifying client.userAgent in Config Parameters is overridden by the dedicated User Agent field. Always use the dedicated field for the Web crawler.
For the file crawler and others
Crawlers without a dedicated user-agent field use client.userAgent in Config Parameters:
Encoding Configuration
Crawl Data Encoding
Configure in fess_config.properties:
Filename Encoding
Filename encoding for file systems:
Crawl Troubleshooting
Crawl Does Not Start
Checks:
Verify scheduler is enabled
Check if “Default Crawler” job is enabled in “Scheduler” menu
Verify crawl configuration is enabled
Check if target configuration is enabled in crawl configuration list
Check logs
Crawl Stops Midway
Possible causes:
Memory shortage
Check for
OutOfMemoryErrorinfess-crawler.logIncrease crawler memory (see Memory Configuration)
Network errors
Adjust timeouts via Config Parameters:
client.connectionTimeoutis the connection-establishment timeout andclient.soTimeoutis the data-receive timeout, both in milliseconds.
Crawl target errors
Check if 404 errors are occurring frequently
Check error details in logs
Specific Page Not Crawled
Checks:
Check URL patterns
Verify page is not matched by exclude URL patterns
Check robots.txt
Check target site’s
/robots.txt
Check authentication
For pages requiring authentication, verify authentication settings
Depth restriction
Verify link depth does not exceed depth restriction
Maximum access count
Verify maximum access count has not been reached
Slow Crawling
Countermeasures:
Increase thread count
Increase parallel crawl count (but be mindful of target server load)
Exclude unnecessary URLs
Add images and CSS files to exclude URL patterns
Adjust timeout settings
For slow-responding sites, shorten timeout
Increase crawler memory
Best Practices
Crawl Configuration Recommendations
Set appropriate thread count
Set an appropriate thread count to avoid placing excessive load on target servers.
Optimize URL patterns
Exclude unnecessary files (images, CSS, JavaScript, etc.) to reduce crawl time and improve index quality.
Set depth restrictions
Set appropriate depth based on site structure. Leave the Depth field blank (unlimited) only when crawling the entire site.
Set maximum access count
Set an upper limit to avoid crawling unexpectedly large numbers of pages.
Adjust crawl interval
Set appropriate intervals based on update frequency. - Frequently updated sites: Every 1 hour to several hours - Infrequently updated sites: Once per day to once per week
Schedule Configuration Recommendations
Night execution
Execute during low server load times (e.g., 2 AM).
Avoid duplicate execution
Configure to start next crawl after previous crawl completes.
Error notifications
Configure email notifications for crawl failures.
References
Advanced Crawler Configuration - Advanced Crawler Configuration
Thumbnail Configuration - Thumbnail Configuration
Memory Configuration - Memory Configuration
Log Configuration - Log Configuration