If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: docs.joinmastodon.org/admin/elasticsearch - Configuring full-text search -.

site address: docs.joinmastodon.org/admin/elasticsearch redirected to: docs.joinmastodon.org/admin/elasticsearch

site title: Configuring full-text search - Mastodon documentation

Our opinion (on Thursday 02 July 2026 21:06:45 UTC):

GREEN status (no comments) - no comments
After content analysis of this website we propose the following hashtags:



Meta tags:
description=Setting up Elasticsearch to search for statuses (authored, favourited, or mentioned), public indexable status, and accounts;

Headings (most frequently used words):

search, configuring, optimization, the, full, text, installing, elasticsearch, mastodon, for, other, languages, sponsored, by, choosing, correct, preset, security, populate, indices, chinese, reduced, permissions, in, shared, environments,

Text of the page (most frequently used words):
the (58), elasticsearch (50), and (31), #mastodon (26), you (26), for (25), your (25), with (16), #search (16), admin (16), indices (15), will (12), this (11), can (11), that (10), use (9), memory (9), more (9), using (8), ram (8), role (8), elastic (8), security (8), etc (7), are (7), which (7), creating (7), should (7), full (7), content (6), value (6), only (6), other (6), not (6), set (6), text (6), example (6), new (6), access (6), server (6), user (6), cluster (6), have (6), configuring (6), accounts (6), same (5), add (5), index (5), following (5), installing (5), systemctl (5), create (5), options (5), machine (5), limit (5), documentation (5), setting (5), from (5), apt (5), those (4), every (4), filter (4), all (4), code (4), within (4), file (4), install (4), optimization (4), any (4), restart (4), size (4), than (4), jvm (4), now (4), them (4), apps (4), once (4), configure (4), password (4), localhost (4), please (4), features (4), configured (4), https (4), their (4), statuses (4), instance (4), profile (4), account (4), api (4), oauth (4), type (3), analyzer (3), make (3), changes (3), default (3), languages (3), configuration (3), values (3), available (3), production (3), data (3), users (3), names (3), running (3), environment (3), application (3), 9200 (3), official (3), nodes (3), allow (3), small_cluster (3), start (3), network (3), list (3), public (3), preferences (3), reports (3), source (2), improve (2), char_filter (2), tsconvert (2), stconvert (2), has (2), definition (2), tokenizer (2), after (2), need (2), modify (2), app (2), chewy (2), analysis (2), before (2), sure (2), extensions (2), chinese (2), language (2), support (2), require (2), may (2), well (2), others (2), supports (2), crashes (2), try (2), number (2), xmx (2), represents (2), total (2), heap (2), space (2), xms (2), edit (2), rule (2), allocate (2), directory (2), reload (2), populate (2), shared (2), multiple (2), also (2), es_prefix (2), secure (2), l0ng (2), r4nd0m (2), ssw0rd (2), es_pass (2), es_user (2), env (2), done (2), created (2), creation (2), roles (2), mastodon_full_access (2), curl (2), post (2), admin_password (2), json (2), _security (2), pretty (2), adapt (2), snippet (2), monitor (2), true (2), guide (2), does (2), authentication (2), strongly (2), installation (2), shards (2), large_cluster (2), replica (2), single_node_cluster (2), best (2), setup (2), es_preset (2), choosing (2), correct (2), preset (2), note (2), performance (2), services (2), reserve (2), troubleshooting (2), host (2), main (2), instructions (2), usr (2), share (2), keyrings (2), asc (2), artifacts (2), version (2), database (2), bookmarks (2), favourites (2), own (2), results (2), status (2), notificationpolicy (2), report (2), quote (2), domainblock (2), notifications (2), trends (2), collections (2), domain_blocks (2), tokens (2), implementing (2), posts (2), imprint, view, blog, join, sponsored, last, updated, january, 2026, page, files, section, option, t2s, convert_type, delimiter, false, keep_both, between, sections, replace, whitespace, standard, keyword, occurrences, ik_max_word, installed, definitions, generate, _index, adding, attempted, comfortable, modifying, ruby, tuned, english, western, perform, modified, reviewing, useful, prepare, these, docs, retry, still, higher, save, xmx2048m, xms2048m, both, maximum, initial, allocated, needs, thumb, about, open, nano, could, java, virtual, provides, while, bin, tootctl, deploy, rails_env, live, time, fill, web, sidekiq, saving, processes, take, effect, changing, where, matches, prefix, operate, appropriate, app_prefix, app_prefix_, consumers, installs, addition, described, above, isolate, generated, indexes, provide, limited, reduced, permissions, environments, much, adjust, credentials, newly, customize, assign, privileges, read, write, manage, custom, connect, passwords, built, enabling, xpack, enabled, refer, through, handle, request, made, permission, advise, servers, planning, unique, differentiate, distributed, over, less, one, node, without, depends, used, replicas, tls, prepend, hostname, com, es_port, es_host, es_enabled, variables, enable, daemon, maximise, identify, sustained, impact, run, identified, always, able, seach, heavy, situations, right, see, managing, xmx24g, xms16g, might, want, its, consumption, supposed, bind, inaccessible, outside, check, address, binds, looking, consider, anyone, who, there, layer, really, important, secured, having, firewall, exposes, 443, ports, advisable, outlined, multi, must, know, how, internal, traffic, yml, warning, update, echo, sources, deb, signed, packages, stable, wget, gpg, key, repository, tested, end, life, opensearch, versions, but, setups, officially, supported, relate, significant, requirements, easily, outpace, itself, deliberately, searching, arbitrary, strings, entire, display, name, usernames, bios, mentions, opted, into, appearing, allows, logged, find, when, recommended, feature, authored, favourited, mentioned, indexable, webpushsubscription, translation, token, termsofservice, tag, suggestion, statussource, statusedit, shallowtag, shallowquote, scheduledstatus, relationshipseveranceevent, relationship, reaction, quoteapproval, privacypolicy, previewcardauthor, previewcard, poll, notificationrequest, notificationfallback, notification, mediaattachment, marker, identityproof, filterstatus, filterresult, filterkeyword, featuredtag, featureapproval, familiarfollowers, extendeddescription, error, customemoji, conversation, context, collectionwithaccounts, collectionitem, collection, asyncrefresh, appeal, annualreport, announcement, measure, ipblock, emaildomainblock, domainallow, dimension, cohort, canonicalemailblock, accountwarning, entities, streaming, markers, lists, conversations, timelines, scheduled_statuses, polls, media, proofs, oembed, push, custom_emojis, announcements, health, grouped, async_refreshes, emails, annual, retention, measures, ip_blocks, email_domain_blocks, domain_allows, dimensions, canonical_email_blocks, tags, suggestions, mutes, followed_tags, follow_requests, filters, featured_tags, endorsements, blocks, methods, rate, limits, scopes, guidelines, practices, datetime, formats, rest, bearcaps, microformats, webfinger, activitypub, spec, compliance, design, reference, themes, css, styling, state, management, components, frontend, issues, responsible, disclosure, routes, structure, dev, technical, overview, contributing, libraries, implementations, logging, obtaining, client, playing, getting, started, developing, webhooks, corruption, errors, moderation, actions, scaling, migrating, backing, upgrading, release, cli, single, sign, captcha, onion, object, storage, optional, preparing, ios, android, moving, leaving, externally, settings, promoting, yourself, dealing, unwanted, quoting, posting, signing, what,


