使用自定义分析器的索引
代码语言:javascript复制PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "my_tokenizer",
"filter": ["lowercase", "my_synonyms"]
}
},
"tokenizer": {
"my_tokenizer": {
"type": "whitespace"
}
},
"filter": {
"my_synonyms": {
"type": "synonym",
"synonyms": [
"computer, pc",
"laptop, notebook"
]
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
在上述示例中,我们创建了一个名为“my_analyzer”的分析器,使用了自定义的“my_tokenizer”分词器和“lowercase”和“my_synonyms”词语过滤器。此外,我们定义了一个名为“my_synonyms”的过滤器,将一些同义词(如“computer”和“pc”)转换为相同的单词。
分析器示例
下面是一个使用分析器的搜索示例:
代码语言:javascript复制GET /my_index/_search
{
"query": {
"match": {
"title": "personal computer"
}
}
}
在上述示例中,我们搜索包含“personal computer”短语的文档。由于我们在索引时使用了自定义的分析器,因此Elasticsearch会将查询字符串分割为两个单词(“personal”和“computer”),并将“computer”转换为“pc”,以便匹配包含这些单词的文档。