基于ElasticSearch的二手房搜索与数据分析可视化系统

版本: Elasticsearch7.10.0

前言:

随着房地产市场的逐步成熟以及互联网技术的飞速发展,二手房交易市场呈现出线上化、智能化的显著趋势。越来越多的购房者和售房者倾向于通过二手房平台获取信息、完成交易。为了更加满足目标客户群体筛选房源数据并且快速预览当前市场行情的数据统计情况。因此,开发本系统完成条件筛选房源检索和数据可视化大屏等主要功能。
为了实现上述功能,本系统采用Elasticsearch作为二手房数据的搜索、存储和分析引擎,利用Kibana平台完成数据检索分析和数据可视化大屏的搭建。

数据来源:广东省链家网二手房在售房源(2w+)

系统架构设计

ElasticSearch搜索引擎与Kibana分析可视化平台

对存储在传统的关系型和非关系型数据库的数据,筛选条件检索获取数据并不高效和方便,利用ElasticSearch可以高效筛选获取数据,同时其水平扩展性的优点为系统未来发展和扩展提供便携性。
同时Kibana作为 Elasticsearch设计的开源分析和可视化平台,通过友善美观的界面、简化方便的REST API调用,帮助我们完成数据分析、数据检索以及数据可视化等场景的系统搭建。

数据基础操作与检索功能

本系统最大的特点之一就是实现存储在ElasticSearch的数据进行增删查改、相关查询、检索高亮和聚合分析功能。

在ElasticSearch官方提供的REST API中,我们可以使用Kibana的开发工具,通过简单的HTTP请求,使用执行简短的JSON格式代码,完成对ElasticSearch的交互以及数据索引映射,数据存储、数据检索和数据分析操作等多场景功能,丰富我们的系统业务功能。本系统中,我们将采用REST API,实现基础的数据增删查改;布尔、范围、模糊查询等高级功能;以及对数据的检索高亮和聚合分析处理。帮助我们快速获取了解目标房源信息内容。

数据可视化大屏

通过Kibana,我们将基于房源数据,通过创建全局条件筛选控件,以及多维度数据分析与可视化,完成以下多表可视化大屏功能展示:

Kibana通过交互式可以快速完成对数据不同属性或多维度图表的设计和渲染。通过清洗后的二手房源数据信息内容,我们将通过Kibana提供的可视化图表模板,完成TOP小区与平均单价的柱状折线图、关注人数与发布区间关联的柱状图、单价与总价区间的饼图和树状图、区域频率云图、楼层等级与装修情况堆叠条形图、面积户型与室厅、朝向分类的面积图等构建可视化大屏。

索引设计说明

通过对链家网的数据爬取和清洗,生成的最终数据包含房源多个信息内容值。其中包括以下内容:

本索引设计专为房产数据存储与检索打造,旨在满足多元业务需求。字段类型依数据特性设定,“关注人数”“单价” 等整数型数据采用 “long” 类型,既保证数值范围,又便于快速计算;“总价”“面积” 等含小数的数据用 “double” 类型,确保精确存储与计算。“关注等级”“区域” 等分类或区间字段用 “keyword” 类型,支持精确匹配与聚合统计;“标题” 字段用 “text” 类型,实现全文检索。

充分发挥数据优势,设计合理的字段类型配置让数据检索高效,无论是数值筛选还是分类匹配都能快速响应。清晰的字段定义利于数据规范化管理,减少错误与冗余。同时,其兼容性强,方便应对后续业务拓展和字段新增。通过此设计,可大幅提升房产数据处理效率,为房产信息系统稳定运行和业务发展提供坚实支撑。

系统详细设计与实现

CRUD

创建索引

利用ElasticSearch提供的官方REST API和Kibana平台提供执行窗口。构建创建zaishou索引的代码,完成对索引的构建,并且通过Kibana平台直接导入数据。

#删除索引 
DELETE /zaishou
# 构建索引
PUT /zaishou
{
  "mappings": {
    "properties": {
      "新编号": {
        "type": "keyword",
        "index": true,
        "doc_values": true
      },
      "标题": {"type": "text"},
      "城市": {"type": "keyword"},
      "区域": {"type": "keyword"},
      "小区名称": {"type": "keyword"},
      "室": {"type": "long"},
      "厅": {"type": "long"},
      "户型": {"type": "keyword"},
      "面积": {"type": "double"},
      "面积户型": {"type": "keyword"},
      "朝向": {"type": "keyword"},
      "朝向分类": {"type": "keyword"},
      "楼层": {"type": "keyword"},
      "楼层等级": {"type": "keyword"},
      "装修情况": {"type": "keyword"},
      "总价": {"type": "double"},
      "总价区间": {"type": "keyword"},
      "单价": {"type": "long"},
      "单价区间": {"type": "keyword"},
      "关注人数": {"type": "long"},
      "关注等级": {"type": "keyword"},
      "发布时间": {"type": "long"},
      "发布区间": {"type": "keyword"}
    }
  }
}

数据的插入

根据索引映射和数据内容:

  1. 对单条数据使用POST /zaishou/_doc/{索引ID}
  2. 对多条数据使用POST /zaishou/_bulk

数据的修改

