我们会使用美国目前使用的邮编形式(United Kingdom postcodes 标准)来说明如何用部分匹配查询结构化数据。这种邮编形式有很好的结构定义。例如,邮编 W1V 3DG
可以分解成如下形式:
-
W1V
:这是邮编的外部,它定义了邮件的区域和行政区:-
W
代表区域( 1 或 2 个字母) -
1V
代表行政区( 1 或 2 个数字,可能跟着一个字符)
-
-
3DG
:内部定义了街道或建筑:-
3
代表街区区块( 1 个数字) -
DG
代表单元( 2 个字母)
-
假设将邮编作为 not_analyzed
的精确值字段索引,所以可以为其创建索引,如下:
PUT /my_index
{
"mappings": {
"address": {
"properties": {
"postcode": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
然后索引一些邮编:
PUT /my_index/address/1
{ "postcode": "W1V 3DG" }
PUT /my_index/address/2
{ "postcode": "W2F 8HW" }
PUT /my_index/address/3
{ "postcode": "W1F 7HW" }
PUT /my_index/address/4
{ "postcode": "WC1N 1LZ" }
PUT /my_index/address/5
{ "postcode": "SW5 0BE" }
现在这些数据已可查询。