我是 Elasticsearch 和 Python 的初学者,我在 Elasticsearch 中使用一些数据创建了一个索引,我想使用 python 对这些数据执行查询请求。这是我在 Kibana 开发工具中创建的数据映射:PUT /main-news-test-data{ "mappings": { "properties": { "content": { "type": "text" }, "title": { "type": "text" }, "lead": { "type": "text" }, "agency": { "type": "keyword" }, "date_created": { "type": "date" }, "url": { "type": "keyword" }, "image": { "type": "keyword" }, "category": { "type": "keyword" }, "id":{ "type": "keyword" } } }}这是我的 Python 代码,其中我们给它一个关键字和一个类别号,它必须检查弹性数据的标题、引导和内容字段中是否有匹配的关键字,并检查输入的类别号和数据类别号并返回/打印出符合此条件的任何对象:from elasticsearch import Elasticsearchimport json,requestses = Elasticsearch(HOST="http://localhost", PORT=9200)es = Elasticsearch()def QueryMaker (keyword,category): response = es.search(index="main-news-test-data",body={"from":0,"size":5,"query":{"multi_match":{ "content":keyword,"category":category,"title":keyword,"lead":keyword}}}) return(response)if __name__ == '__main__': keyword = input('Enter Keyword: ') category = input('Enter Category: ') #startDate = input('Enter StartDate: ') #endDate = input('Enter EndDate: ') data = QueryMaker(keyword,category) print(data)但是当我将数据提供给输入时,我收到此错误:elasticsearch.exceptions.RequestError: RequestError(400, 'parsing_exception', '[multi_match] query does not support [content]')我究竟做错了什么?编辑:关键字必须包含在标题、线索和内容中,但不必与它们相同
1 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
您的multi_match查询语法在这里是错误的,我也认为您需要这样的东西,
{
"from":0,
"size":5,
"query": {
"bool": {
"should": [
{
"multi_match" : {
"query": keyword,
"fields": [ "content", "title","lead" ]
}
},
{
"multi_match" : {
"query": category,
"fields": [ "category" ]
}
}
]
}
}
}
添加回答
举报
0/150
提交
取消