"少于/超过价值"在elasticsearch

时间:2016-10-08 21:16:38

标签: php elasticsearch

我的文档中有3个字段:

  • id
  • 标题
  • TXT

我已使用以下代码在索引(文章)中插入了几条记录:

$es = Elasticsearch\ClientBuilder::create()->build();

$params = [
    'index'=>'articles',
    'type'  => 'article'
];

for ($i=1; $i<50000; $i++) {
    $params['body'] = [ 
       'id' => $i, 
       'title'=>'some title '.$i, 
       'txt'=>'some text '.$i
    ];
    $response = $es->index($params);
}

现在我想检索id > 20000的记录。 如何在Elasticsearch中执行这样的过滤器?

1 个答案:

答案 0 :(得分:1)

首先,您需要确保将id字段保存为long,您可以通过执行对<ES_HOST>:9200/articles/article/_mapping的GET请求来执行此操作,

然后,您可以运行此查询以获取相关ID:

{
    "query": {
        "bool": {
            "filter": {
                "range": {
                    "id": {
                        "gt": 20000
                    }
                }
            }
        }
    }
}