ElasticSearch中analyzer和search_analyzer
1. 基础介绍analyzer:插入文档时,将text类型的字段做分词然后插入倒排索引。search_analyzer:查询时,先对要查询的text类型的输入做分词,再去倒排索引中搜索。如果想要让'索引'和'查询'时使用不同的分词器,ElasticSearch也是能支持的,只需要在字段上加上search_analyzer参数。索引时,只会去看字段有没有定义analyzer,有定义的话就用定义的,没
基于elasticsearch7.6.1 和 kibana7.6.1
1. 基础介绍
analyzer:插入文档时,将text类型的字段做分词然后插入倒排索引。
search_analyzer:查询时,先对要查询的text类型的输入做分词,再去倒排索引中搜索。
如果想要让'索引'和'查询'时使用不同的分词器,ElasticSearch也是能支持的,只需要在字段上加上search_analyzer参数。索引时,只会去看字段有没有定义analyzer,有定义的话就用定义的,没定义就用es预设的。查询时,会先去看字段有没有定义search_analyzer,如果没有定义,就去看有没有analyzer,再没有定义,才会去使用es预设的
2. 案例
# 创建索引
PUT /mapping_analyzer
{
"mappings": {
"dynamic": "strict",
"properties": {
"name": {
"type": "text",
"analyzer": "standard",
"search_analyzer": "ik_smart"
},
"desc": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
}
}
}
}
# 添加文档
PUT /mapping_analyzer/_doc/1
{
"name": "我是中国共产党",
"desc": "我是中国共产党"
}# 查询测试 (name字段--索引时使用standard, 查询时使用ik_smart)
GET /mapping_analyzer/_search
{
"query": {
"match": {
"name": "党"
}
}
}
GET /mapping_analyzer/_search
{
"query": {
"match": {
"name": "中国共产党"
}
}
}
# 查询测试 (desc字段--索引时使用ik_smart, 查询时使用ik_smart)
GET /mapping_analyzer/_search
{
"query": {
"match": {
"desc": "中国共产党"
}
}
}
3. ik_smart和standard分词器的区别
# ik_smart分词器
GET _analyze
{
"analyzer": "ik_smart",
"text": "我是中国共产党"
}
# standard分词器
GET _analyze
{
"analyzer": "standard",
"text": "我是中国共产党"
}
更多推荐
所有评论(0)