【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件

需求场景: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。

商品表中有一个type字段,储存的事商品类型例如:1.热销单品,2.品类TOP10,3.销量榜TOP10等等

它的type字段值很有可能是1,2,3,4

在mysql中实现语句

bash 复制代码
select * from product where FIND_IN_SET('4',type)

就可以查询到实例里的数据,那么在es里要怎么实现呢!?

es中实现mysql中的FIND_IN_SET查询条件

第一步:插入数据时将原有的1,2,3,4修改成数组1,2,3,4

php 复制代码
$string = '1,2,3,4,5';
//将数据库里的字符串分割成数组,将输入存入es内
$array = explode(",", $string);
$data['type'] = $array;
$params = [
    'index' => 'index_new', // 索引名称
    'type' => 'my_type',  // 类型名称(注意:在 Elasticsearch 7.x+ 中,类型已被弃用)
    'id' => $id,        // 文档ID(可选,如果不提供,则自动生成)
    'body' => $data,
];
 // 添加文档到索引
 return $this->client->index($params);

第二步:查询type内包含4的数据

php 复制代码
// 初始化查询参数数组
$params = [
    'index' => 'index_new', // 设置索引名称为'index_new'
    'body' => [ // 查询主体内容
        'query' => [ // 定义查询结构
            'bool' => [ // 使用布尔查询组合多个查询条件
                'must' => [ // 必须满足以下所有条件
                    [ // 匹配 type 字段的特定值
                        'terms' => [ // 使用terms查询匹配多个值
                            'type' => [4] // 查询条件为type字段等于4。此处[type]应为[type_id],若按原需求应匹配type_id字段,则为笔误。
                        ]
                    ],
                ]
            ]
        ]
    ]
];

$response = $this->client->search($params);
// 处理响应
if (isset($response['hits']['hits']) && !empty($response['hits']['hits'])) {
    // 遍历结果并输出
    return $response['hits']['hits'];
} else {
    return [];
}
相关推荐
say_fall11 分钟前
【Git 精品详解】企业规范:企业级开发模型、Git Flow、发版流程规范、Code Owner 制度、事故应急回滚
大数据·linux·服务器·git·学习·elasticsearch
南墙上的石头11 小时前
麒麟 V10 重装人大金仓 V8R6 踩坑实录(含 MySQL 兼容模式)
数据库·mysql
执子手 吹散苍茫茫烟波14 小时前
RC 隔离级别下 MySQL InnoDB 死锁典型案例
数据库·mysql
峥无17 小时前
深入理解MySQL事务与MVCC机制
数据库·mysql
Elastic 中国社区官方博客20 小时前
跟踪资金流向:使用 ES|QL 和跨集群搜索追踪洗钱网络
大数据·人工智能·安全·elasticsearch·搜索引擎·金融·全文检索
要开心吖ZSH20 小时前
MVCC 进阶:快照读 vs 当前读、幻读与 Next-Key Lock
java·数据库·sql·mysql·mvcc
万亿少女的梦16820 小时前
基于Spring Boot的天空影院电影网站系统设计与实现
java·spring boot·mysql·vue·系统设计
万亿少女的梦16821 小时前
基于Spring Boot的社区管理系统设计与实现
java·spring boot·mysql·vue·系统设计
翔云12345621 小时前
简单概括主库上 Executed_Gtid_Set 是什么时候更新的
数据库·mysql
要开心吖ZSH21 小时前
Java事务与MySQL事务的关系及MVCC通俗解析
java·开发语言·mysql·mvcc