邮编与结构化数据

我们会使用美国目前使用的邮编形式(United Kingdom postcodes 标准)来说明如何用部分匹配查询结构化数据。这种邮编形式有很好的结构定义。例如,邮编 W1V 3DG 可以分解成如下形式:

  • W1V :这是邮编的外部,它定义了邮件的区域和行政区:

    • W 代表区域( 1 或 2 个字母)

    • 1V 代表行政区( 1 或 2 个数字,可能跟着一个字符)

  • 3DG :内部定义了街道或建筑:

    • 3 代表街区区块( 1 个数字)

    • DG 代表单元( 2 个字母)

假设将邮编作为 not_analyzed 的精确值字段索引,所以可以为其创建索引,如下:

  1. PUT /my_index
  2. {
  3. "mappings": {
  4. "address": {
  5. "properties": {
  6. "postcode": {
  7. "type": "string",
  8. "index": "not_analyzed"
  9. }
  10. }
  11. }
  12. }
  13. }

然后索引一些邮编:

  1. PUT /my_index/address/1
  2. { "postcode": "W1V 3DG" }
  3. PUT /my_index/address/2
  4. { "postcode": "W2F 8HW" }
  5. PUT /my_index/address/3
  6. { "postcode": "W1F 7HW" }
  7. PUT /my_index/address/4
  8. { "postcode": "WC1N 1LZ" }
  9. PUT /my_index/address/5
  10. { "postcode": "SW5 0BE" }

现在这些数据已可查询。