Giter Club home page Giter Club logo

docs's Introduction

Docs HOWTO

Conditions of use

This documentation build process is provided to the public purely for the purpose of testing documentation changes before submitting pull requests to the appropriate Elastic repository.

All Elastic documentation is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. http://creativecommons.org/licenses/by-nc-nd/4.0/

Getting started

Requirements

You’ll need the following installed:

  • Python 3

  • Docker

Cloning the repository

Clone the docs repository with:

git clone [email protected]:elastic/docs.git

Building this README

You can test that everything is working correctly by building this README as follows:

cd docs/
./build_docs --doc README.asciidoc --open

This should convert README.asciidoc into HTML and open it in your browser.

Building documentation

For a local repo

When you are making changes to documentation in a locally checked out repository, and you want to check that they are building correctly, use build_docs with the --doc parameter to generate the HTML version of the docs:

cd path/to/your/repo
~/path/to/docs/repo/build_docs --doc /full/path/to/index.asciidoc

Each Elastic project may need its own documentation book build command. doc_build_aliases.sh provides simplified aliases and the build commands for each book. For example, if you want to build the Elasticsearch Guide, refer to the Elasticsearch section in doc_build_aliases.sh file.

Specifying a different output dir

By default, the HTML docs are generated in ./html_docs. You can change the output directory with the --out parameter:

build_docs --doc path/to/index.asciidoc --out output/dir/
Warning
The output/dir/ will be deleted and recreated, so don’t point it at a directory that contains anything you are fond of.

Viewing the docs

To view the generated docs in your web browser immediately after the build has finished, use the --open parameter:

build_docs --doc path/to/index.asciidoc --open

Single- or multi-page

By default, the build process generates an HTML file per part/chapter/section. To generate all of the docs in a single file instead, use the --single parameter:

build_docs --doc path/to/index.asciidoc --single

And if you want a table of contents added at the beginning of the single page output, add the --toc parameter:

build_docs --doc path/to/index.asciidoc --single --toc
Note
The multi-page output always contains tables-of-content where appropriate.

Chunking in the right place

Before Christmas 2019 we built all of the docs using docbook which is designed to generate HTML, PDFs, and physical books. In the past this was useful because the Definitive Guide is both HTML and a physical book. But now we only really make HTML. And docbook is very slow and difficult to customize. So we removed it from our build process and instead generate HTML directly from the Asciidoc files.

But we still have some docbook concepts hanging around because we have tons of Asciidoc files written with docbook in mind. Thus we still use docbook’s concept of "chunking".

By default, each part (= Part Title) and chapter (== Chapter Title) is "chunked" into a separate HTML file. However, for most of our books, this results in enormous pages. So we mostly chunk at the first section level (=== Section One Title). This behaviour is specified in the conf.yaml file, but must also be specified on the command line when building a single book:

build_docs --doc path/to/index.asciidoc --chunk 1
Note
If you leave out the --chunk flag we’ll use the default chunking.

Alternative languages for examples

The build supports finding "alternative languages" for examples that allows users to specify their preferred language or client. You can do this by passing --alternatives to the build like:

cd docs/
./build_docs --doc README.asciidoc --open \
    --alternatives console:js:integtest/readme_examples/js \
    --alternatives console:csharp:integtest/readme_examples/csharp

Building all of the Elastic docs

Building all of the docs runs a link checker to validate cross-document links. While it isn’t generally necessary, if you know the book you are working on has links to/from other books, you can build with --all to validate the links.

Note
To build everything, you must have access to all of the repositories referenced in conf.yaml. If you don’t have the required access privileges, an error will occur during the cloning phase.

To check links before you merge your changes:

  1. Make sure you have the branch with your changes checked out.

  2. Specify the branch you are targeting and the directory that contains your local clone with the --sub_dir option. For example, if you are working on changes that will be merged into the master branch of the elasticsearch repo, run:

    ./docs/build_docs --all --target_repo [email protected]:elastic/built-docs.git \
                      --open --keep_hash --sub_dir elasticsearch:master:./elasticsearch
Note
If there are no outstanding changes in the elasticsearch directory then this will build against the result of merging the last successful docs build and the contents of elasticsearch. If there are outstanding changes then it’ll just build against the contents of elasticsearch.

To run a full build to mimic the website build, omit the --sub_dir and --keep_hash options:

./build_docs --all --target_repo [email protected]:elastic/built-docs.git --open

Running a full build for the first time can be slow (60 mins+) as the build needs to:

  • clone each repository

  • build the docs for each branch

Subsequent runs will pull any changes to the repos and only build the branches that have changed.

Previewing the Elastic docs in pull requests

In most Elastic repositories, when you open a pull request that affects the documentation, it calculates which books are affected and creates a PR check to build them.

If you need to re-run the check, add a comment like this:

@elasticmachine run docs build

or

@elasticmachine, run elasticsearch-ci/docs

To force all versions of the documentation to be rebuilt (not just the calculated subset), add a comment like this:

@elasticmachine, run elasticsearch-ci/docs rebuild

Adding new docs or new branches

The documentation that appears on the http://www.elastic.co/guide website is controlled by the conf.yaml file in the docs repo.

You can add a new repository under the repos section, if it doesn’t already exist, and you can add a new "book" under the contents section.

Each book contains a list of branches and we build a separate copy of each book for each of those branches. There is also a current branch which gets special treatment. When we fork a branch like 7.x or 7.9 we typically add it to the list of branches so we immediately start building docs for it while we’re actively developing against it. When we release a new minor or major version we update the current branch to point to that branch.

Note
At this point changing current requires a full "rebuild" which we do by logging into the docs build clicking the "Build with Parameters" link, checking the "rebuild" option, and then starting the build.

Each book may optionally contain a list of live branches. If the list is specified only branches that are in it are considered "living" and books that are not in the list will get a message at the top of each page saying that we don’t plan to release any more bug fixes or actively maintain the docs for that branch.

If you want a branch to have a different "version" name (for instance, if you want to build a version called "4.2" but have it build out of a branch called "branch-for-4.2"), you can put {branch-for-4.2: 4.2} as an entry in the branches list. Everywhere else in conf.yaml, continue to use branch-for-4.2.

Asciidoc Guide

Basic book structure

