首頁(yè)
云原生多模數(shù)據(jù)庫(kù) Lindorm
操作指南
寬表引擎(兼容HBase或Cassandra)
開發(fā)指南
搜索索引
使用手冊(cè)
高級(jí)查詢語(yǔ)法
高級(jí)查詢語(yǔ)法
更新時(shí)間:
為了滿足更多的查詢檢索需求,SELECT查詢語(yǔ)句中支持search_query
關(guān)鍵字,使用與Lucene(全文檢索引擎工具包)查詢語(yǔ)法相似。本文介紹通過(guò)search_query
關(guān)鍵字查詢數(shù)據(jù)的使用示例。
前提條件
已開通云原生多模數(shù)據(jù)庫(kù) Lindorm實(shí)例的搜索索引服務(wù),具體操作請(qǐng)參見開通搜索索引。
已通過(guò)Lindorm-cli連接Lindorm寬表引擎,具體操作請(qǐng)參見通過(guò)Lindorm-cli連接并使用寬表引擎。
Lindorm寬表引擎小版本為2.2.17及以上,關(guān)于升級(jí)小版本的操作請(qǐng)參見升級(jí)小版本。
已準(zhǔn)備測(cè)試數(shù)據(jù)并創(chuàng)建搜索索引,詳情請(qǐng)參見管理搜索索引。
語(yǔ)法
SELECT selectors
FROM table
WHERE (search_query = 'search_expression')
[ LIMIT n ];
示例
OR
邏輯查詢SELECT * FROM search_table WHERE search_query = 'name:陳女士 age:[40 TO 60]';
與以下語(yǔ)句功能相同。
SELECT * FROM search_table WHERE name='陳女士' OR (age >= 40 AND age <= 60);
返回結(jié)果:
+---------+--------+-----+--------+--------------+------------------+------+ | user_id | name | age | gender | address | email | city | +---------+--------+-----+--------+--------------+------------------+------+ | 28 | 陳女士 | 36 | F | 深圳市南山區(qū) | a***@example.net | 深圳 | +---------+--------+-----+--------+--------------+------------------+------+
AND
邏輯查詢SELECT * FROM search_table WHERE search_query = '+name:張先生 +age:[10 TO 40]';
與以下語(yǔ)句功能相同。
SELECT * FROM search_table WHERE name='張先生' AND (age >= 10 AND age <= 40);
返回結(jié)果:
+---------+--------+-----+--------+--------------+------------------+------+ | user_id | name | age | gender | address | email | city | +---------+--------+-----+--------+--------------+------------------+------+ | 1 | 張先生 | 18 | M | 北京市朝陽(yáng)區(qū) | a***@example.net | 北京 | +---------+--------+-----+--------+--------------+------------------+------+
聚合統(tǒng)計(jì)
SELECT count(*) FROM search_table WHERE search_query = 'age:[10 TO 40]';
返回結(jié)果:
+----------+ | COUNT(*) | +----------+ | 4 | +----------+
分詞查詢
SELECT * FROM search_table WHERE search_query='address:北京';
返回結(jié)果:
+---------+--------+-----+--------+--------------+------------------+------+ | user_id | name | age | gender | address | email | city | +---------+--------+-----+--------+--------------+------------------+------+ | 1 | 張先生 | 18 | M | 北京市朝陽(yáng)區(qū) | a***@example.net | 北京 | +---------+--------+-----+--------+--------------+------------------+------+
結(jié)果排序。如果需要按照指定的
age
字段進(jìn)行排序,請(qǐng)執(zhí)行以下語(yǔ)句。SELECT * FROM search_table WHERE search_query='{"q":"address:杭州", "sort":"age asc"}';
說(shuō)明上述語(yǔ)句中
q
和sort
為系統(tǒng)關(guān)鍵字,不需要修改。返回結(jié)果:
+---------+--------+-----+--------+--------------+------------------+------+ | user_id | name | age | gender | address | email | city | +---------+--------+-----+--------+--------------+------------------+------+ | 20 | 王先生 | 28 | M | 杭州市濱江區(qū) | a***@example.net | 杭州 | | 6 | 李先生 | 32 | M | 杭州市余杭區(qū) | a***@example.net | 杭州 | +---------+--------+-----+--------+--------------+------------------+------+
Elasticsearch兼容語(yǔ)法。
SELECT * FROM search_table WHERE search_query='{"query": { "bool": { "must": { "match": { "address": "北京" } } } } }';
與以下語(yǔ)句功能相同。
SELECT * FROM search_table WHERE address='北京';
返回結(jié)果:
+---------+--------+-----+--------+--------------+------------------+------+ | user_id | name | age | gender | address | email | city | +---------+--------+-----+--------+--------------+------------------+------+ | 1 | 張先生 | 18 | M | 北京市朝陽(yáng)區(qū) | a***@example.net | 北京 | +---------+--------+-----+--------+--------------+------------------+------+
文檔內(nèi)容是否對(duì)您有幫助?