本文共 2275 字,大约阅读时间需要 7 分钟。
字段的normalizer属性在Elasticsearch中提供了一种强大的文档处理机制,尤其是在字段分析和查询时,能够确保文档在索引和查询阶段的一致性。以下是一些实际案例和查询示例,展示了如何在索引和查询过程中使用normalizer。
###PUT index/{index}{ Poverty and the role of government in it }
在索引设置中,可以定义一个自定义的normalizer来处理特定字段。例如,我们可以创建一个针对foo字段的normalizer,确保在分析和查询时其值是标准化后的版本。
{  "settings": {    "analysis": {      "normalizer": {        "my_normalizer": {          "type": "custom",          "char_filter": [],          "filter": ["lowercase", "asciifolding"]        }      }    }  },  "mappings": {    "_doc": {      "properties": {        "foo": {          "type": "keyword",          "normalizer": "my_normalizer"        }      }    }  }}   在索引文档中,字段的值也会经过相同的normalizer处理。例如,以下文档在索引时可以执行以下操作:
{  "foo": "BÀR"}   在索引过程中,BÀR会被lowercase和asciifolding过滤器处理,最终被标准化为bar。
为了确保索引中所有文档的变化得到更新,可以执行以下命令:
在搜索时,同样会使用与索引一致的normalizer处理。例如:
{  "query": {    "term": {      "foo": "BAR"    }  }}   在这个查询中,BAR将被标准化为bar,因此查询结果将匹配所有存储的bar、BÀR等版本。
随后的搜索结果如下:
{  "took": 123,  "timed_out": false,  "_shards": {    "total": 5,    "successful": 5,    "skipped": 0,    "failed": 0  },  "hits": {    "total": 2,    "max_score": 0.2876821,    "hits": [      {        "_index": "index",        "_type": "_doc",        "_id": "2",        "_score": 0.2876821,        "_source": {          "foo": "bar"        }      },      {        "_index": "index",        "_type": "_doc",        "_id": "1",        "_score": 0.2876821,        "_source": {          "foo": "BÀR"        }      }    ]  }}   对于聚合的结果,同样会使用normalizer进行处理。例如:
{  "size": 0,  "aggs": {    "foo_terms": {      "terms": {        "field": "foo"      }    }  }}   在聚合的结果中,foo字段的值已经被标准化为bar和baz。
###聚合结果
{  "took": 43,  "timed_out": false,  "_shards": {    "total": 5,    "successful": 5,    "skipped": 0,    "failed": 0  },  "hits": {    "total": 3,    "max_score": 0.0,    "hits": []  },  "aggregations": {    "foo_terms": {      "doc_count_error_upper_bound": 0,      "sum_other_doc_count": 0,      "buckets": [        {          "key": "bar",          "doc_count": 2        },        {          "key": "baz",          "doc_count": 1        }      ]    }  }}  转载地址:http://flnkk.baihongyu.com/