Text of the page (random words):
configuring full text search mastodon documentation what is mastodon using mastodon signing up for an account setting up your profile posting to your profile using the network features quoting other posts dealing with unwanted content promoting yourself and others set your preferences more settings using mastodon externally moving or leaving accounts official ios and android apps running your own server running mastodon preparing your machine installing from source configuring your environment configuring full text search installing optional features object storage onion services captcha single sign on setting up your new instance using the admin cli upgrading to a new release backing up your server migrating to a new machine scaling up your server moderation actions troubleshooting errors database index corruption webhooks roles developing mastodon apps getting started with the api playing with public data obtaining client app access logging in with an account libraries and implementations implementing quote posts implementing collections contributing to mastodon technical overview setting up a dev environment code structure routes security issues and responsible disclosure frontend guide components state management css and styling creating themes design tokens reference spec compliance activitypub webfinger security microformats oauth bearcaps rest api datetime formats guidelines and best practices oauth tokens oauth scopes rate limits api methods accounts blocks bookmarks domain_blocks endorsements favourites featured_tags filters follow_requests followed_tags mutes preferences reports suggestions tags admin accounts canonical_email_blocks dimensions domain_allows domain_blocks email_domain_blocks ip_blocks measures reports retention trends annual reports apps emails oauth async_refreshes collections grouped notifications health instance announcements custom_emojis directory trends notifications push oembed profile proofs search statuses media polls scheduled_statuses timelines conversations lists markers streaming api entities account accountwarning admin account admin canonicalemailblock admin cohort admin dimension admin domainallow admin domainblock admin emaildomainblock admin ip admin ipblock admin measure admin report announcement annualreport appeal application asyncrefresh collection collectionitem collectionwithaccounts context conversation customemoji domainblock error extendeddescription familiarfollowers featureapproval featuredtag filter filterkeyword filterresult filterstatus identityproof instance list marker mediaattachment notification notificationfallback notificationpolicy notificationrequest poll preferences previewcard previewcardauthor privacypolicy profile quote quoteapproval reaction relationship relationshipseveranceevent report role rule scheduledstatus search shallowquote shallowtag status statusedit statussource suggestion tag termsofservice token translation v1 filter v1 instance v1 notificationpolicy webpushsubscription configuring full text search setting up elasticsearch to search for statuses authored favourited or mentioned public indexable status and accounts installing elasticsearch configuring mastodon choosing the correct preset security populate the indices search optimization for other languages chinese search optimization mastodon supports full text search when elasticsearch is available it is strongly recommended to configure this feature mastodon s full text search allows logged in users to find results from public statuses from accounts that opted into appearing in search results their own statuses their mentions their favourites their bookmarks accounts display name usernames and bios it deliberately does not allow searching for arbitrary strings in the entire database please note that elasticsearch has significant memory requirements which can easily outpace those of mastodon itself installing elasticsearch mastodon is tested with elasticsearch version 7 which is now end of life it should support opensearch as well as elasticsearch versions 8 and 9 but those setups are not officially supported the install instructions within this documentation relate to elasticsearch version 7 only add the official elasticsearch repository to apt wget o usr share keyrings elasticsearch asc https artifacts elastic co gpg key elasticsearch echo deb signed by usr share keyrings elasticsearch asc https artifacts elastic co packages 7 x apt stable main etc apt sources list d elastic 7 x list now you can install elasticsearch apt update apt install elasticsearch security warning by default elasticsearch is supposed to bind to localhost only i e be inaccessible from the outside network you can check which address elasticsearch binds to by looking at network host within etc elasticsearch elasticsearch yml consider that anyone who can access elasticsearch can access and modify any data within it as there is no authentication layer so it s really important that the access is secured having a firewall that only exposes the 22 80 and 443 ports is advisable as outlined in the main installation instructions if you have a multi host setup you must know how to secure internal traffic before you start elasticsearch you might want to limit its ram consumption a ram limit can be set be creating a new file etc elasticsearch jvm options d limit ram options with the following content limit ram size to 24 gb xms16g xmx24g this will reserve 16 gb of ram for elasticsearch right from the start and allow it to use up to 24 gb of ram also see managing and troubleshooting elasticsearch memory to maximise the performance of your elasticsearch cluster you should identify a ram value which can be sustained and which will not impact other services on the machine you run elasticsearch on once identified you should set the xms and xmx values to this value elasticsearch will reserve this memory and will always be able to make full use of this memory which in seach heavy situations will improve performance to start elasticsearch systemctl daemon reload systemctl enable now elasticsearch configuring mastodon edit env production to add the following variables es_enabled true es_host localhost es_port 9200 es_preset single_node_cluster small_cluster or large_cluster es_user es_pass note if using tls prepend the hostname with https for example https elastic example com choosing the correct preset the value for es_preset depends on the size of your elasticsearch and will be used to set the number of shards and replicas for your indices to the best value for your setup single_node_cluster if you only have one node in your elasticsearch cluster indices will be configured without any replica small_cluster if you have less than 6 nodes in your cluster indices will be configured with 1 replica large_cluster if you have 6 or more nodes in your cluster indices will be configured with more shards than with the small_cluster setting to allow them to be distributed over more nodes if you have multiple mastodon servers on the same machine and you are planning to use the same elasticsearch installation for all of them make sure that all of them have unique es_prefix values configured to differentiate the indices security by default elasticsearch does not handle any authentication and every request is made with full admin permission we strongly advise you to configure elasticsearch security features on your cluster to configure it please refer to the official documentation it will guide you through enabling the security features xpack security enabled true creating passwords for built in users once done you can create a custom role for mastodon to connect for example please adapt this snippet to use your elastic admin password curl x post u elastic admin_password localhost 9200 _security role mastodon_full_access pretty h content type application json d cluster monitor indices names privileges read monitor write manage elasticsearch documentation for role creation once the role is created you can create a user for the mastodon server to use and assign it the role for example please adapt this snippet to use your elastic admin password and customize your new user mastodon user password curl x post u elastic admin_password localhost 9200 _security user mastodon pretty h content type application json d password l0ng r4nd0m p ssw0rd roles mastodon_full_access elasticsearch documentation for user creation once this is done you need to configure mastodon to use the credentials for your newly created user in env production adjust your configuration es_user mastodon es_pass l0ng r4nd0m p ssw0rd you are all set and your elasticsearch server should be much more secure reduced permissions in shared environments if you are running in a shared environment with multiple consumers of the same es server mastodon installs other apps etc in addition to using es_prefix as described above to isolate the generated search indexes you can also provide more limited access to the role you create for example changing names to names app_prefix_ where app_prefix matches the value you are using as an index prefix will limit the access of the users with that role to operate only on the appropriate indices populate the indices after saving the new configuration restart mastodon processes for it to take effect systemctl restart mastodon sidekiq systemctl reload mastodon web now it s time to create the elasticsearch indices and fill them with data su mastodon cd live rails_env production bin tootctl search deploy creating elasticsearch indices could require more memory than the jvm java virtual machine provides if elasticsearch crashes while creating indices try to allocate more memory create and open a file in the directory etc elasticsearch jvm options d for example nano etc elasticsearch jvm options d ram options add following text and edit the allocated memory to your needs as a rule of thumb elasticsearch should use about 25 50 of your available memory do not allocate more memory than available xms represents the initial size of total heap space xmx represents the maximum size of total heap space both values should be the same xms2048m xmx2048m save the file restart elasticsearch using systemctl restart elasticsearch retry creating elasticsearch indices if elasticsearch still crashes try to set a higher number search optimization for other languages the default analyzer is tuned for english and other western languages and may not perform as well with others this configuration can be modified for any language that elasticsearch supports reviewing the chewy index docs may be useful to prepare for these changes adding language support will require code changes and should only be attempted if you are comfortable modifying ruby code and installing es extensions chinese search optimization before creating indices in elasticsearch be sure to install the following extensions elasticsearch analysis ik elasticsearch analysis stconvert after those are installed you need to modify the code definitions which generate the search indices within every index definition file app chewy _index rb make the following changes replace all tokenizer value whitespace standard keyword etc occurrences with tokenizer ik_max_word in every index that has an analyzer content definition between the filter and analyzer sections add char_filter tsconvert type stconvert keep_both false delimiter convert_type t2s in those same files in every content section add an option of char_filter w tsconvert to use that filter last updated january 23 2026 improve this page sponsored by join mastodon blog view source cc by sa 4 0 imprint
Images from subpage: "docs.joinmastodon.org/entities/Profile/" Verify
Images from subpage: "docs.joinmastodon.org/entities/Quote/" Verify
Images from subpage: "docs.joinmastodon.org/entities/QuoteApproval/" Verify
Images from subpage: "docs.joinmastodon.org/entities/Reaction/" Verify
Images from subpage: "docs.joinmastodon.org/entities/Relationship/" Verify

