12.3.19 fields ——elasticsearch中文文档

12.3.19 fields 原文链接  翻译:AbnerGong

fields

它常常用于索引不同目的不同方式的相同域。这是multi-fields多字段的目的。例如一个字符串域既可以用作分词域来进行全文检索,也可以用作不分词域来进行搜索或聚合。

PUT /my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "city": {
          "type": "string",
          "fields": {
            "raw": {   #注释1:city.raw字段是city字段的不分词版本
              "type":  "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
  }
}

PUT /my_index/my_type/1
{
  "city": "New York" 
}

PUT /my_index/my_type/2
{
  "city": "York"   #注释2:分词字段city能用来全文搜索
}

GET /my_index/_search
{
  "query": {
    "match": {
      "city": "york" 
    }
  },
  "sort": {
    "city.raw": "asc"    #注释3:city.raw字段能用来排序和聚合
  },
  "aggs": {
    "Cities": {
      "terms": {
        "field": "city.raw"   #注释4:city.raw字段能用来排序和聚合
      }
    }
  }
}

【注意】Multi-fields不改变_source字段。
【提示】fields设置允许对相同索引中的同名字段有不同的设置。新的multi-fields能使用[PUT mapping API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html)添加到已经存在的字段中

用多分词器的多字段(Multi-fields)

另一个多字段(multi-fields)的用画图是分词相同的字段用不同的方式,为了更好的相关。例如我们可以索引一个字段用标准分词器分成单词,也可以再用英语分词器将它们变成词根形式

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "text": {  #注释1``text``字段使用标准分词器
          "type": "string",
          "fields": {
            "english": {   #注释2::``text.english``字段使用``english``分词器
              "type":     "string",
              "analyzer": "english"
            }
          }
        }
      }
    }
  }
}

PUT my_index/my_type/1
{ "text": "quick brown fox" }   #注释3:检索两个文档,一个用``fox``另一个用``foxes``

PUT my_index/my_type/2
{ "text": "quick brown foxes" }  #注释4:同注释3

GET my_index/_search
{
  "query": {
    "multi_match": {
      "query": "quick brown foxes",
      "fields": [   #注释5:查询``text````text.english``字段并且组合得分
        "text",
        "text.english"
      ],
      "type": "most_fields"   #注释6:同注释5
    }
  }
}

text字段包含了单词fox在第一个文档中,并且在第二个文档中包含了foxestext.english字段包含fox在两个文档中,因为foxes的词干(is stemmed to)是fox

查询字符串也能被text字段的标准分词器分词,并且被text.english字段的英语分词器分词。词干化字段允许foxes的查询也匹配只包含fox的文档。这允许我们匹配尽可能多的文档。通过也查询未词干化的text字段,我们提供精确匹配foxes的文档的相关得分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值