弹性搜索范围查询(PHP客户端)


Elasticsearch range query ( PHP Client )

我有这个搜索查询:

 $params = [
    'index' => 'veenendaal2',
    'type' => 'passanten2',
    'size' => $size,
    'body' => [
      'query' => [
        "match_all" => [],
        'filter' => [
          'range' => [
            'Tijdsperiode' => [
              'gte' => '2016-01-30 01:00:00',
              'lte' => '2016-01-30 08:00:00'
            ]
          ]
        ]
      ],
      'mappings' => [
        '_default_' => [
          'properties' => [
            'Tijdsperiode' => [
              'type' => 'date',
              'format' => 'yyyy-MM-dd HH:mm:ss'
            ]
          ]
        ]
      ]
    ]
  ];

但是我无法让它过滤 2 个日期之间的结果?

有什么想法可以解决这个问题吗?我需要更改语法吗?

您可能需要

从搜索查询中删除mappings部分,因为它不属于那里(即仅在创建索引时需要它,而不是在搜索时需要它)。然后,您可能缺少filtered查询,这应该足以为您提供一些文档。

 $params = [
    'index' => 'veenendaal2',
    'type' => 'passanten2',
    'size' => $size,
    'body' => [
      'query' => [
        'filtered' => [
          'filter' => [
            'range' => [
              'Tijdsperiode' => [
                'gte' => '2016-01-30 01:00:00',
                'lte' => '2016-01-30 08:00:00'
              ]
            ]
          ]
        ]
      ]
    ]
  ];