【发布时间】:2021-09-17 00:24:42
【问题描述】:
我有这个 SQL:
select *
from users
where company_id = null
or company_id = 123
如何在 Elasticsearch 中编写类似的查询?我希望查询返回所有具有company_id 即nil 或具有与当前用户匹配的company_id 的候选人。
我已经用 should 尝试过这个:
query: {
bool: {
should: [
{
bool: {
must_not: {
exists: {
field: "company_id"
}
}
}
},
{
term: {
company_id: 123
}
}
]
}
}
这将返回company_id 为nil 的用户。
我也尝试过使用正则表达式,但它会返回拥有company_id 的用户。
query: {
bool: {
should: [
{
regexp: {
comapny_id: ".+"
}
},
{
term: {
company_id: {
value: 123
}
}
}
]
}
}
谢谢。
【问题讨论】:
-
第一次尝试哪种情况失败?
-
第二个,该查询只返回company_is为nil的用户
-
这SO Post 有帮助吗?我对弹性搜索语法不太熟悉
-
您的第一次尝试应该会奏效。
company_id字段的数据类型是什么?当您只使用term查询时,您是否能够找到 ID 为123的候选人? -
company_id 在 elasticsearch 中的数据类型是 TEXT,因为在活动记录中它的数据类型是 UUID。不,当我只使用不返回候选人的术语时,我认为我的问题是这个术语查询。
标签: ruby-on-rails ruby elasticsearch