行 20110105-1-15-6666 は正しく範囲 [20110103-1-23-, 20110105-1-23-) にあります。これは、15 が 23 よりも小さく、行の並べ替えが辞書式であるためです。
「ストア 15 に関連する行も取得しています」とおっしゃっていましたが、行キーの 3 番目の数字 ( ________-_-23-
) は、行の何らかの属性であると想像できます。
このテーブルのスキーマを変更して、この「店舗番号」を列にすることをお勧めします。これにより、キーが次のよう20110103-1
になり、「店舗」列にそれらの番号15
などが表示されます23
。
このようにして、スキャンで列 store=15 を持つ行をフィルターで除外できます。
Java API を使用している場合、これは次のようになります。
SingleColumnValueFilter filter = new SingleColumnValueFilter(
Bytes.toBytes("columnfamily"),
Bytes.toBytes("storenumber"),
CompareFilter.CompareOp.NOT_EQUAL,
Bytes.toBytes(15)
);
filter.setFilterIfMissing(true);
Scan scan = new Scan(
Bytes.toBytes("20110103-1"),
Bytes.toBytes("20110105-1")
);
scan.setFilter(filter);
行キーに格納しているデータが多すぎる可能性があります。これらの属性の一部を行キーに取り、それらを列にしてみてください。20110105
また、行キーの代わりに日付 (日付だと思います) を (テーブルのセルの) タイムスタンプとして使用できることにも注意してください。アプリケーションによって異なります。