Elasticsearch

Elasticsearch

1、数据库、Redis、同步如何做?

使用Mysql用来存储数据(可靠性最高的主数据源),用Es来做全文检索和特殊查询,用redis来做缓存。

数据同步方案常见的2种:

1.同步双写

最简单,在将数据写到mysql时,同时将数据写到ES或者redis。

缺点:

1、 硬编码,有需要写入mysql的地方都需要添加写入ES的代码;

2、 业务强耦合;

3、 存在双写失败丢数据风险;

4、 性能较差:本来mysql的性能不是很高,再加一个ES,系统的性能必然会下降。

异步双写(MQ方式)

针对多数据源写入的场景,可以借助MQ实现异步的多源写入。通过MQ的可靠性保证一致性。

2、精确查询常见的有哪些?

  • term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段
  • range查询:根据数值范围查询,可以是数值、日期的范围
    基本语法:
json 复制代码
// term查询
GET /indexName/_search
{
  "query": {
    "term": {
      "FIELD": {
        "value": "VALUE"
      }
    }
  }
}
// range查询
GET /indexName/_search
{
  "query": {
    "range": {
      "FIELD": {
        "gte": 10, // 这里的gte代表大于等于,gt则代表大于
        "lte": 20 // lte代表小于等于,lt则代表小于
      }
    }
  }
}

3.DSL查询分类

Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括:

  • 查询所有:查询出所有数据,一般测试用。例如:match_all

  • 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:

    • match_query
    • multi_match_query
  • 精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:

    • ids
    • range
    • term
  • 地理(geo)查询:根据经纬度查询。例如:

    • geo_distance
    • geo_bounding_box
  • 复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如:

    • bool
    • function_score
相关推荐
猫猫姐姐4 小时前
Flink基于Paimon的实时湖仓解决方案的演进
大数据·flink·湖仓一体
极客数模6 小时前
2025年(第六届)“大湾区杯”粤港澳金融数学建模竞赛准备!严格遵循要求,拿下大奖!
大数据·python·数学建模·金融·分类·图论·boosting
Elastic 中国社区官方博客8 小时前
Elastic AI agent builder 介绍(三)
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
王卫东10 小时前
深入HBase:原理剖析与优化实战
大数据·数据库·hbase
HaiLang_IT10 小时前
2026 人工智能与大数据专业毕业论文选题方向及题目示例(nlp/自然语言处理/图像处理)
大数据·人工智能·毕业设计选题
呆呆小金人10 小时前
SQL键类型详解:超键到外键全解析
大数据·数据库·数据仓库·sql·数据库开发·etl·etl工程师
StarRocks_labs10 小时前
StarRocks 4.0:基于 Apache Iceberg 的 Catalog 中心化访问控制
大数据·apache
梦子yumeko11 小时前
第六章langchain4j之Tools和prompt
大数据·prompt
AcrelGHP11 小时前
光储充微电网能量管理系统:构建绿色、高效、安全的能源未来
大数据·运维·人工智能
wudl556612 小时前
Flink RocksDB State Backend 详解
大数据·flink