Python中Elasticsearch多字段查询请求

我是 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 Elasticsearch

import json,requests


es = 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]')

我究竟做错了什么?


编辑:关键字必须包含在标题、线索和内容中,但不必与它们相同


繁星coding
浏览 108回答 1
1回答

暮色呼如

您的multi_match查询语法在这里是错误的,我也认为您需要这样的东西,{  "from":0,  "size":5,  "query": {    "bool": {      "should": [        {          "multi_match" : {            "query":      keyword,            "fields":     [ "content", "title","lead" ]          }        },        {          "multi_match" : {            "query":      category,            "fields":     [ "category" ]          }        }      ]    }  }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python