根据索引映射、数据内容和业务需求:

  1. 通过 POST /zaishou/_update/{索引ID}/
  2. 通过POST /zaishou/_bulk

数据的删除

根据索引映射、数据内容和业务需求:

  1. 删除单条数据通过 DELETE/zaishou/_doc/{索引ID}/
  2. 删除多条数据使用POST /zaishou/_bulk

高级查询

布尔查询

  1. 通过bool查询组合多维度条件,确保结果精准匹配需求
  2. 利用must,限定房源所在城市为“东莞”,户型为 “3 室 2 厅”,这两个条件为检索的基础前提
  3. 通过filter过滤器,对总价进行range范围筛选,要求总价≥200 万且≤500 万
  4. 通过match_not排除标题包含“老破小” 的房源,避免无关结果干扰
  5. 按总价升序排列(asc),并限制返回前10 条,便于优先查看低价房源

范围查询

  1. 通过多条件范围range筛选,利用bool查询组合多维度条件
  2. 使用must限定珠海城市范围的数据内容
  3. 筛选面积范围在90-150 平方米,总价限制低于 300万元,发布时间在30-60天内的房源数据

模糊查询

  1. 使用通配符wildcard,查询匹配标题中包含 “学” 和 “房” 的任意文本,匹配”学区房”、”学校附近房”、”学区好房” 等多种变体。实现模糊查询
  2. 根据索引设置,标题为text类型,使用match对 “学区房” 进行标准分词匹配
  3. 通过should 连接两种条件,满足任一条件即可返回结果,提高准确率和召回率

高亮显示与聚合分析

高亮显示

  1. 多字段同时在“标题”和“户型”查找关键字
  2. 通过highlight用<strong>标签标记匹配字段内容,实现高亮显示

聚合分析

  1. 筛选广州城市,根据区域进行聚合处理,并且升序排序
  2. 对筛选分组后的组进行平均总价和平均单价计算,完成聚合分析

  1. 使用嵌套聚合操作,外层聚合该城市的文档总数,内层聚合该城市的关注人数总和。

  1. 通过自定义区间范围,对文档进行聚合分类分析,完成对面积大小的分类统计

用户行为分析

通过对筛选城市的人群对二手房源的关注程度进行分析,分析目标用户喜好,通过筛选获取广州城市近三个月发布的存量房源,利用聚合函数统计出前十的该城市热门小区及其平均总价和平均面积,户型分布情况,关注人数总和在售房源数量了解不同小区的销售和市场行情情况。

数据可视化大屏

自定义字段显示和过滤条件设置

数据集中存在着大量不同城市数据,同时通过市场产品调研,发现市面上的产品均提供了对发布时间、单价区间等条件筛选的选择器。因此我们将通过上面的调研结果,为用户提供城市、发布时间、单价、室厅数量选择器。帮助用户自定义筛选房源内容。同时用户可以根据Kibana平台自定义筛选条件内容。

TOP小区市场行情与发布区间关注度对比

通过Kibana可视化模板,我们针对数据特征及其分布情况,筛选出存量房源数量TOP20的小区生成柱状图分布表,并计算出其各个小区的平均单价生成折线趋势表。

通过聚合不同发布区间的房源数量及其对该时间段关注人数进行统计生成条形图。

为用户提供直观的对比,于此同时可根据自定义筛选条件动态查询结果。

单价、总价区间与高频区域云图

通过Kibana可视化平台提供的模板,结合数据分布特征和业务需求。我们针对不同区间段的数据进行分类统计求和。利用饼图、树状图、云图,展示当前市场下,平均总价、平均单价和热门区域的分布情况。为用户提供直观的数据预览。

楼层等级与装修情况

通过Kibana可视化平台提供的模板,结合数据分布特征,我们将挖掘出存量二手房在楼层等级与装修情况下的潜在关系,并利用堆叠条形图,进行可视化展示。帮助销售人员或其他相关人员快速了解潜在关系。

面积户型与户型格局、朝向分类

通过Kibana可视化平台提供的模板,结合数据分布特征,借鉴前小节的思路,我们

察觉到面积户型同户型格局、朝向分类的潜在关系,是提高消费者或其他人员的关注度的重要因素条件之一。因此针对上述思路,我们通过面积户型与户型格局、朝向分类之间的比对,生成相对应的面积图。为用户提供具有参考意义的可视化图形。

可视化大屏总体布局设计

迁移数据

POST _reindex
{
  "source": {
    "index": "original_index"  // 原索引名称
  },
  "dest": {
    "index": "new_index"       // 新索引名称,需提前构建
  },
  "script": {
    "source": """
      // 设置文档ID = "新编号"的值
      ctx._id = ctx._source.新编号; 
      
      // 可选:从_source中移除"新编号"字段(避免重复存储)
      ctx._source.remove("新编号");
    """
  }
}

#验证结果
GET /new_index/_search
{
  "query": { "match_all": {} }
}

DELETE /original_index  #删除旧索引
POST _aliases
{
  "actions": [
    { "add": { "index": "new_index", "alias": "original_index" } } #修改别名
  ]
}
页面链接:https://www.datazzh.top/archives/2270/2025/06/27/
上一篇
下一篇