-
Notifications
You must be signed in to change notification settings - Fork 29
[docs] Add more guidance on products
metadata
#1836
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
`products` is a list of objects, each object has an `id` field. | ||
|
||
```yaml | ||
products: | ||
- id: apm | ||
``` | ||
Each product ID is mapped to a full product name. | ||
You use the product ID in the source files, and docs-builder will use the full product name in | ||
a `product_name` `meta` tag in the generated HTML and YAML metadata in generated Markdown files, | ||
which are used to drive elastic.co search functionality. | ||
|
||
:::{dropdown} Valid products IDs | ||
|
||
| Product ID | Product name | | ||
|---------------------------------------------|-----------------------------------------------| | ||
| `apm` | APM | | ||
| `apm-agent` | APM Agent | | ||
| `auditbeat` | Auditbeat | | ||
| `beats` | Beats | | ||
| `cloud-control-ecctl` | Elastic Cloud Control ECCTL | | ||
| `cloud-enterprise` | Elastic Cloud Enterprise | | ||
| `cloud-hosted` | Elastic Cloud Hosted | | ||
| `cloud-kubernetes` | Elastic Cloud Kubernetes | | ||
| `cloud-serverless` | Elastic Cloud Serverless | | ||
| `cloud-terraform` | Elastic Cloud Terraform | | ||
| `ecs` | Elastic Common Schema (ECS) | | ||
| `ecs-logging` | ECS Logging | | ||
| `edot-cf` | EDOT Cloud Forwarder | | ||
| `edot-sdk` | Elastic Distribution of OpenTelemetry SDK | | ||
| `edot-collector` | Elastic Distribution of OpenTelemetry Collector | | ||
| `elastic-agent` | Elastic Agent | | ||
| `elastic-serverless-forwarder` | Elastic Serverless Forwarder | | ||
| `elastic-stack` | Elastic Stack | | ||
| `elasticsearch` | Elasticsearch | | ||
| `elasticsearch-client` | Elasticsearch Client | | ||
| `filebeat` | Filebeat | | ||
| `fleet` | Fleet | | ||
| `heartbeat` | Heartbeat | | ||
| `integrations` | Integrations | | ||
| `kibana` | Kibana | | ||
| `logstash` | Logstash | | ||
| `machine-learning` | Machine Learning | | ||
| `metricbeat` | Metricbeat | | ||
| `observability` | Elastic Observability | | ||
| `packetbeat` | Packetbeat | | ||
| `painless` | Painless | | ||
| `search-ui` | Search UI | | ||
| `security` | Elastic Security | | ||
| `winlogbeat` | Winlogbeat | | ||
::: |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -43,43 +43,28 @@ See [](./applies.md) | |
## Products | ||
|
||
The products frontmatter is a list of products that the page relates to. | ||
This is used for the "Products" filter in the Search UI. | ||
|
||
The products frontmatter is a list of objects, each object has an `id` field. | ||
|
||
| Product ID | Product Name | | ||
|---------------------------------------------|-----------------------------------------------| | ||
| `apm` | APM | | ||
| `apm-agent` | APM Agent | | ||
| `auditbeat` | Auditbeat | | ||
| `beats` | Beats | | ||
| `cloud-control-ecctl` | Elastic Cloud Control ECCTL | | ||
| `cloud-enterprise` | Elastic Cloud Enterprise | | ||
| `cloud-hosted` | Elastic Cloud Hosted | | ||
| `cloud-kubernetes` | Elastic Cloud Kubernetes | | ||
| `cloud-serverless` | Elastic Cloud Serverless | | ||
| `cloud-terraform` | Elastic Cloud Terraform | | ||
| `ecs` | Elastic Common Schema (ECS) | | ||
| `ecs-logging` | ECS Logging | | ||
| `edot-cf` | EDOT Cloud Forwarder | | ||
| `edot-sdk` | Elastic Distribution of OpenTelemetry SDK | | ||
| `edot-collector` | Elastic Distribution of OpenTelemetry Collector | | ||
| `elastic-agent` | Elastic Agent | | ||
| `elastic-serverless-forwarder` | Elastic Serverless Forwarder | | ||
| `elastic-stack` | Elastic Stack | | ||
| `elasticsearch` | Elasticsearch | | ||
| `elasticsearch-client` | Elasticsearch Client | | ||
| `filebeat` | Filebeat | | ||
| `fleet` | Fleet | | ||
| `heartbeat` | Heartbeat | | ||
| `integrations` | Integrations | | ||
| `kibana` | Kibana | | ||
| `logstash` | Logstash | | ||
| `machine-learning` | Machine Learning | | ||
| `metricbeat` | Metricbeat | | ||
| `observability` | Elastic Observability | | ||
| `packetbeat` | Packetbeat | | ||
| `painless` | Painless | | ||
| `search-ui` | Search UI | | ||
| `security` | Elastic Security | | ||
| `winlogbeat` | Winlogbeat | | ||
|
||
:::{include} /_snippets/products-list.md | ||
::: | ||
|
||
`products` can also be defined in the [`docset.yml` file](/configure/content-set/navigation.md#products). | ||
If you define `products` in a page's Markdown file and the `docset.yml` file also includes `products`, docs-builder will combine the two lists. | ||
You can _not_ override doc set level `products` at the page level. | ||
theletterf marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
:::{tip} | ||
The purpose of the `products` field is different from `applies_to`: the former provides metadata to elastic.co search engines, while the latter indicates feature availability and applicability. | ||
|
||
% Is this true? | ||
For example, while a page might contain content that is _applicable_ to Elastic Cloud Serverless projects, | ||
it might not be _about_ Elastic Cloud Serverless. In that case, you would include the `serverless` key in `applies_to`, | ||
but _not_ include the `cloud-serverless` ID in `products`: | ||
Comment on lines
+57
to
+60
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we perhaps replace this with a small table of When to use vs When not to use? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This makes sense. But the original reason was that Not sure if we even know this today. (this statement is actually a good explanation) But yes, there were ongoing discussions that they are similar. same same but different. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What do you think about this guidance @elastic/docs-tech-leads?
Can you be more specific about what the table would include? General guidelines? Multiple examples? Something else? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @colleenmcginnis Examples, I would say. Just a suggestion though, this is not blocking the PR. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is a tricky example. I would add the corresponding product(s) in all cases. Meaning that "A page with content that applies to Elastic Cloud Serverless should also be identified with the "cloud-serverless" product ID", to be searchable as such using the elastic.co search. I think this is true in most cases. If the content applies to "Stack", then you'd want product ids to identify which stack components are relevant here, etc. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
In that case wouldn't we want that to be derived automatically from the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This would require revisiting the It would probably also mean that filtering by search results by There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
IMO, yes, except for "Stack" where the corresponding product IDs are more granular: elasticsearch, kibana, etc. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. But overall this seems logical, if we mark content as applicable to a context, why wouldn't we allow users to find that content when selecting that context through facets? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I agree, and I think we shouldn't change this logic before the next phase of thinking around applies_to and versioning. For now we should "just" make sure that the way we specify products ids leads to a better search experience |
||
|
||
```yaml | ||
products: | ||
- id: apm | ||
applies_to: | ||
stack: ga | ||
serverless: | ||
observability: ga | ||
``` | ||
::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where's the mapping defined? Shall we point to the source code?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@theletterf At this moment on main, it's in the code - I'm working on a change that will migrate this to a separate file. I'll update the documentation accordingly by the time the PR is up.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, I was just expecting the reader to look at the table in the dropdown. Maybe we should make that clearer?