SQL IN equivalent with ElasticSearch
本文关键字:ElasticSearch with equivalent IN SQL | 更新日期: 2023-09-27 18:30:29
>我正在尝试弄清楚如何使用ElasticSearch执行等效的SQL IN子句。
下面的查询将起作用,但是当我将其更改为"查询"时:["1589","1590"]则不起作用。我相信它正在对同一字段的这两个值执行 AND,我希望它执行 OR 或 WHERE IN。
工程
{
"size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"userId": {
"query": ["1589"]
}
}
}
]
}
}
}
失败
{
"size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"userId": {
"query": ["1589", "1590"]
}
}
}
]
}
}
}
那么下面应该可以工作 -
{
"size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"userId": {
"query": ["1589"]
}
}
},
{
"match": {
"userId": {
"query": ["1590"]
}
}
}
]
}
}
}
记住 must 是类似 AND 的东西,应该可以(单独)用来获得类似 OR 的东西
您没有提到您使用哪个版本,1.7 具有术语过滤器,在 2.x 中它被术语查询所取代。似乎 userId 将被not_analyzed
并且匹配是"预期"用于分析字段。它们支持组合术语数组的各种方式,至少过滤器支持。