标签: range-query

尽管存在相等运算符和二级索引,但Cassandra CQL范围查询被拒绝

从下面的表格图中,我试图选择低于5的所有pH读数.

我遵循了这三条建议:

  1. 使用ALLOW FILTERING
  2. 包括相等比较
  3. 在reading_value列上创建二级索引.

这是我的查询:

select * from todmorden_numeric where sensor_name = 'pHradio' and reading_value < 5  allow filtering;
Run Code Online (Sandbox Code Playgroud)

哪条信息被拒绝:

Bad Request: No indexed columns present in by-columns clause with Equal operator
Run Code Online (Sandbox Code Playgroud)

我尝试将一个辅助索引添加到sensor_name列,并被告知它已经是密钥的一部分,因此已经编入索引.

我在表中使用了一段时间之后创建了索引 - 这可能是问题吗?我运行"nodetool refresh"希望它能使索引可用,但这不起作用.这是输出describe table todmorden_numeric:

CREATE TABLE todmorden_numeric (
  sensor_name text,
  reading_time timestamp,
  reading_value float,
  PRIMARY KEY ((sensor_name), reading_time)
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='Data that suits being stored as floats' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  index_interval=128 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' …
Run Code Online (Sandbox Code Playgroud)

cql cassandra range-query secondary-indexes

4
推荐指数
1
解决办法
2255
查看次数

使用elasticsearch对字符串进行范围查询

我正在尝试将范围查询与elasticsearch一起使用

{
    "query": {
        "range": {
             "order_no": {
                 "gte": "VM-0001",
                 "lte": "VM-0005"
             }
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

但弹性返回没有结果。我发现系统有字符串包含-或的问题_

这是该字段的映射:

"order_no" : {
      "type" : "string",
      "index_analyzer" : "str_index_analyzer",
      "search_analyzer" : "str_search_analyzer"
}
Run Code Online (Sandbox Code Playgroud)
{
  "analysis": {
    "analyzer": {
      "str_search_analyzer": {
        "tokenizer": "keyword",
        "filter": [
          "lowercase"
        ]
      },
      "str_index_analyzer": {
        "tokenizer": "keyword",
        "filter": [
          "lowercase",
          "substring"
        ]
      }
    },
    "filter": {
      "substring": {
        "type": "nGram",
        "min_gram": 1,
        "max_gram": 20
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

elasticsearch range-query

3
推荐指数
1
解决办法
1万
查看次数

elasticsearch查询日期范围

我的elasticsearch有数据,尤其是日期类似的东西:

{
  "startTime": {
    "type": "string",
    "format": "yyyy/MM/dd",
    "index": "analyzed",
    "analyzer": "keyword"
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在添加一个日期范围选择器,并希望使用所选日期来查询elasticsearch以获取所选范围内的startTime数据.我不确定如何将此查询构造为elasticsearch,或者它是否可以使用这是一个字符串字段(尽管我可以改变它).

有人能帮我一下吗?

lucene search elasticsearch range-query

2
推荐指数
1
解决办法
1万
查看次数

范围查询如何在 LSM(日志结构合并树)上工作?

最近我一直在研究数据库中常见的索引结构,比如 B+-trees 和 LSM。我对点读/写/删除/压缩如何在 LSM 中工作有一个可靠的处理。

例如(在 RocksDB/levelDB 中),在点查询读取时,我们将首先检查内存索引(memtable),然后是从最近到最近的一些 SST 文件。在 LSM 的每个级别上,我们将使用二分搜索来帮助加快查找给定密钥的每个 SST 文件的速度。对于给定的 SST 文件,我们可以使用布隆过滤器快速检查密钥是否存在,从而节省更多时间。

我没有看到范围读取具体是如何工作的。LSM 是否必须在每个 SST 级别(包括 memtable)上打开一个迭代器,并在所有级别上同步迭代,以返回最终的排序结果?它是否仅作为一系列点查询实现(几乎绝对不是)。是否先拉出所有潜在的键,然后再排序?希望有人在这里有任何见解。

我无法找到有关该主题的太多文档,任何见解在这里都会有所帮助。

indexing key-value-store range-query lsm-tree

2
推荐指数
1
解决办法
1244
查看次数

弹性搜索中汇总日期范围过滤的值

我需要根据日期(在此处添加字段)过滤一组值,然后将其分组device_id。所以我正在使用以下内容:

{
  "aggs":{
    "dates_between":{
      "filter": {
        "range" : {
          "added" : {
            "gte": "2014-07-01 00:00:00",
            "lte" :"2014-08-01 00:00:00"
          }
        }
      },
      "aggs": {
        "group_by_device_id": {
          "terms": {
            "field": "device_id"
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

"Failed to parse source"在执行查询时给我一个错误。这是正确的做法吗?

如果仅执行日期汇总,则显示的值不在指定的日期范围内

elasticsearch range-query elasticsearch-aggregation

1
推荐指数
1
解决办法
4516
查看次数