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"
}
}
}
}