Asciidocs can be built as a book, article, manpage etc. All our docs are built as a book, and thus follow the layout for books. The most basic structure is as follows:

= Book title                // level 0

== Chapter title            // level 1

=== Section title           // level 2

==== Section title          // level 3

===== Section title         // level 4

Usually this structure will be sufficient for most of your documentation needs. More complicated "books", such as the {ref}[Elasticsearch Guide], require a few additional elements, described on the following pages.

Filenames

By default, each chapter will generate a new chunk or HTML file. You can control the name of the file by giving the header an ID, as follows:

[[intro-to-xyz]]
== Intro to XYZ

This chapter would then be written to a file called intro-to-xyz.html. If no ID is provided, then a filename will be auto-generated. See Controlling chunking for more.

These IDs are also used to link to sections within each book. See Linking.

Tip
For search engine optimization (SEO), make sure the keywords you use in the ID match keywords used in the topic title. For example, if the topic is called "Install XYZ", use [[install-xyz]] for the topic ID.

TOC titles

By default, the link text used in the generated TOC is based on the title of each file. You can provide an abbreviated title using a titleabbrev in one of two ways:

  1. You should add a titleabbrev attribute to the section:

    [id=intro_to_xyz,titleabbrev=" XYZ Intro"]
    == Intro to XYZ
    
    Words.
  2. You may use the pass block but it isn’t recommended:

    == Intro to XYZ
    ++++
    <titleabbrev>XYZ Intro</titleabbrev>
    ++++
    
    Words.

Multi-part books

Books may also be divided into multiple parts, which are indicated with level 0 headers:

= Book title                // level 0

= Part title                // level 0

== Chapter title            // level 1

=== Section title           // level 2

... etc ...

Each part also creates a new chunk or HTML file.

Part intro

A part may include text before the first chapter, but it must be marked with [partintro] in order to be valid:

= Book title                // level 0

= Part one                  // level 0

[partintro]
A paragraph introducing this Part

== Chapter title            // level 1

... etc ...

Longer partintro blocks should be wrapped in an open block which starts and ends with two dashes: --:

= Part two                  // level 0

[partintro]
.A partintro title
-- <1>
This section may contain multiple paragraphs.

[discrete]
== A header should use [discrete]

Everything up to the closing -- marker
will be considered part of the partintro.
-- <1>

== Chapter title           // level 2

... etc ...
  1. The open block delimiters

Optional sections

Books may include other sections such as a preamble, a preface, a glossary or appendices.

Preamble

= Book title                // level 0

.Optional preamble title
Preamble text...

Preface and Appendix

[preface]
= Preface title             // level 0

=== Preface header          // level 2 (1)

= Part one                  // level 0

and

[appendix]
= Appendix title            // level 0

=== Appendix header         // level 2 (1)
  1. Any headers in the appendix or in the preface start out-of-sequence at level 2, not at level 1.

Glossary

[glossary]
= Glossary title            // level 0

[glossary]
Term one::
    Defn for term one

Term two::
    Defn for term two
Note

The two [glossary] elements above have different purposes:

  • The first marks this section of the document as a glossary, to be included in the table of contents

  • The second marks the definitions list as type glossary

Also see

If you need to use some of these more advanced structural elements, have a look at the example of a multi-part book included in this repo in book-multi.txt.

Paragraphs

A paragraph consists of multiple lines of text which start in the left hand column:

This is a paragraph
even though it contains
line breaks.

This is a second paragraph.

Paragraph titles

Like most elements, a paragraph can have a title:

Example 1. Paragraph with a title
.Paragraph title
Text of my paragraph
Paragraph title

Text of my paragraph

Admonition paragraphs

A paragraph which starts with TIP:, NOTE:, IMPORTANT:, WARNING: or CAUTION: is rendered as an admonition paragraph, eg:

NOTE: Compare admonition paragraphs with <<admon-blocks>>.

This renders as:

Note
Compare admonition paragraphs with Admonition blocks.

Literal paragraphs

Literal paragraphs, which are rendered as <pre> blocks without any source highlighting, must be indented:

Example 2. A literal paragraph
.Optional title

    This para must
    be indented
Optional title
This para must
be indented

See also Code blocks for blocks with syntax highlighting.

Inline text

Inline text can be formatted as follows:

_emphasis_

emphasis

*bold*

bold

