elasticsearch街道范围搜索
在elasticsearch中,我们有两个字段:街道编号1和街道编号2。我们在Elastic
Search中还有一个Address字段,而Address是2个字段与其他一些字段的组合。因此,我们的地址为:
- 1604-1612卡尔弗大厦
- 1608- 1645公园别墅
如果用户使用1610搜索,则应同时返回该地址。
有关如何形成查询的任何帮助?
回答:
想法是利用range
数据类型并将最小和最大街道号存储在该字段中。
在映射中,您将具有以下内容:
PUT property_index{
"mappings": {
"_doc": {
"properties": {
"street_number_range": {
"type": "integer_range"
},
"street_name": {
"type": "text"
}
}
}
}
}
然后,您可以像这样添加两个文档:
PUT property_index/_doc/1{
"street_number_range" : {
"gte" : 1604,
"lte" : 1612
},
"street_name": "Calver Building"
}
PUT property_index/_doc/2
{
"street_number_range" : {
"gte" : 1608,
"lte" : 1645
},
"street_name": "Park House"
}
最后,您的查询将如下所示,并且将返回两个文档
GET property_index/_search{
"query" : {
"term" : {
"street_number_range" : {
"value": 1610
}
}
}
}
更新
您还可以使用以下查询搜索范围:
GET property_index/_search{
"query" : {
"range" : {
"street_number_range" : {
"gte": 1600,
"lte": 1650
}
}
}
}
以上是 elasticsearch街道范围搜索 的全部内容, 来源链接: utcz.com/qa/406600.html