elastic映射、分词

一. fields和keyword使用示例:

1.建立索引

PUT url
{}

2.建立映射

PUT  url/_mapping/test
{
  "properties": {
    "url": {
      "type": "text",
      "fields": {
            "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
    },
    "date": {
      "type": "date"
    },
    "pvs": {
      "type": "integer"
    },
    "uvs": {
      "type": "integer"
    }
  }
}

3.添加数据

PUT url/test/1 
{
  "url":"https://www.elastic.co/guide/en/elasticsearch/reference/5.2",
  "date":"2017-02-01",
  "pvs":1,
  "uvs":2
}
4.搜索测试

GET url/test/_search
{
  "query":{
    "term":{
      "url.keyword":"https://www.elastic.co/guide/en/elasticsearch/reference/5.2"
    }
  }
}
可以搜索到数据

GET url/test/_search
{
  "query":{
    "term":{
      "url":"https://www.elastic.co/guide/en/elasticsearch/reference/5.2"
    }
  }
}
不可以搜索到数据

PS,在上面的例子中,url需要有两个用途,一个是作为聚合的字段;另一个是需要做全文检索。在ES中全文检索的字段是不能用来做聚合的,因此使用嵌套字段的方式,新增一个url.keyword字段,这个字段设置成keyword类型,不采用任何分词(这是5.0的新特性,如果使用以前版本,可以直接设置string对应的index属性即可);然后本身的url字段则采用默认的标准分词器进行分词。

fields作用://可以对一个字段提供多种索引模式,同一个字段的值,一个分词,一个不分词  

二. 查看某个字段的分词效果

GET /url/test/1/_termvectors?fields=url.keyword

三. 查看某个分词器的效果

POST _analyze
{
  "analyzer": "simple",
  "text": "https://www.elastic.co/guide/en/elasticsearch/reference/5.2"
}

四. 修改字段的分词器

上面如果想更换分词器,可以:

PUT  url/_mapping/test
{
  "properties": {
    "url": {
      "type": "string",
      "analyzer": "simple",
      "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
    },
    "date": {
      "type": "date"
    },
    "pvs": {
      "type": "integer"
    },
    "uvs": {
      "type": "integer"
    }
}

修改Mapping前,需要先删除索引,然后重建索引。删除索引的命令为:

DELETE url

不想删除索引,只想改变Mapping?想得美....你当ES是孙悟空会72变?不过,你可以创建一个新的索引,然后把旧索引的数据导入到新索引就行了,这也不失为一种办法。如果想这么搞,可以参考reindex api,如果版本是5.0之前,那么你倒霉了!自己搞定吧!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值