`mono'

mono

^superscript^

superscript

~subscript~

subscript

These formatting characters expect to adjoin whitespace or common punctuation characters. To combine bold with emphasis, double up the quotes (ie use __ and **):

Example 3. Combining bold and emphasis
This example co__mb**in**es__ bold and emphasis

This example combines bold and emphasis.

Unwanted quotes can be escaped with a \ character.

Replacement characters

Certain runs of ASCII characters are replaced as follows:

--

 — (em dash)

...

…​

->

<-

=>

<=

(C)

©

(TM)

(R)

®

Shared attributes

To facilitate consistency across the documentation, there are shared attributes for common terms and URLs: https://github.com/elastic/docs/blob/master/shared/attributes.asciidoc. There are also attributes related to the versions and branches that are used to build our books (for example: https://github.com/elastic/docs/blob/master/shared/versions/stack/master.asciidoc).

Books that use shared attributes files must declare a dependency on them in conf.yaml like this:

  -
    repo:   docs
    path:   shared/versions/stack/{version}.asciidoc
  -
    repo:   docs
    path:   shared/attributes.asciidoc

or

  -
    repo:   docs
    path:   shared/versions/stack/current.asciidoc
  -
    repo:   docs
    path:   shared/attributes.asciidoc

There is also a special set of attributes that are automatically created by the build process. They are labelled <repo>-root, where <repo> is the name defined at the top of the conf.yaml. For example, there is an elasticsearch-root attribute that resolves to the root path of the Elasticsearch repo. Please use these root attributes or define es-repo-dir, for example, rather than relying on intrinsic attributes like and {asciidoc-dir}. The instrinsic attributes are problematic when you re-use files in different source file paths.

If books don’t use shared attributes files, the attributes generally appear at the beginning of the book, under the title. For example:

Example 4. Using book-scoped attributes for cross-document linking
= My Book Title

:branch: master
:ref:    https://www.elastic.co/guide/en/elasticsearch/reference/{branch}

Here is a link to the {ref}/search.html[search page]

Attribute scope

Attributes are in-scope for the entire book unless you explicitly clear them by setting :!attributename:. For example:

Example 5. Clearing an attribute
:myattribute: some value
All the things on the page.
:!myattribute:

To create page-scoped attributes, clear the attribute at the end of the page.

Linking

You can link to any block in the document that has an ID — an identifier before the block which is wrapped in double square brackets:

[[para-id]]
This paragraph can be linked to using the ID `para-id`.

When you need to combine an ID with a style, you can either specify each on a separate line:

[[note-id]]
[NOTE]
===============================
This note can be linked to using the ID `note-id`.
===============================

or in one line:

["NOTE",id="note-id"] (1)
===============================
This note can be linked to using the ID `note-id`.
===============================
  1. In the one line format, the NOTE must be enclosed in double quotes.

Both of the above render as:

Note

This note can be linked to using the ID note-id.

The ID is added to the HTML document as an <a> anchor and, as explained in Controlling chunking, the ID is used as the filename for sections which are chunked — written to separate HTML files.

You can link to any ID within a document using double angle brackets:

Example 6. Links with default link text
* <<setup>>
* <<structure>>

It will use the title associated with each ID as the link text.

Alternative link text can be provided as a second parameter inside the angle brackets:

Example 7. Links with custom link text
See the <<note-id,note about IDs>>.

See the note about IDs.

Links to external websites can just be added as normal inline text, optionally with custom link text in square brackets:

Example 8. External links
See http://github.com/elastic
or  http://github.com/elastic/docs[this repository]

The existence of external links is not confirmed by the build process.

Links to other Elastic books are essentially the same as external links. However, for conciseness and maintainability, you should use an attribute to represent the absolute URL of the docs.

If possible, use attributes defined in the shared attributes file to resolve links:

Example 9. Using shared attributes for cross-document linking
= My Book Title

# Use this if your repo is versioned with the Elastic stack:
include::{docs-root}/shared/versions/stack/{source_branch}.asciidoc[]
# Or use this to alway point to the most recent version of the stack
include::{docs-root}/shared/versions/stack/current.asciidoc[]
# Either way, you'll want to include a reference to the attributes file
# which builds the links from the versions.
include::{docs-root}/shared/attributes.asciidoc[]

Here is a link to the {ref}/search.html[search page]

The main benefit of using attributes for cross document links is that, when the docs for an old version contain links that no longer exist in the current branch, you can update all the links in the document to point to the older version, by just updating a single attribute.

Cross document links are checked when build_docs is run with the --all parameter. See Building all of the Elastic docs.

Lists

Bullet points

Bullet point lists are written using asterisks:

Example 10. Bullet points
.Optional title
* Point
* Point
** Sub-point
*** Sub-sub-point
* [ ] TODO
* [x] Done
* A point can have multiple paragraphs
+
But use a `+` instead of an empty line between paras.

An empty line signifies the end of the list.
Optional title
  • Point

  • Point

    • Sub-point

      • Sub-sub-point

  • ❏ TODO

  • ✓ Done

  • A point can have multiple paragraphs

    But use a + instead of an empty line between paras

An empty line signifies the end of the list.

Ordered lists

Ordered lists use . instead of *, and will alternate between numbers and letters automatically:

Example 11. An ordered list
.Optional title
. foo
.. bar
... baz
.... balloo
Optional title
  1. foo

    1. bar

      1. baz

        1. balloo

Definition lists

Definition lists are used to define terms. The term must be followed by a double colon :: eg:

Example 12. A vertical definition list
term one::      Definition for term one
term two::
                Can start on the next line
term three::    A definition can have multiple
+
paragraphs, but use `+` to separate them

term four:::    Definitions can be nested
                by adding more colons
term five::     A definition can even include
                lists:
                * point one
                * point two
term one

Definition for term one

term two

Can start on the next line

term three

A definition can have multiple

paragraphs, but use + to separate them

term four

Definitions can be nested by adding more colons

term five

A definition can even include lists:

  • point one

  • point two

Horizontal definition lists

Often definition lists are better rendered horizontally, eg:

Example 13. A horizontal definition list
[horizontal]
term one::      Definition for term one
term two::
                Can start on the next line
term three::    A definition can have multiple
+
paragraphs, but use `+` to separate them

term four:::    Definitions can be nested
                by adding more colons
term five::     A definition can even include
                lists:
                * point one
                * point two
term one

Definition for term one

term two

Can start on the next line

term three

A definition can have multiple

paragraphs, but use + to separate them

term four

Definitions can be nested by adding more colons

term five

A definition can even include lists:

  • point one

  • point two

Blocks

Blocks are used for special blocks of content, such as Code blocks, Example blocks, Sidebars and Admonition blocks.

Blocks are delimited with a start and end line which uses the same characters, like =====.

Code blocks

Code blocks are rendered as <pre> blocks, and use syntax highlighting, eg:

Example 14. A code block
.Optional title
[source,js]
----------------------------------
{
    "query": "foo bar"
}
----------------------------------
Optional title
{
    "query": "foo bar"
}
Important
If you don’t specify the source language then the generated HTML is quite different so, in general, you should specify a language. We use the language as a hint for the syntax highlighter. See files in this repository names lang-*.js for information.

Callouts

Code blocks can use callouts to add an explanatory footnote to a particular line of code:

Example 15. Code block with callouts
[source,js]
----------------------------------
{
    "query": "foo bar" <1>
}
----------------------------------
<1> Here's the explanation
{
    "query": "foo bar" (1)
}
  1. Here’s the explanation

Copy as curl/View in Console

Code blocks can be followed by a "Copy as curl" link which will convert the snippet into a sequence of calls to the ubiquitous curl tool that work in the bash shell and copy it to the clipboard. Similarly, if the target of the snippet is Elasticsearch we also add a "Try in Console" link will open the code snippet in Console.

You enable it by setting the "language" of the snippet to a supported language. The options are "console" for Elasticsearch, "kibana" for Kibana, "ess" for Elasticsearch Service (Elastic’s official SaaS offering), and "ece" for Elastic Cloud Enterprise.

For Elasticsearch do this:

Example 16. Code block with "Copy as curl" and "Try in Console" link for Elasticsearch
[source,console]
----------------------------------
GET /_search
{
    "query": "foo bar" <1>
}
----------------------------------
<1> Here's the explanation

Which renders as:

GET /_search
{
    "query": "foo bar" (1)
}
  1. Here’s the explanation

Note
In older branches you’ll see // CONSOLE after the snippet to trigger this behavior. That is deprecated.

For Kibana do this:

Example 17. Code block with "Copy as curl" link for Kibana
[source,kibana]
----------------------------------
GET /
----------------------------------

Which renders as:

GET /

For Elasticsearch Service do this:

Example 18. Code block with "Copy as curl" link for Elasticsearch Service
[source,ess]
----------------------------------
GET /
----------------------------------

Which renders as:

GET /

For Elastic Cloud Enterprise do this:

Example 19. Code block with "Copy as curl" link for Elastic Cloud Enterprise
[source,ece]
----------------------------------
GET /
----------------------------------

Which renders as:

GET /

Responses

If Console requests are followed by a "response" then it should be written with the language set to console-response. That will allow alternative examples to find the responses. Like this:

[source,console-result]
----------------------------------
{
    "hits": {
        "total": { "value": 0, "relation": "eq" },
        "hits": []
    }
}
----------------------------------

Which should render as:

{
    "hits": {
        "total": { "value": 0, "relation": "eq" },
        "hits": []
    }
}

Admonition blocks

Admonition blocks are much the same as Admonition paragraphs, except that they can be longer and contain more than just a paragraph. For instance:

[NOTE]
=========================
This note contains a list:

* foo
* bar
* baz

and some code

[source,js]
----------------------------------
{ "query": "foo bar"}
----------------------------------
=========================

This renders as:

Note

This note contains a list:

  • foo

  • bar

  • baz

and some code

{ "query": "foo bar"}

Sidebars

Sidebars are used to highlight a block of content that is outside the usual flow of text:

.Optional title
**********************************
So why does the `bulk` API have such a
funny format?  Sit down and I'll tell you
all about it!
**********************************
Optional title

So why does the bulk API have such a funny format? Sit down and I’ll tell you all about it!

Example blocks

Example blocks contain normal text which is used as an example. The title, if any, is labelled as an example and numbered:

.My first example
========================================
Text explaining the first example.
========================================

.My second example
========================================
Text explaining the second example.
========================================

This renders as:

Example 20. My first example

Text explaining the first example.

Example 21. My second example

Text explaining the second example.

Caution
The === and --- delimiters can sometimes be confused with a header, resulting in an error. To resolve this, add newlines between the delimiter and the content before and after it.

Examples can be made collapsible:

[%collapsible]
.An example
====
Lots of text can go in here.
====

Which renders as:

An example

Lots of text can go in here.

Including files

For long documentation, you probably want to break up the Asciidoc files into smaller units, and just include them where appropriate:

include::myfolder/mydoc.asciidoc[]

Paths are relative to the file which contains the include statement.

Across repositories

If you have to include files in a different repository then use its -root attribute to locate the files:

include::{elasticsearch-root}/docs/foo.asciidoc[]

Books that reference another repository should register that reference in conf.yaml.

  -
    repo:   elasticsearch
    path:   docs/foo.asciidoc

The path should be as specific as possible because we skip rebuilding books if changes to the referenced repository don’t change the referenced path.

Additions and deprecations

Documentation is built for various branches, eg 0.90, 1.00, master. However, we release versions 0.90.0, 0.90.1, etc, which are all based on the 0.90 branch.

When adding new functionality to a branch, or deprecating existing functionality, you can mark the change as added, coming or deprecated. Use coming when the addition is in an as yet unreleased version of the current branch, and added when the functionality is already released.

The update_versions.pl script can be used to change coming notices to added notices when doing a new release, and can also be used to remove added, coming and deprecated notices completely.

Inline notifications

Use inline notifications for small changes, such as the addition or deprecation of individual parameters.

[horizontal]
`foo.bar`::   Does XYZ. added:[0.90.4]
`foo.bar`::   Does XYZ. coming:[0.90.4]
`foo.baz`::   Does XYZ. deprecated:[0.90.4]
foo.bar

Does XYZ. added:[0.90.4]

foo.bar

Does XYZ. coming:[0.90.4]

foo.baz

Does XYZ. deprecated:[0.90.4]

You can also include details about additional notes in the notifications which show up when the user hovers over it:

[horizontal]
`foo.bar`::   Does XYZ. added:[0.90.4,Replaces `foo.baz`]
`foo.bar`::   Does XYZ. coming:[0.90.4,Replaces `foo.baz`]
`foo.baz`::   Does XYZ. deprecated:[0.90.4,Replaced by `foo.bar`]
foo.bar

Does XYZ. added:[0.90.4,Replaces foo.baz]

foo.bar

Does XYZ. coming:[0.90.4,Replaces foo.baz]

foo.baz

Does XYZ. deprecated:[0.90.4,Replaced by foo.bar]

Note

If the details include a comma, you must use quotation marks. For example:

deprecated::[1.1.0,"Span started automatically by <<apm-start-span,apm.startSpan()>>"]

Section notifications

Use section notifications to mark an entire chapter or section as added/deleted. Notifications can just refer to the version in which the change was made:

==== New section

added::[0.90.4]

Text about new functionality...

==== New section not yet released

coming::[0.90.9]

Text about new functionality...

==== Old section

deprecated::[0.90.4]

Text about old functionality...

New section

added::[0.90.4]

Text about new functionality…​

New section not yet released

coming::[0.90.9]

Text about new functionality…​

Old section

deprecated::[0.90.4]

Text about old functionality…​

With details…​

Or they can include extra text, including more Asciidoc markup:

[[new-section]]
==== New section

added::[0.90.4,Replaces `foo.bar`. See <<old-section>>]

Text about new functionality...

[[coming-section]]
==== New section not yet released

coming::[0.90.9,Replaces `foo.bar`. See <<old-section>>]

Text about new functionality...

[[old-section]]
==== Old section

deprecated::[0.90.4,Replace by `foo.baz`. See <<new-section>>]

Text about old functionality...

New section

added::[0.90.4,Replaces foo.bar. See Old section]

Text about new functionality…​

Old section

deprecated::[0.90.4,Replace by foo.baz. See New section]

Text about old functionality…​

Beta, Dev, and Preview (experimental)

APIs or parameters that are in beta, in development, or in technical preview (formerly experimental) can be marked as such, using markup similar to that used in Additions and deprecations.

In the block format, you have the option of adding a related GitHub issue link. If both custom text and a GitHub link are provided, the GitHub link must be provided second. If it’s supported in your repo, you can use the {issue} attribute in place of the GitHub issue link.

Using the beta admonition

[[new-beta-feature]]
=== New beta feature

beta::[]

beta::[https://github.com/elastic/docs/issues/505]

beta::[{issue}505]

beta::["Custom text goes here."]

beta::["Custom text goes here.",https://github.com/elastic/docs/issues/505]

beta::["Custom text goes here.",{issue}505]

Text about new feature...

[[old-beta-feature]]
=== Established feature

This feature has been around for a while, but we're adding
a new parameter that's in beta:

`established_param`::
This param has been around for ages and won't change.

`beta_param`::
beta:[]
This param is in beta and may change in the future.

`beta_param`::
beta:["Custom text goes here."]
This param is in beta and may change in the future.

Using the dev admonition

[[new-dev-feature]]
=== New feature in development

dev::[]

dev::[https://github.com/elastic/docs/issues/505]

dev::[{issue}505]

dev::["Custom text goes here."]

dev::["Custom text goes here.",https://github.com/elastic/docs/issues/505]

dev::["Custom text goes here.",{issue}505]

Text about feature in development...

[[old-dev-feature]]
=== Established feature

This feature has been around for a while, but we're adding
a new parameter that's in development:

`established_param`::
This param has been around for ages and won't change.

`dev_param`::
dev:[]
This param is in development and may change in the future.

`dev_param`::
dev:["Custom text goes here."]
This param is in development and may change in the future.

Using the experimental admonition

Experimental language is deprecated.

We decided on the much less raw sounding "technical preview".

See below.

Using the technical preview admonition

[[new-feature]]
=== New feature in technical preview

preview::[]

preview::[https://github.com/elastic/docs/issues/505]

preview::[{issue}505]

preview::["Custom text goes here."]

preview::["Custom text goes here.",https://github.com/elastic/docs/issues/505]

preview::["Custom text goes here.",{issue}505]

Text about new feature...

[[old-feature]]
=== Established feature

This feature has been around for a while, but we're adding
a new preview parameter:

`established_param`::
This param has been around for ages and won't change.

`experimental_param`::
preview:[]
This param is in technical preview and may change in the future.

`experimental_param`::
preview:["Custom text goes here."]
This param is in technical preview and may change in the future.

Images

Any images you want to include should be saved in a folder in your repo, and included using a path relative to the document where the image:: statement appears.

[[cat]]
.A scaredy cat
image::resources/readme/cat.jpg[Alt text]

A link to <<cat>>
Alt text
Figure 1. A scaredy cat

A link to A scaredy cat.

Width and height

The width and/or height of the image can be specified in pixels or as a percentage:

image::resources/readme/cat.jpg["Alt text",width=50]
image::resources/readme/cat.jpg["Alt text",width="20%"]
Alt text
Alt text

Alignment

Images are left-aligned by default, but they can be centred or right-aligned:

image::resources/readme/cat.jpg["Alt text",width=100,align="left"]
image::resources/readme/cat.jpg["Alt text",width=100,align="right"]
image::resources/readme/cat.jpg["Alt text",width=100,align="center"]
Alt text
Alt text
Alt text

Screenshots

Screenshots get extra margins and a box-shadow:

A screenshot example

You can activate it with:

[role="screenshot"]
image::resources/readme/screenshot.png[A screenshot example]

SVGs

SVGs are also supported. Just use them like you would any other image:

image::resources/readme/example.svg[An example svg]

Which looks like:

An example svg

You can add relative or absoloute links to your images with the following syntax:

image:./images/dynamic-config.svg[link=configuration.html#configuration-dynamic]

Using internal link attributes is also supported, but the image must be inside the internal link syntax. It’s important to add a space on each side of the image tag. Without spaces, the image will not render.

<<configuration-dynamic, image:./images/dynamic-config.svg[] >>

Videos

You can add a vimeo hosted video with Asciidoctor’s video tag:

video::366852847[vimeo,height=480]
Note
You should set height or else the video will be tiny. You shouldn’t set width because Vimeo will preserve the aspect ratio for you.

Which renders like this:

Tables

Our CSS for tables isn’t great at the moment so it’s almost always better to use Horizontal definition lists instead, but if you really want to use tables, you can read about them here.

Edit links

We automatically generate edit links for most sections to make it easier for folks to contribute simple fixes and to help folks find the asciidoc file that generated a particular section. It should appear next to every title-like thing.

Books built with Asciidoctor will automatically pick the correct url for all files and by default doesn’t support overriding edit_url. This is mostly a good thing because the overridden `edit_url`s were out of date in many cases.

Some books override edit_url because the asciidoc files in them are not authoritative. In that case they set edit_url to the "real" place to make the change. Sometimes this is another repository and sometimes it is some code that generates the asciidoc files. These books should add respect_edit_url_overrides to their config. While it isn’t required for AsciiDoc it is required for Asciidoctor.

Controlling chunking

In Basic book structure, we said that each part or chapter generates a new chunk or HTML file. For more complex documentation, you may want the first level of sections to also generate new chunks.

For example:

= 1st-level page                    // part

== 2nd-level child page             // chapter

=== 3rd-level child page            // section level 1

=== Another 3rd-level child page    // section level 1

... etc ...

This renders in the TOC as follows:

TOC screenshot

Enabling section chunking

To enable section chunking when building docs in a local repository, pass the --chunk parameter:

build_docs --doc path/to/index.asciidoc --chunk 1

To enable section chunking when building docs for the website, add chunk: 1 to the conf.yaml file in the docs repo.

contents:
    -
        title:      Elasticsearch Guide
        prefix:     elasticsearch/reference
        repo:       elasticsearch
        index:      docs/reference/index.asciidoc
        chunk:      1 (1)
  1. Chunking is enabled for this book

Chunking selected sections

If you enable session chunking, you will probably find that you have a few short sections which you want to keep on the same page.

To do this, you can use the [discrete] marker before a section header, to indicate that what follows isn’t a "real" header:

[[chapter-one]]
== chapter              // new chunk

[[section-one]]
=== Section one         // new chunk

[discrete]
[[section-two]]
=== Section two         // same chunk

[[section-three]]
=== Section three       // new chunk

The above would produce three HTML files, named for their IDs:

  • chapter-one.html

  • section-one.html which would also contain "Section two"

  • section-three.html

To link to "Section two" from an external document, you would use the URL: section-one.html#section-two

Tabbed widgets

Improve the usability of your docs by adding tabbed widgets. These handy widgets let you conditionally display content based on the selected tab. Best of all, tabbed widgets listen to each other – all widgets on the same page and with the same data-tab-group will change content when any tab on the page is selected.

How do they work? I’m glad you asked. Tabbed widgets use HTML passthrough blocks to pass raw HTML into the build. Because of this hack, you must use include:: statements to render content within a tabbed widget.

Here’s an example:

widget.asciidoc

++++
<div class="tabs" data-tab-group="custom-tab-group-name"> (1)
  <div role="tablist" aria-label="Human readable name of tab group">
    <button role="tab"
            aria-selected="true" (2)
            aria-controls="cloud-tab-config-agent" (3)
            id="cloud-config-agent"> (4)
      Tab #1 title
    </button>
    <button role="tab"
            aria-selected="false"
            aria-controls="self-managed-tab-config-agent"
            id="self-managed-config-agent"
            tabindex="-1"> (5)
      Tab #2 title
    </button>
  </div>
  <div tabindex="0"
       role="tabpanel"
       id="cloud-tab-config-agent"
       aria-labelledby="cloud-config-agent">
++++

// You must use a tagged region for Asciidoc content to render. For example:
// include::content.asciidoc[tag=central-config]

++++
  </div>
  <div tabindex="0"
       role="tabpanel"
       id="self-managed-tab-config-agent"
       aria-labelledby="self-managed-config-agent"
       hidden="">
++++

// You must use a tagged region for Asciidoc content to render. For example:
// include::content.asciidoc[tag=reg-config]

++++
  </div>
</div>
++++
  1. Any tabbed widgets on the same page and with the same name will sync tabs when switched

  2. Only one tab should have aria-selected set to true. This tab will be selected by default

  3. The button.aria-controls value must match the div.id value of its corresponding content bucket

  4. The button.id value must match the div.aria-labelledby value of its corresponding content bucket

  5. All unselected tabs must have a tabindex of -1

content.asciidoc

// tag::central-config[]
This is where the content for tab #1 goes.
// end::central-config[]

// tag::reg-config[]
This is the content for tab #2 goes.
// end::reg-config[]

Global banners

Add a banner to every page within a book by creating a page_header.html file. This file must live in the root of the documentation directory (i.e. the book’s path in conf.yaml) and is picked up by the doc build automatically. This file can include any valid HTML. An example can be seen here.

docs's People

Contributors

abdonpijpelink avatar alaudazzi avatar alpar-t avatar bmorelli25 avatar brianjolly avatar chriscressman avatar colleenmcginnis avatar debadair avatar dedemorton avatar ebeahan avatar florent-leborgne avatar gtback avatar jmikell821 avatar joepeeples avatar jrodewig avatar karenzone avatar kellyemurphy avatar kgeller avatar kilfoyle avatar kotungseth avatar lcawl avatar leemthompo avatar naemono avatar nastasha-solomon avatar nik9000 avatar nkammah avatar ollyhowell avatar russcam avatar szabosteve avatar thbkrkr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docs's Issues

Add a check for pages deleted in newer versions

If we remove functionality (and the associated docs page) in newer versions, we can create stub pages to redirect users to any replacement feature.

We should add a check for this, as it is too easy to forget to add the stub.

Make ES clients a sub-section

The Elasticsearch clients section should be rendered as a single entry in the top-level ToC, and have their own ToC in en/elasticsearch/clients

Advise that ngram token filter acts on characters

I think the (lack of) documentation for ngram token filter is misleading.
I was expecting this filter to create ngrams of consecutive tokens, not to create ngrams of characters contained in the token.

I propose to add:

A token filter of type nGram. It creates ngrams from sequences of characters contains in each token.

We could maybe add an example as follow:

With the white space tokenizer, and a token filter with min_gram=2 and max_gram=3, "the house" will give: [th, he, the] [ho, ou, se, hou, ous, use]
Note that ngrams of the same word have the same position in the phrase, so above expression would match a match_phrase query on "th ous".

Adding a "deprecated" warning to old docs?

Some documentation pages from old versions are indexed by Google, and when you land to such a page it might not be obvious that this documentations refers to an old version. I have had this issue once or twice and apparently some users have the same issue: https://twitter.com/saidimu/status/586571547420323840

When we move to a new major version maybe we should have a way to add a header to all documentation pages from the previous version to let users know that they are not reading documentation from the most recent version of elasticsearch?

Add destructive overwrite warning and/or directory creation to --out,

Currently, if the directory specified in --out contains anything, it is silently blown away. This behavior is fine when --out is unspecified, since it creates the new directory html_docs (or silently nukes the contents if that directory exists), but it also means that a casual error (specifying --out /some/dir, expecting it to result in /some/dir/html_docs instead of a nuked /some/dir with docs in it) can be really quite destructive.

Some documentation pages don't show hierarchy in search results

If you search for 'metric aggregation' (https://www.elastic.co/search?q=metric+aggregation) in the Elasticsearch documentation the links appear with the hierarchy in the title (e.g. Scope of scripts » Scripted Metric Aggregation | Reference | Elasticsearch).

However if I search for 'percolator' (https://www.elastic.co/search?q=percolator) the first two results have the same title (Percolator | Reference | Elasticsearch) but the first result is actually a reference to the breaking changes document. This first link should have the hierarchy in the title so you can easily see it is a breaking changes doc and not the actual documentation for the Percolator.

Need a strategy for linking from the product to the documenation

Right now, we are hard coding links in the product that point to the documentation, and those links are likely to get out of date quickly (especially for newer projects where the doc is likely to undergo a lot of restructuring).

I've created the following document as a place to discuss issues and come up with ideas for implementing a doc linking strategy. I'd appreciate feedback and ideas and some input from developers about how we can best implement a workable strategy. Please feel free to add comments or edit the document directly. I just wanted to get the conversation started; I don't have all the answers.

https://docs.google.com/document/d/1r0-DooTSbZS0kAdYhjd-XIy7naPFBIWL-SyXNqRfBs4/edit#

@debadair @palecur Can you take a look and add your comments? Then we should tag some people in development on this question.

Build PDF version of docs

From @kevinkluge on March 20, 2015 1:30

I've heard a few requests for a PDF version of the docs. The prototype generated content was pretty good, but was missing branding. This issue is to track building these docs regularly and adding some amount of branding (e.g. a header or footer).

Copied from original issue: elastic/elasticsearch#10176

Document that binary packages are not available for 32bit based Linux OSes

After following the steps here:
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-repositories.html

I received the following when trying to sudo apt-get install elasticsearch:

E: Unable to locate package elasticsearch.

Googling this returns several unhelpful suggestions from a few years ago in the top 3 results, whereas the actual cause of the problem can be found in:
https://discuss.elastic.co/t/cannot-install-2-1-from-debian-repository/35843
https://discuss.elastic.co/t/ubuntu-repo-not-working-solved/43043/15

...namely that there are only 64bit packages available, so I needed to switch the base 32bit Ubuntu trusty image I was using with Vagrant to the 64bit one.

Ideally this would be documented somewhere more clearly to save others hitting the same problem.

Perhaps on:
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-repositories.html

...and maybe even by adding a 64bit vs 32bit column here:
https://www.elastic.co/support/matrix#show_os

Add a --blog option

It'd be nice to be able to output an asciidoc page as HTML which can be uploaded to the website as a blog post.

New AUTOSENSE option doesn't appear to work within admonitions

For example, no View in Sense link is shown for the following tip:

[TIP]
=================================================
To execute a watch immediately (without waiting for the schedule to trigger), use the <> API:

[source,json]
--------------------------------------------------
POST _watcher/watch/rss_watch/_execute
{
  "ignore_throttle" : true,
  "simulated_actions" : "_all",
  "record_execution" : true
}
--------------------------------------------------
// AUTOSENSE
==================================================

Include IP field type in doc_value docs

Hi,
It is mentioned that:

Doc values can be enabled for numeric, date, Boolean, binary, and geo-point fields, and for not_analyzed string fields.

As IP field type is translated in Lucene to numeric type, does it means that it also can support doc_value config?

Trying this locally on my machine with default ES instance from tar-ball, using template that maps IP field with doc_value:true configuration, didn't yield any exceptions.

Maybe worth testing internally in Elastic dev.

Thanks,
Yarden

Shield docs online out of date

It looks like this was already corrected in the repository on 2015-10-27, but the install section here is still showing to use -i rather than install

Is something broken with the automatic publishing for shield docs?

Add Elasticsearch DSL Python client to Elasticsearch Clients

The Elasticsearch DSL Python [1] client is missing from Elasticsearch Clients [2] page which is confusing customers. Can we add a reference to this client to either the main clients page or the one specific to Python API [3]?

@honzakral

[1] https://github.com/elastic/elasticsearch-dsl-py
[2] https://www.elastic.co/guide/en/elasticsearch/client/index.html
[3] https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/index.html

Extract content from a file

Today we are somehow building static content. I mean content provided within .asciidoc files only.

In Maven land, when you generate the website which contains documentation, you can use Snippets.

It's really handy because you can extract a content to your documentation and this content comes from the source code itself.
It basically means that when a developper changes whatever part of code, the documentation is automatically updated with the new content. If the developper does not update the code, it will most likely not compile anymore.

I'd encourage doing the same thing with our doc build process and try to use the same convention as in Maven land:

// START SNIPPET: snip-id
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
// END SNIPPET: snip-id

The snippet is extracted within two lines containing START SNIPPET and END SNIPPET. Optionally the snipper might have an id in case you have more than one snippet per file.

Most likely snippet start and end tags are provided within comments depending on the language you are using.

For example, in xml, it could be:

<!-- START SNIPPET: snip-id -->
            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>1.5.0</version>
            </dependency>
<!-- END SNIPPET: snip-id -->

To use it, you can add the following to your asciidoc file (example/java.asciidoc):

== This is my doc

[source,java]
--------------------------------------------------
%{snippet|id=snip-id|url=file:///path/to/Sample.java}
--------------------------------------------------

The idea of this change is to first parse all existing documentation files and copy them to another build_dir in case they changed (or at each run).

In the previous example, a file named build_dir/example/java.asciidoc will be created and will contain:

== This is my doc

[source,java]
--------------------------------------------------
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
--------------------------------------------------

Opening this issue now here to open discussion and see if the process I described is the right way for doing that. If so, I think this is something which should be implemented in perl within the build_docs.pl script.

@clintongormley WDYT?

elastic website CPU / memory hog?

Firstly; apologies for opening this issue here, it's not specific to the docs, the issue seems to affect a bunch of pages on the www.elastic.co domain.

If I open up a page such as https://www.elastic.co/downloads/elasticsearch in chrome and have top in another window open, I can see that the page uses 100% utilization of a single core and the RAM usage starts to climb.

Having 4 tabs open is enough for my computer to go crazy bonkers.
After some time chrome will crash the tab.
It's been happening for some weeks now.

Maybe it's only me? Could someone please confirm/deny they see the same thing?

Also; if we are mining bitcoin, can I haz some plz?

chrome: Version 49.0.2623.47 beta (64-bit)

Mark non-current docs as such

When the current version of docs changes, would be good to regenerate other versions to include a warning explaining that these are not the current docs

Document wildcard for network interfaces in Network Settings

Can we add documentation to Network Settings that illustrates how to configure binding Elasticsearch to all network interfaces; i.e., using a wildcard?

elasticsearch.yml:

network.bind_host: 0

All interfaces are listening:

 $ netstat -p tcp -na | egrep '9200|9300'
tcp46      0      0  *.9200                 *.*                    LISTEN
tcp46      0      0  *.9300                 *.*                    LISTEN

We do not want to necessarily encourage this configuration, however, it would be very helpful to document how to do it.

As a side note, configuring network.bind_host: 0.0.0.0 or 0.0.0 or 0.0 also works which is just unexpected. It seems just documenting a lone 0 value would suffice.

Date Histogram Aggregation and empty Buckets

Hi,

i am new to Elastic and work a lot with the Docs. I've mapped my "date" fields with the format "DateTimeOptional".

This is not working with the Date Histogram Aggregation. With "DateTimeOptional" i receive empty Buckets every time. You have to define a Format for your Date field in the Mapping as like "yyyy-MM-dd" to get it work.

Maybe there should be a notice in the Date Histogram Aggregation Documentation?

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html

I hope i choosed the right repository for creating the Issue?

Thanks in Advance

Make doc images autoscale

Currently, images in the docs display at their original resolution, unlike images in blogs, which are responsive to screen size. Block images should render into HTML with the class="img-responsive" attribute. Inline images should stay as they are.

Track branch statuses outside git

Currently, each branch of a book is tracked by a branch name in git of each checked out repo, to avoid rebuilding branches that have already been built. Unfortunately, this information can not be shared by installations of the docs build service.

This means that even if we update to the latest build of every branch with a git pull, running build_docs.pl --all will still rebuild most branches locally, because the local install doesn't know about the branches in the remote build service.

Instead, we should record the SHA of each branch in a separate file which will be committed to the docs repo.

Add --stage option to build_docs.pl

Pushing to staging is a bit complicated, eg:

  • do we use the template from staging?
  • do we not mark each branch as done, to avoid committing changes which end up on production?
  • make sure we're not using the wrong branch if something fails after switching to the staging branch

Add warning link to HTTP auth to Watcher tutorial as it breaks for people with shield

Users following this instruction set for the first time may not realize that they need to authenticate in their HTTP input when calling against a Shield secured ES. I think it would be useful to add a note and link to those instructions.

Tutorial:
https://www.elastic.co/guide/en/watcher/current/watch-cluster-status.html

Instruction to link to:
https://www.elastic.co/guide/en/watcher/current/input.html#_calling_external_webservices

permalinks in documentation

There are instances where linking to "current" documentation is a bad idea. For example,

http://elasticsearch-users.115913.n3.nabble.com/What-is-the-meaning-of-throttle-time-in-millis-tp4050893p4050921.html

The post points to the link for current documentation which contains no info for store throttling, like the 1.7 version of the document.

Is there a way we can encourage the use of permalinks in our documentation to avoid this problem? Sometimes it is not obvious how to obtain the permalink in Elastic documentation; Logstash Introduction is an example.

New documentation is comes with every release and we should try to encourage those linking to the docs to only use permalinks as those links run the risk of being invalidated.

Link to "How to install license" necessary in Watcher

In the watcher docs (both 1.x and 2.x) the instruction notes:

You need to install the License and Watcher plugins on each node in your cluster.

... and gives instructions how to install the license plugin, but not how to install the actual license. I have been asked several times by customers "is that all, what about the license json file you sent me?" or worse still "my (test) license has expired!".

Would it be possible to have a link to licence installation documentation here?

Add support for text labels on branches

Such that if the branch name is foobar-1.0, we'll be able to assign it a 1.0 label for the generated site.

For example:

watcher:
        url:        https://github.com/elastic/x-plugins.git
        current:    watcher-1.0
        branches:
            - watcher-1.0: 1.0
        private:    1

where watcher-1.0 is the branch name, and 1.0 is the label for it in the site

Replace [string] with either a [text] or [keyword] field in examples for 5.0

There's probably a LOT of examples that need to be updated. I was following through some here;
https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping-intro.html

And hit this;
MapperParsingException[Failed to parse mapping [tweet]: The [string] type is removed in 5.0. You should now use either a [text] or [keyword] field instead for field [tweet]]; nested: IllegalArgumentException[The [string] type is removed in 5.0. You should now use either a [text] or [keyword] field instead for field [tweet]];

Add support for CONSOLE

Sense will become a default app in Kibana called Console. The View-in-Sense links in 5.x should be changed to View-in-Console, and should use // CONSOLE instead of // AUTOSENSE

Change Sense integration

Add a cog icon to "view in sense" links to allow configuring the Sense URL. Then can just redirect without needing the interstitial sense_widget page and without requiring CORS on ES

Add ability to generate overview links in container topics

Right now, our docs have "container" topics that are used to group related topics (see example below). Some of them have intro text and some do not. I've heard from a couple of internal users who thought there was content missing from the topic because they didn't notice that there were sub-topics.

In general, it's pretty common to have container topics in docs, but the way our TOC is positioned on the page, it's not always obvious that there are sub-topics. When the container topic is short and appears towards the middle or end of the TOC, you don't even see the part of the TOC that pertains to the topic (see example below).

We can manually fix this problem by adding a list of links to the container topic itself. However, this becomes a maintainability issue when doc gets moved around, deleted, or added. It would be really nice if we had a way for the doc build to automatically generate links and add them to topics that we've identified as container topics. We would not want links to be generated for all topics that have sub-topics, just the ones that we identify.

Example of container topic:
docstructure

@ruflin FYI

Repository not found

When running ./build_docs.pl --all, it tries (as configured in conf.yamlon line 75) to clone the repositories found and x-plugins, which can't be found:

Updating repositories
 - Cloning beats from <https://github.com/elastic/beats.git>
 - Cloning curator from <https://github.com/elastic/curator.git>
 - Cloning elasticsearch from <https://github.com/elastic/elasticsearch.git>
 - Cloning elasticsearch-hadoop from <https://github.com/elastic/elasticsearch-hadoop.git>
 - Cloning elasticsearch-js from <https://github.com/elastic/elasticsearch-js.git>
 - Cloning elasticsearch-net from <https://github.com/elastic/elasticsearch-net.git>
 - Cloning elasticsearch-php from <https://github.com/elastic/elasticsearch-php>
 - Cloning found from <https://github.com/elastic/found.git>
Error updating repo <found>: Error executing: git clone https://github.com/elastic/found.git .repos/found
Cloning into '.repos/found'...
remote: Repository not found.
fatal: repository 'https://github.com/elastic/found.git/' not found

Are the repositories private or are they renamed to found-shield-example and kibana-phoenix-plugin, respectively?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.