Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Elasticsearch中的SQL查询_Json_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Lucene - Fatal编程技术网 elasticsearch,lucene,Json,elasticsearch,Lucene" /> elasticsearch,lucene,Json,elasticsearch,Lucene" />

Json 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查询还不起作用:( 我想使用过滤器来实现这一

嘿,我是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查询还不起作用:(

我想使用过滤器来实现这一点,到目前为止,我已经做到了:

{
"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
                ]
            }
        }
    ]
  }
}'