elasticsearch 向量检索的简单例子

该文展示了如何在Elasticsearch7.13.2版本中创建包含向量字段的索引,向量类型为dense_vector,并插入数据。接着,使用向量进行L2范数的查询脚本来检索相似记录,并执行了一个带分组的检索,对结果进行聚合和排序。
摘要由CSDN通过智能技术生成

以下向量检索的实例均在elasticsearch7.13.2 kibana7.13.2上执行且通过

1.创建含有向量字段的索引,向量的数据类型为dense_vector

PUT pic_vector_test1
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "index": true
      },
      "p": {
        "type": "text",
        "index": true
      },
      "title_vector": {
        "type": "dense_vector",
        "dims": 2,
        "index": true
      }
    }
  }
}

2.像索引中添加数据

POST pic_vector_test1/_doc
{
  "title" : "专利1",
  "pn" : "cn290102112s",
  "title_vector" : [1, 1]
}

POST pic_vector_test1/_doc
{
  "title" : "专利2",
  "pn" : "cn290102112s",
  "title_vector" : [1, 2]
}


POST pic_vector_test1/_doc
{
  "title" : "专利3",
  "pn" : "cn29033312s",
  "title_vector" : [1, 2]
}
POST pic_vector_test1/_doc
{
  "title" : "专利5",
  "pn" : "cn29033312s",
  "title_vector" : [1, 2]
}


POST pic_vector_test1/_doc
{
  "title" : "专利6",
  "pn" : "cn290102112s",
  "title_vector" : [1, 1]
}

POST pic_vector_test1/_doc
{
  "title" : "专利55",
  "pn" : "cn290102112s",
  "title_vector" : [1, 2]
}

POST pic_vector_test1/_doc
{
  "title" : "专利31",
  "pn" : "cn290102112s",
  "title_vector" : [6.0, 2.999]
}

3.使用向量进行查询

GET pic_vector_test1/_search
{
  "query": {
    "script_score": {
      "query": {		
        "match_all": {
          
        } 
      },
      "script": {
        "source": "l2norm(params.query_vector,'title_vector')",
        "params": {
          "query_vector": [1,1]
        }
      }
    }
  }
}

4.带分组的检索

GET pic_vector_test1/_search
{
  "size": 0, 
  "query": {
    "script_score": {
      "query": {		
        "match_all": {
          
        } 
      },
      "script": {
        "source": "1 / (1 + l2norm(params.query_vector, doc['title_vector']))",
        "params": {
          "query_vector": [1,1]
        }
      }
    }
  },
   "aggs": {
    "id_distint": {
      "terms": {
        "field": "pn",
        "size": 5
      },
      "aggs": {
        "my_hits": {
          "top_hits": {
            "_source": {}, 
            "size": 2
          }
        }
      }
    }
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值