指定分析器
编辑指定分析器
编辑Elasticsearch 提供了多种方式来指定内置或自定义分析器
- 按
text
字段、索引或查询指定 - 用于索引或搜索时
Elasticsearch 如何确定索引分析器
编辑Elasticsearch 通过按顺序检查以下参数来确定要使用的索引分析器
- 该字段的
analyzer
映射参数。请参阅为字段指定分析器。 analysis.analyzer.default
索引设置。请参阅为索引指定默认分析器。
如果未指定这些参数,则使用 standard
分析器。
为字段指定分析器
编辑在映射索引时,可以使用 analyzer
映射参数来为每个 text
字段指定一个分析器。
以下 创建索引 API 请求将 whitespace
分析器设置为 title
字段的分析器。
resp = client.indices.create( index="my-index-000001", mappings={ "properties": { "title": { "type": "text", "analyzer": "whitespace" } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { title: { type: 'text', analyzer: 'whitespace' } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", mappings: { properties: { title: { type: "text", analyzer: "whitespace", }, }, }, }); console.log(response);
PUT my-index-000001 { "mappings": { "properties": { "title": { "type": "text", "analyzer": "whitespace" } } } }
为索引指定默认分析器
编辑除了字段级分析器外,您还可以使用 analysis.analyzer.default
设置来设置回退分析器。
以下 创建索引 API 请求将 simple
分析器设置为 my-index-000001
的回退分析器。
resp = client.indices.create( index="my-index-000001", settings={ "analysis": { "analyzer": { "default": { "type": "simple" } } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { settings: { analysis: { analyzer: { default: { type: 'simple' } } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", settings: { analysis: { analyzer: { default: { type: "simple", }, }, }, }, }); console.log(response);
PUT my-index-000001 { "settings": { "analysis": { "analyzer": { "default": { "type": "simple" } } } } }
Elasticsearch 如何确定搜索分析器
编辑在大多数情况下,指定不同的搜索分析器是不必要的。这样做可能会对相关性产生负面影响,并导致意外的搜索结果。
如果您选择指定单独的搜索分析器,我们建议您在部署到生产环境之前彻底测试您的分析配置。
在搜索时,Elasticsearch 通过按顺序检查以下参数来确定要使用的分析器
- 搜索查询中的
analyzer
参数。请参阅为查询指定搜索分析器。 - 该字段的
search_analyzer
映射参数。请参阅为字段指定搜索分析器。 analysis.analyzer.default_search
索引设置。请参阅为索引指定默认搜索分析器。- 该字段的
analyzer
映射参数。请参阅为字段指定分析器。
如果未指定这些参数,则使用 standard
分析器。
为查询指定搜索分析器
编辑在编写全文查询时,可以使用 analyzer
参数来指定搜索分析器。如果提供,则此参数会覆盖任何其他搜索分析器。
以下 搜索 API 请求将 stop
分析器设置为 match
查询的搜索分析器。
resp = client.search( index="my-index-000001", query={ "match": { "message": { "query": "Quick foxes", "analyzer": "stop" } } }, ) print(resp)
response = client.search( index: 'my-index-000001', body: { query: { match: { message: { query: 'Quick foxes', analyzer: 'stop' } } } } ) puts response
const response = await client.search({ index: "my-index-000001", query: { match: { message: { query: "Quick foxes", analyzer: "stop", }, }, }, }); console.log(response);
GET my-index-000001/_search { "query": { "match": { "message": { "query": "Quick foxes", "analyzer": "stop" } } } }
为字段指定搜索分析器
编辑在映射索引时,可以使用 search_analyzer
映射参数来为每个 text
字段指定一个搜索分析器。
如果提供了搜索分析器,则还必须使用 analyzer
参数指定索引分析器。
以下 创建索引 API 请求将 simple
分析器设置为 title
字段的搜索分析器。
resp = client.indices.create( index="my-index-000001", mappings={ "properties": { "title": { "type": "text", "analyzer": "whitespace", "search_analyzer": "simple" } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { title: { type: 'text', analyzer: 'whitespace', search_analyzer: 'simple' } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", mappings: { properties: { title: { type: "text", analyzer: "whitespace", search_analyzer: "simple", }, }, }, }); console.log(response);
PUT my-index-000001 { "mappings": { "properties": { "title": { "type": "text", "analyzer": "whitespace", "search_analyzer": "simple" } } } }
为索引指定默认搜索分析器
编辑在创建索引时,可以使用 analysis.analyzer.default_search
设置来设置默认搜索分析器。
如果提供了搜索分析器,则还必须使用 analysis.analyzer.default
设置指定默认索引分析器。
以下 创建索引 API 请求将 whitespace
分析器设置为 my-index-000001
索引的默认搜索分析器。
resp = client.indices.create( index="my-index-000001", settings={ "analysis": { "analyzer": { "default": { "type": "simple" }, "default_search": { "type": "whitespace" } } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { settings: { analysis: { analyzer: { default: { type: 'simple' }, default_search: { type: 'whitespace' } } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", settings: { analysis: { analyzer: { default: { type: "simple", }, default_search: { type: "whitespace", }, }, }, }, }); console.log(response);
PUT my-index-000001 { "settings": { "analysis": { "analyzer": { "default": { "type": "simple" }, "default_search": { "type": "whitespace" } } } } }