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

回到顶部