将查询搜索到 .percolator 类型
Search for queries into .percolator type
我有一个 Elasticsearch v2.4.2 索引,我正在用一堆查询和一些特殊值填充它的 .percolator 类型。查询文档看起来像这样:
"query" : {
"query_string" : {
"fields" : [ "title", "meta" ],
"query" : "notebooks AND clamps"
},
"key_id" : 14,
"owner_id" : 481,
"priority" : 50,
"special_id" : 477
}
我正在尝试从 .percolator 中删除其中一些查询,特别是那些具有偶数 "key_id" 值的查询。
问题是我正在尝试对 .percolator 执行搜索,但没有得到结果。例如,我尝试了这些 curl 调用:
curl 'localhost:9200/percolate_index_d/.percolator/_search?q=key_id:14&pretty'
curl 'localhost:9200/percolate_index_d/.percolator/_search?&pretty' -d '{ query:{filtered:{filter:{term:{"key_id":"14"}}}} }'
但我总是这样:
{
"took" : 6,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}
我什至尝试使用 query.key_id
但没有成功。不确定我是否做错了什么,是否可以搜索 .percolator 类型,或者是否有一些解决方法。
您的上述查询根本不正确。尝试 运行 它对你的索引,你会发现你有语法错误。
您查询的正确语法如下:
{
"query": {
"bool": {
"must": {
"query_string": {
"fields": [
"title",
"meta"
],
"query": "notebooks AND clamps"
}
},
"filter": [
{
"term": {
"key_id": 14
}
},
{
"term": {
"owner_id": 481
}
},
{
"term": {
"priority": 50
}
},
{
"term": {
"special_id": 477
}
}
]
}
}
}
然后您就可以像这样使用 key_id: 14
搜索查询:
curl 'localhost:9200/percolate_index_d/.percolator/_search?q=query.bool.filter.term.key_id:14&pretty'
更新
您查询的元数据 key_id|owner_id|优先级|special_id 字段设置不正确,您需要将它们设置在 query
字段,像这样_
{
"query" : {
"query_string" : {
"fields" : [ "title", "meta" ],
"query" : "notebooks AND clamps"
}
},
"key_id" : 14,
"owner_id" : 481,
"priority" : 50,
"special_id" : 477
}
这样做之后,您将能够使用
检索您的查询
curl 'localhost:9200/percolate_index_d/.percolator/_search?q=key_id:14&pretty'
我有一个 Elasticsearch v2.4.2 索引,我正在用一堆查询和一些特殊值填充它的 .percolator 类型。查询文档看起来像这样:
"query" : {
"query_string" : {
"fields" : [ "title", "meta" ],
"query" : "notebooks AND clamps"
},
"key_id" : 14,
"owner_id" : 481,
"priority" : 50,
"special_id" : 477
}
我正在尝试从 .percolator 中删除其中一些查询,特别是那些具有偶数 "key_id" 值的查询。
问题是我正在尝试对 .percolator 执行搜索,但没有得到结果。例如,我尝试了这些 curl 调用:
curl 'localhost:9200/percolate_index_d/.percolator/_search?q=key_id:14&pretty'
curl 'localhost:9200/percolate_index_d/.percolator/_search?&pretty' -d '{ query:{filtered:{filter:{term:{"key_id":"14"}}}} }'
但我总是这样:
{
"took" : 6,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}
我什至尝试使用 query.key_id
但没有成功。不确定我是否做错了什么,是否可以搜索 .percolator 类型,或者是否有一些解决方法。
您的上述查询根本不正确。尝试 运行 它对你的索引,你会发现你有语法错误。
您查询的正确语法如下:
{
"query": {
"bool": {
"must": {
"query_string": {
"fields": [
"title",
"meta"
],
"query": "notebooks AND clamps"
}
},
"filter": [
{
"term": {
"key_id": 14
}
},
{
"term": {
"owner_id": 481
}
},
{
"term": {
"priority": 50
}
},
{
"term": {
"special_id": 477
}
}
]
}
}
}
然后您就可以像这样使用 key_id: 14
搜索查询:
curl 'localhost:9200/percolate_index_d/.percolator/_search?q=query.bool.filter.term.key_id:14&pretty'
更新
您查询的元数据 key_id|owner_id|优先级|special_id 字段设置不正确,您需要将它们设置在 query
字段,像这样_
{
"query" : {
"query_string" : {
"fields" : [ "title", "meta" ],
"query" : "notebooks AND clamps"
}
},
"key_id" : 14,
"owner_id" : 481,
"priority" : 50,
"special_id" : 477
}
这样做之后,您将能够使用
检索您的查询curl 'localhost:9200/percolate_index_d/.percolator/_search?q=key_id:14&pretty'