我是 Elasticsearch (ES) 的新手,在搞乱分析器。正如文档所述,分析器可以指定“索引时间”和“搜索时间”,具体取决于用例。我的文档有一个文本字段title
,并且我定义了以下引入子字段的映射custom
:
PUT index/_mapping
{
"properties": {
"title": {
"type": "text",
"fields": {
"custom": {
"type": "text",
"analyzer": "standard",
"search_analyzer":"keyword"
}
}
}
}
}
因此,如果我有文本 : "email-id is someid@someprovider.com"
,standard-analyzer
则会在索引期间将文本分析为以下标记:
[email, id, is, someid, someprovider.com]
。
但是,每当我尝试在该字段上进行查询(查询术语有不同的变化)title.custom
时,它都会导致没有命中。
当我使用关键字查询时,这就是我认为正在发生的事情email
::
- 它由关键字分析器进行分析。
- 字段 title.custom 的值也被关键字分析器分析(分析标记),产生与前面提到的相同的标记集。
- 完全匹配应该发生在
email
令牌上,返回文档。
显然情况并非如此,我的理解存在差距。
- 我想知道搜索过程中到底发生了什么。
- 在一般层面上,我想知道当指定搜索和索引分析器的组合时分析和搜索是如何发生的。