从下面的表格图中,我试图选择低于5的所有pH读数.
我遵循了这三条建议:
这是我的查询:
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) 我正在尝试将范围查询与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有数据,尤其是日期类似的东西:
{
"startTime": {
"type": "string",
"format": "yyyy/MM/dd",
"index": "analyzed",
"analyzer": "keyword"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在添加一个日期范围选择器,并希望使用所选日期来查询elasticsearch以获取所选范围内的startTime数据.我不确定如何将此查询构造为elasticsearch,或者它是否可以使用这是一个字符串字段(尽管我可以改变它).
有人能帮我一下吗?
最近我一直在研究数据库中常见的索引结构,比如 B+-trees 和 LSM。我对点读/写/删除/压缩如何在 LSM 中工作有一个可靠的处理。
例如(在 RocksDB/levelDB 中),在点查询读取时,我们将首先检查内存索引(memtable),然后是从最近到最近的一些 SST 文件。在 LSM 的每个级别上,我们将使用二分搜索来帮助加快查找给定密钥的每个 SST 文件的速度。对于给定的 SST 文件,我们可以使用布隆过滤器快速检查密钥是否存在,从而节省更多时间。
我没有看到范围读取具体是如何工作的。LSM 是否必须在每个 SST 级别(包括 memtable)上打开一个迭代器,并在所有级别上同步迭代,以返回最终的排序结果?它是否仅作为一系列点查询实现(几乎绝对不是)。是否先拉出所有潜在的键,然后再排序?希望有人在这里有任何见解。
我无法找到有关该主题的太多文档,任何见解在这里都会有所帮助。
我需要根据日期(在此处添加字段)过滤一组值,然后将其分组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"在执行查询时给我一个错误。这是正确的做法吗?
如果仅执行日期汇总,则显示的值不在指定的日期范围内