es 中分析器分词器设置

关于什么是es的分析器,以及如何工作的,我想百度要说的比我明白,简而言之,es在对text数据进行索引的时候支持选择分析器,而分析器是字符过滤器,分词器,以及分词过滤器的统称

es默认支持一下集中分析器

名称功能
standard 标准分词器英文按照空格分词,中文则按照单个汉字分词
simple 分析器按照非字母字符进行词语拆分,并将所有词语转换为小写
language分析器语言分析器
whitespace分析器按照空白字符拆分词语
pattern分析器使用正则表达式将文本拆分成词语

建立索引时指定分析器

  1. 全局设置
PUT hotel
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default":
        {
          "type":"standard"
        }
      }
    }
  }, 
  "mappings": {
    "properties": {
      "title":
      {
        "type": "text"
      },
      "sup_env":
      {
        "type": "text"
      }
    }
  }
}
  1. 单字段设置
PUT hotel
{
  "mappings": {
    "properties": {
      "title":
      {
        "type": "text",
        "analyzer": "standard"
      },
      "sup_env":
      {
        "type": "text",
        "analyzer": "standard"
      }
    }
  }
}

自定义分析器

假定我们创建的hotel index中sup_env 存的数据格式是APP,H5,… ,是以逗号分割的,搜索的时候希望根据用户输入进行过滤,比如输入H5,则需要查询包含H5的hotel,则可以使用pattern 进行自定义分析器

PUT hotel
{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_analyzer":{ #自定义分析器
          "tokenizer":"custom_tokenizer" #使用custom_tokenizer分词器
        }
      },
      "tokenizer": {#定义分词器
        "custom_tokenizer":{
          "type":"pattern",
          "pattern":","#指定切分使用的分割符
        }
      }
    }
  }, 
  
  "mappings": {
    "properties": {
      "title":
      {
        "type": "text",
        "analyzer": "whitespace"
      },
      "sup_env":
      {
        "type": "text",
        "analyzer": "custom_analyzer"
      }
    }
  }
}


POST /_bulk
{"index":{"_index":"hotel"}}
{"title":"金都嘉怡假日酒店","sup_env":"APP,H5"}
{"index":{"_index":"hotel"}}
{"title":"金都欣欣酒店","sup_env":"WX,H5"}
{"index":{"_index":"hotel"}}
{"title":"金都酒店","sup_env":"WX"}



GET hotel/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "sup_env": "H5,WX"
          }
        }
      ]
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值