想知道以下sql查询的等效弹性搜索查询?
SELECT * FROM table1 where val1 in (SELECT val1 FROM table1 WHERE val2 = "123");
如何以高效的方式实现这一目标?
一种方法是在第一个Elasticsearch查询中获取所有val1,并使用val1值获取第二个Elasticsearch查询中的所有值。有没有其他方法可以在单个Elasticsearch查询中获得结果,而不是两个Elasticsearch查询
答案 0 :(得分:0)
您可以根据HTTP POST
请求进行查询。
请求:
http://localhost:9200/yourindex/_search
请求正文:
{
"query": {
"query_string": {
"query": "val1:(val2:\"123\")"
}
}
}
您可以使用ES OR 中的:
符号,而不是使用 IN 关键字,您仍然可以使用Terms Query。这SO&这thread可能会有所帮助。
修改强>
使用条款查询:
{
"query" : {
"bool" : {
"filter" : {
"terms" : {
"val1" : [ "val2" : ["123"]]
}
}
}
}
}