Verified site has: 190 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-20 21-25 26-30 31-35 36-40 41-45 46-50
51-55 56-60 61-65 66-70 71-75 76-80 81-85 86-90 91-95 96-100
101-105 106-110 111-115 116-120 121-125 126-130 131-135 136-140 141-145 146-150
151-155 156-160 161-165 166-170 171-175 176-180 181-185 186-190


The site also has references to the 2 subdomain(s)

  joinmastodon.org  Verify   blog.joinmastodon.org  Verify


Top 50 hastags from of all verified websites.

Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/2 301
server GitHub.com
content-type text/html
location htt????/docs.joinmastodon.org/admin/elasticsearch/
access-control-allow-origin *
strict-transport-security max-age=31556952
expires Thu, 02 Jul 2026 21:16:45 GMT
cache-control max-age=600
x-proxy-cache MISS
x-github-request-id 35D4:260BCD:BC294:BE638:6A46D2E4
accept-ranges bytes
age 0
date Thu, 02 Jul 2026 21:06:45 GMT
via 1.1 varnish
x-served-by cache-rtm-ehrd2290046-RTM
x-cache MISS
x-cache-hits 0
x-timer S1783026405.006479,VS0,VE114
vary Accept-Encoding
x-fastly-request-id 2e2a9bba8489b6c5c26a86b4d256d6ae53c8d230
content-length 162
HTTP/2 200
server GitHub.com
content-type text/html; charset=utf-8
last-modified Thu, 02 Jul 2026 05:48:17 GMT
access-control-allow-origin *
strict-transport-security max-age=31556952
etag W/ 6a45fba1-a121
expires Thu, 02 Jul 2026 21:16:45 GMT
cache-control max-age=600
content-encoding gzip
x-proxy-cache MISS
x-github-request-id 12B8:3C7AD9:B4AE9:B6E41:6A46D2E4
accept-ranges bytes
age 0
date Thu, 02 Jul 2026 21:06:45 GMT
via 1.1 varnish
x-served-by cache-rtm-ehrd2290046-RTM
x-cache MISS
x-cache-hits 0
x-timer S1783026405.128764,VS0,VE119
vary Accept-Encoding
x-fastly-request-id 5f89da242e4e745881d12d0b47aba887b1d644ba
content-length 9510

Meta Tags

title="Configuring full-text search - Mastodon documentation"
charset="utf-8"
name="viewport" content="width=device-width,initial-scale=1"
property="og:type" content="article"
property="og:url" content="htt????/docs.joinmastodon.org/admin/elasticsearch/"
name="description" content="Setting up Elasticsearch to search for statuses (authored, favourited, or mentioned), public indexable status, and accounts"
property="og:description" content="Setting up Elasticsearch to search for statuses (authored, favourited, or mentioned), public indexable status, and accounts"
name="twitter:site" content="@joinmastodon"

Load Info

page size9510
load time (s)0.391149
redirect count1
speed download24322
server IP 185.199.109.153
* all occurrences of the string "http://" have been changed to "htt???/"