Json Elasticsearch中的SQL查询
嘿,我是Elasticsearch的新手,想“翻译”这个SQL查询:Json Elasticsearch中的SQL查询,json,elasticsearch,lucene,Json,elasticsearch,Lucene,嘿,我是Elasticsearch的新手,想“翻译”这个SQL查询: SELECT"*" FROM Results WHERE "Id"=2 AND Number IN (25,27, 29) AND Date BETWEEN Date1 AND Date 2 ORDER BY Date LIMIT 20 EDIT:通过“translate”,我的意思是我想将SQL语句转换为elaticsearch查询。 我试过了,但下面的elasticsearch查询还不起作用:( 我想使用过滤器来实现这一
SELECT"*" FROM Results WHERE "Id"=2 AND Number IN (25,27, 29) AND Date BETWEEN Date1 AND Date 2 ORDER BY Date LIMIT 20
EDIT:通过“translate”,我的意思是我想将SQL语句转换为elaticsearch查询。
我试过了,但下面的elasticsearch查询还不起作用:(
我想使用过滤器来实现这一点,到目前为止,我已经做到了:
{
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"and": [
{
"range": {
"date": {
"gt": "2008-01-01",
"lt": "2014-01-01"
}
}
},
{
"term": {
"Id": 2
}
},
{
"terms": {
"number": [
25,
27,
29
]
}
},
{
"limit": {
"value": 20
}
}
]
}
}
}
我阅读了文档,尝试了一些例子,做了一些简单的查询,我希望有人能帮我解决这个问题!你的搜索看起来不错-哪个部分不起作用 我将使用限制返回结果的数量(而不是限制检查的文档数量的限制)。 我还添加了一个 使用筛选器的缺点是它不会进行任何评分-可能您应该将(25,27,29)部分中的
数字移动到一个查询中,然后匹配次数越多的结果评分越高?
但其他字段看起来适合过滤器(即二进制匹配/不匹配)
在您的帮助下,当我删除排序部分中的“日期”时,它现在可以工作了。否则我会得到[没有找到[date]的映射以便进行排序]
我已按序号的日期进行排序。如果它对您有效,您能接受其中一个答案吗?注意:您还可以检查您的SQL查询是否直接与您的Elasticsearch实例一起运行,因为。
curl -XGET 'http://localhost:9200/myindex/results/_search?pretty' -d '{
"size" : 20,
"sort" : [{"number" : {"order" : "desc"}}],
"filter": {
"and": [
{
"range": {
"date": {
"gt": "2008-01-01",
"lt": "2014-01-01"
}
}
},
{
"term": {
"Id": 2
}
},
{
"terms": {
"number": [
25,
27,
29
]
}
}
]
}
}'