查询
查询示例
- curl -H "content-type: application/json" -XPOST -d'
- {
- "query": {
- "sum": [{
- "field": "field_name",
- "feature": [0.1, 0.2, 0.3, 0.4, 0.5],
- "min_score": 0.9,
- "boost": 0.5
- }],
- "filter": [{
- "range": {
- "field_name": {
- "gte": 160,
- "lte": 180
- }
- }
- },
- {
- "term": {
- "field_name": ["100", "200", "300"],
- "operator": "or"
- }
- }]
- },
- "direct_search_type": 0,
- "quick": false,
- "vector_value": false,
- "online_log_level": "debug",
- "size": 10
- }
- ' http://router_server/$db_name/$space_name/_search
查询参数整体json结构如下:
- {
- "query": {
- "sum": [],
- "filter": []
- },
- "direct_search_type": 0,
- "quick": false,
- "vector_value": false,
- "online_log_level": "debug",
- "size": 10
- }
参数说明:
字段标识 | 类型 | 是否必填 | 备注 |
---|---|---|---|
sum | json数组 | 是 | 查询特征 |
filter | json数组 | 否 | 查询条件过滤: 数值过滤 + 标签过滤 |
direct_search_type | int | 否 | 默认0 |
quick | bool | 否 | 默认false |
vector_value | bool | 否 | 默认false |
online_log_level | string | 否 | 值为debug, 开启打印调试日志 |
size | int | 否 | 返回结果数量 |
- sum json结构说明:
- "sum": [{
- "field": "field_name",
- "feature": [0.1, 0.2, 0.3, 0.4, 0.5],
- "min_score": 0.9,
- "boost": 0.5
- }]
- sum 支持多个(对应定义表结构时包含多个特征字段)。
- field 指定创建表时特征字段的名称。
- feature 传递特征,维数和定义表结构时维数必须相同。
- min_score 指定返回结果中分值必须大于等于0.9,两个向量计算结果相似度在0-1之间,min_score可以指定返回结果分值最小值,max_score可以指定最大值。如设置: “min_score”: 0.8,“max_score”: 0.95 代表过滤0.8<= 分值<= 0.95 的结果。同时另外一种分值过滤的方式是使用: “symbol”:”>=”,”value”:0.9 这种组合方式,symbol支持的值类型包含: > 、 >= 、 <、 <= 4种,value及min_score、max_score值在0到1之间。
boost指定相似度的权重,比如两个向量相似度分值是0.7,boost设置成0.5之后,返回的结果中会将分值0.7乘以0.5即0.35。
filter json结构说明:
- "filter": [
- {
- "range": {
- "field_name": {
- "gte": 160,
- "lte": 180
- }
- }
- },
- {
- "term": {
- "field_name": ["100", "200", "300"],
- "operator": "or"
- }
- }
- ]
- filter 条件支持多个,多个条件之间是交的关系。
- range 指定使用数值字段integer/float 过滤, filed_name是数值字段名称, gte、lte指定范围, lte 小于等于, gte大于等于,若使用等值过滤,lte和gte设置相同的值。上述示例表示查询field_name字段大于等于160小于等于180区间的值。
term 使用标签过滤, field_name是定义的标签字段,允许使用多个值过滤,可以求交“operator”: “or” , 求并: “operator”: “and”,上述示例表示查询field_name字段值是”100”、”200” 或”300”的值。
direct_search_type 指定查询类型,0代表若特征已经创建索引则使用索引,若没有创建则暴力搜索; -1 代表只使用索引进行搜索, 1代表不使用索引只进行暴力搜索。默认值是0。
- quick 搜索结果默认将PQ召回向量进行计算和精排,为了加快服务端处理速度设置成true可以指定只召回,不做计算和精排。
- vector_value为了减小网络开销,搜索结果中默认不包含特征数据只包含标量信息字段,设置成true指定返回结果中包含原始特征数据。
- online_log_level 设置成”debug” 可以指定在服务端打印更加详细的日志,开发测试阶段方便排查问题。
- size 指定最多返回的结果数量。若请求url中设置了size值http://router_server/$db_name/$space_name/_search?size=20优先使用url中指定的size值。