elasticsearch - 使用关键字词进行 Elasticsearch KNN 搜索
问题描述
我目前正在尝试构建一个搜索,其中 knn 搜索将在术语查询的结果集中使用。以下是我的测试查询,但我遇到了错误“查询格式错误,应为 [END_OBJECT] 但找到 [FEILD_NAME]”
GET my-index2/_search
{
"query":{
"bool":{
"should":[
{"terms":{"t":["hello"]}}
]
},
"knn": {
"my_vector2": {
"vector": [2, 3, 5, 6],
"k": 2
}
}
},
"_source":["t"]
}
有没有办法做到这一点?
解决方案
我认为您的查询格式不正确,应该如下所示,即knn
查询应该在bool/filter
数组内,以便它在与terms
查询选择的数据集相同的数据集上工作。:
{
"query": {
"bool": {
"filter": [
{
"terms": {
"t": [
"hello"
]
}
},
{
"knn": {
"my_vector2": {
"vector": [
2,
3,
5,
6
],
"k": 2
}
}
}
]
}
},
"_source": [
"t"
]
}
推荐阅读
- bash - 我应该如何使用 sed 删除特定字符串并允许重复更多字符?
- mysql - 将微秒时间戳转换为 mysql 中谷歌集群跟踪的天小时分钟
- amazon-web-services - 使用 Scala 在 AWS Kinesis Firehose 中通过 spark 推送 Twitter 数据
- python - 比较两个数据框中的值并在差异大于设定点时生成报告
- c++ - 为什么 ofstream 在这里工作,而不是 fstream?
- awk - 删除搜索模式之间的文本/行
- python - 如何检查传递给 filter() 函数的内容
- amazon-dynamodb - 多租户应用程序的 DynamoDB 安全性
- mysql - 如果不存在则创建表与显示表之类
- reactjs - 在危险地反应SetInnerHTML中将json显示为html