elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python Elasticsearch匹配多个字段

Python Elasticsearch匹配多个字段,python,elasticsearch,Python,elasticsearch,我最近在一个网站上使用了elasticsearch。情况是,我必须在字段上搜索字符串。因此,如果字段被命名为标题,那么我的搜索查询是 "query" :{"match": {"title": my_query_string}}. 但现在我需要在其中添加另一个字段。比如说,类别。因此,我需要找到我的字符串的匹配项,这些匹配项位于类别:某些类别,并且具有标题:我的查询字符串我尝试了多重匹配。但它并没有给我我想要的结果。我现在正在查看查询过滤器。但是在我的match查询中,有没有办法在这样的条件中添

我最近在一个网站上使用了
elasticsearch
。情况是,我必须在
字段
上搜索字符串。因此,如果
字段
被命名为
标题
,那么我的搜索查询是

"query" :{"match": {"title": my_query_string}}.

但现在我需要在其中添加另一个
字段。比如说,
类别
。因此,我需要找到我的字符串的匹配项,这些匹配项位于
类别
某些类别
,并且具有
标题
我的查询字符串
我尝试了
多重匹配
。但它并没有给我我想要的结果。我现在正在查看
查询过滤器
。但是在我的
match
查询中,有没有办法在这样的条件中添加两个字段

好吧,我想你需要的是这样的东西:

"query": {
    "filtered": {
        "query": {
            "match": {
                "title": YOUR_QUERY_STRING,
            }
        },
        "filter": {
            "term": {
                "category": YOUR_CATEGORY
            }
        }
    }
}
如果分析了
类别
字段,则需要在过滤器中使用
匹配
而不是
术语

GET indice/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": "title"
          }
        },
        {
          "match": {
            "category": "category"
          }
        }
      ]
    }
  }
}

如果需要,将
应该
替换为
必须

如何定义类别?它是用户指定的还是暗示的?假设你有一家书店,用户现在浏览“幻想”类别。如果他搜索,您只想搜索此类别下的标题?是。类别是与标题类似的另一个字段。
      "query": {
            "filtered": {
                "query": {
                    "bool": {
                        "should": [
                            {"match": {"title": "bold title"},
                            {"match": {"body": "nice body"}}
                        ]
                    }
                },
                "filter": {
                    "term": {
                        "category": "xxx"
                    }
                }
            }
        }