查询

查询示例

  1. curl -H "content-type: application/json" -XPOST -d'
  2. {
  3. "query": {
  4. "sum": [{
  5. "field": "field_name",
  6. "feature": [0.1, 0.2, 0.3, 0.4, 0.5],
  7. "min_score": 0.9,
  8. "boost": 0.5
  9. }],
  10. "filter": [{
  11. "range": {
  12. "field_name": {
  13. "gte": 160,
  14. "lte": 180
  15. }
  16. }
  17. },
  18. {
  19. "term": {
  20. "field_name": ["100", "200", "300"],
  21. "operator": "or"
  22. }
  23. }]
  24. },
  25. "direct_search_type": 0,
  26. "quick": false,
  27. "vector_value": false,
  28. "online_log_level": "debug",
  29. "size": 10
  30. }
  31. ' http://router_server/$db_name/$space_name/_search

查询参数整体json结构如下:

  1. {
  2. "query": {
  3. "sum": [],
  4. "filter": []
  5. },
  6. "direct_search_type": 0,
  7. "quick": false,
  8. "vector_value": false,
  9. "online_log_level": "debug",
  10. "size": 10
  11. }

参数说明:

字段标识类型是否必填备注
sumjson数组查询特征
filterjson数组查询条件过滤: 数值过滤 + 标签过滤
direct_search_typeint默认0
quickbool默认false
vector_valuebool默认false
online_log_levelstring值为debug, 开启打印调试日志
sizeint返回结果数量
  • sum json结构说明:
  1. "sum": [{
  2. "field": "field_name",
  3. "feature": [0.1, 0.2, 0.3, 0.4, 0.5],
  4. "min_score": 0.9,
  5. "boost": 0.5
  6. }]
  • 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结构说明:

  1. "filter": [
  2. {
  3. "range": {
  4. "field_name": {
  5. "gte": 160,
  6. "lte": 180
  7. }
  8. }
  9. },
  10. {
  11. "term": {
  12. "field_name": ["100", "200", "300"],
  13. "operator": "or"
  14. }
  15. }
  16. ]
  • 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值。