From 0732475cb9b795f1004dcd9fc5e31b97d0d2fd0a Mon Sep 17 00:00:00 2001 From: James Rodewig Date: Wed, 18 Mar 2020 09:42:25 -0400 Subject: [PATCH] [DOCS] Streamline `analyzer` mapping parm def (#51874) Simplifies the `analyzer` mapping parameter definition to remove duplicated analysis content and examples. --- .../mapping/params/analyzer.asciidoc | 86 +++---------------- 1 file changed, 14 insertions(+), 72 deletions(-) diff --git a/docs/reference/mapping/params/analyzer.asciidoc b/docs/reference/mapping/params/analyzer.asciidoc index 02f10363c44..47f0a5d68ec 100644 --- a/docs/reference/mapping/params/analyzer.asciidoc +++ b/docs/reference/mapping/params/analyzer.asciidoc @@ -1,81 +1,23 @@ [[analyzer]] === `analyzer` -The values of <> fields are passed through an -<> to convert the string into a stream of _tokens_ or -_terms_. For instance, the string `"The quick Brown Foxes."` may, depending -on which analyzer is used, be analyzed to the tokens: `quick`, `brown`, -`fox`. These are the actual terms that are indexed for the field, which makes -it possible to search efficiently for individual words _within_ big blobs of -text. +[IMPORTANT] +==== +Only <> fields support the `analyzer` mapping parameter. +==== -This analysis process needs to happen not just at index time, but also at -query time: the query string needs to be passed through the same (or a -similar) analyzer so that the terms that it tries to find are in the same -format as those that exist in the index. +The `analyzer` parameter specifies the <> used for +<> when indexing or searching a `text` field. -Elasticsearch ships with a number of <>, -which can be used without further configuration. It also ships with many -<>, <>, -and <> which can be combined to configure -custom analyzers per index. - -Analyzers can be specified per-query, per-field or per-index. At index time, -Elasticsearch will look for an analyzer in this order: - -* The `analyzer` defined in the field mapping. -* An analyzer named `default` in the index settings. -* The <> analyzer. - -At query time, there are a few more layers: - -* The `analyzer` defined in a <>. -* The `search_analyzer` defined in the field mapping. -* The `analyzer` defined in the field mapping. -* An analyzer named `default_search` in the index settings. -* An analyzer named `default` in the index settings. -* The <> analyzer. - -The easiest way to specify an analyzer for a particular field is to define it -in the field mapping, as follows: - -[source,console] --------------------------------------------------- -PUT /my_index -{ - "mappings": { - "properties": { - "text": { <1> - "type": "text", - "fields": { - "english": { <2> - "type": "text", - "analyzer": "english" - } - } - } - } - } -} - -GET my_index/_analyze <3> -{ - "field": "text", - "text": "The quick Brown Foxes." -} - -GET my_index/_analyze <4> -{ - "field": "text.english", - "text": "The quick Brown Foxes." -} --------------------------------------------------- - -<1> The `text` field uses the default `standard` analyzer`. -<2> The `text.english` <> uses the `english` analyzer, which removes stop words and applies stemming. -<3> This returns the tokens: [ `the`, `quick`, `brown`, `foxes` ]. -<4> This returns the tokens: [ `quick`, `brown`, `fox` ]. +Unless overridden with the <> mapping +parameter, this analyzer is used for both <>. See <>. +[TIP] +==== +We recommend testing analyzers before using them in production. See +<>. +==== [[search-quote-analyzer]] ==== `search_quote_analyzer`