Indices, engines, meta engines, and content sources
editIndices, engines, meta engines, and content sources
editYour Elastic deployment stores data as documents within Elasticsearch indices. However, some Enterprise Search tools rely on additional features provided by the following index abstractions:
The following sections cover how to create and manage these various data stores:
See Search across indices, engines, and content sources to learn how to combine results from multiple data stores.
Elasticsearch stores and retrieves documents from indices (singular: index).
For Enterprise Search use cases, use the Enterprise Search indices UI to create Elasticsearch indices (see Create index). You must use this interface to create indices for the web crawler and connectors, but you can also use this UI to create indices you will manage on your own.
Indices created through this UI are optimized for search use cases in the following ways:
- When creating the index, you can choose a language analyzer (examples: Japanese, Italian, English). The web crawler and connectors will use this analyzer to optimize documents for the selected language.
-
The index is created with mappings that automatically index text fields in different ways for different purposes.
For example, the same field may be indexed as a
text
value for full-text search and akeyword
value for sorting or aggregations. These mappings also increase compatibility with App Search, including precision tuning. See field conventions for precision tuning in the App Search documentation. (These mappings may not appear until the first document is indexed.) - When the index is created, a corresponding ingest pipeline is also created. The web crawler and connectors apply this pipeline by default. You can manage or replace this default pipeline through the same UI (see Ingest pipelines).
The names of indices created through this UI always begin with search-
.
Create index
editWithin Kibana, navigate to Enterprise Search → Content → Elasticsearch indices, and choose Create new index.
Select an ingestion method and provide any other information required to create the index.
This operation requires access to Kibana and the create_index
or manage
indices privilege.
An App Search engine is an index abstraction that enables various App Search features, such as those used for searching, optimizing results, and gaining insights about your search experience.
Although it is possible to create an engine and index at the same time, the preferred solution is to first create an Elasticsearch index and then create an engine from that index. This solution enables the tools for search, results, and insights linked above (those that operate on engines and indices).
To manage documents and ingestion, use tools that operate directly on indices. Document management tools within App Search are read-only for engines created from indices.
See the App Search document, Elasticsearch index engines, to learn about the App Search features and field types that are supported by engines created from Elasticsearch indices.
Create engine (from index)
editSee the App Search document, Create Elasticsearch index engines, to create an App Search engine containing documents from an existing Elasticsearch index.
Example use case: You have ingested documents into an Elasticsearch index directly and now you want to build a search experience for it.
Example use case: You have a Workplace Search content source and want to use the App Search search API to query the content.
Create engine from content source
editTo create an App Search engine from a Workplace Search content source:
-
Find the Elasticsearch index used by the Workplace Search content source.
For example:
.ent-search-engine-documents-custom-62fe4494b1720490773b75d7
. -
Use the Elasticsearch aliases API to create a
search-
prefixed alias for this Workplace Search content source index. For example:PUT /.ent-search-engine-documents-custom-62fe4494b1720490773b75d7/_alias/search-my-content
- In App Search, create an Elasticsearch index engine from this alias.
Example use case: You’ve ingested content using a Workplace Search connector. You want to build a search experience for this content with relevance tuning features in App Search.
Example use case: You want to build a search experience that searches content in Workplace Search content sources and App Search engines. Create an App Search engine and then combine multiple engines using a meta engine for a unified search experience.
Note the following differences between Workplace Search content sources and App Search engines:
- Workplace Search synonyms are applied globally across all content sources. App Search requires specifying synonyms for a specific engine or meta engine.
- App Search engines do not provide document-level permissions and access control.
- The App Search search API does not provide automatic query refinement and query expansion phrases.
Access engine index
editWhen creating a new App Search engine, you should first create an Elasticsearch index. In this case, you will know which index is used for the engine’s documents.
However, you may have existing App Search engines, where you did not create the index first. You can still access the Elasticsearch indices that contain the documents for these engines.
To find the index follow these steps in the Kibana UI:
- Navigate to Enterprise Search > Content > Elasticsearch indices.
- Use the Show hidden indices toggle to ensure the index is listed under Available indices.
- Search for the engine name in the search box.
-
The engine’s underlying index is prefixed with
.ent-search-engine-documents-
. For example, if your engine is namedmy-engine
, the underlying Elasticsearch index is.ent-search-engine-documents-my-engine
.
Use the tools of your choice to manage and search the index’s documents.
Example use case: You created an App Search engine from an Elasticsearch index, but you still want to be able to access the index directly.
Example use case: You are an App Search user, but your requirements have outgrown the out-of-the-box capabilities of App Search. You want to leverage the full power of Elasticsearch to build more customized search experiences.
A meta engine is an App Search feature that allows searching over multiple engines, combining their results.
Create meta engine (from engines)
editRefer to the App Search documentation to create and manage meta engines.
Example use case: Your organization might have multiple content sources, each with different search settings and read/write permissions, but you also need a company-wide search experience with distinct curations or relevance tunings.
Example use case: You’ve ingested content into Elasticsearch indices using the Elastic web crawler. You’ve also ingested content into Workplace Search content sources using various Workplace Search connectors. You want to create a unified search experience across all this content by creating engines and a meta engine.
Workplace Search connectors sync to Workplace Search content sources. Content sources are similar to App Search engines, but they are a separate abstraction used by Workplace Search.
However, the following solutions allow you to access the documents of a content source outside of Workplace Search:
Access content source index
editYou can directly access the Elasticsearch index that contains the documents for a Workplace Search content source. To find the index follow these steps in the Kibana UI:
- Navigate to Enterprise Search > Content > Elasticsearch indices.
- Use the Show hidden indices toggle to ensure the index is listed under Available indices.
- Search for the content source in the search box.
-
Each content source stores documents in a hidden Elasticsearch index prefixed with
.ent-search-engine-documents-
followed by the type of the source and the unique ID of the source. For example, a custom source might have an index named.ent-search-engine-documents-custom-62fe4494b1720490773b75d7
. A GitHub custom source might have an index named.ent-search-engine-documents-github-62fe460fb1720464b93b75e3
.
Use the tools of your choice to manage and search the index’s documents.
Example use case: You want to create an engine from a content source. Accessing the underlying Elasticsearch index is a required intermediate step.
Example use case: You want to use Elastic index tools to work with the documents in a content source.