s = Search(index='test-index').using(client)
q = Q('percolate',
field="query",
documents=list_of_documents)
s = s.query(q)
p = s.execute()
我正在尝试对带有文档列表的索引进行渗滤查询,但出现错误
RequestError(400, 'search_phase_execution_exception', 'Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters.').
非常感谢您对解决此问题的任何帮助。
最佳答案
我将开始通过API对此进行解释。
Percolate query可用于匹配存储在索引中的查询。
使用Percolate字段创建索引时,您可以指定如下映射:
PUT /my-index
{
"mappings": {
"properties": {
"message": {
"type": "text"
},
"query": {
"type": "percolator"
}
}
}
}
这表明字段
message
将是用于Percolate查询的字段。如果要匹配文档列表,则应像在example found in the docs中一样发送带有此字段的术语列表:
GET /my-index/_search
{
"query" : {
"percolate" : {
"field" : "query",
"documents" : [
{
"message" : "bonsai tree"
},
{
"message" : "new tree"
},
{
"message" : "the office"
},
{
"message" : "office tree"
}
]
}
}
}
这样说,您应该:
希望这会有所帮助:D