我最近在网站上使用elasticsearch
。场景是,我必须在field
上搜索字符串。因此,如果field
被命名为title
,那么我的搜索查询就是,
"query" :{"match": {"title": my_query_string}}.
但现在我需要在其中添加另一个field
。比方说,category
。所以我需要找到我的字符串的匹配项category
:some_category
且title
:my_query_string
我尝试使用multi_match
。但它并没有给我我想要的结果。我现在正在调查query filter
。但有没有办法在我的match
查询中添加这些条件中的两个字段?
答案 0 :(得分:6)
GET indice/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"title": "title"
}
},
{
"match": {
"category": "category"
}
}
]
}
}
}
如果需要,将should
替换为must
。
答案 1 :(得分:3)
好的,所以我认为你需要的是这样的:
"query": {
"filtered": {
"query": {
"match": {
"title": YOUR_QUERY_STRING,
}
},
"filter": {
"term": {
"category": YOUR_CATEGORY
}
}
}
}
如果您的category
字段已经过分析,那么您需要在过滤器中使用match
代替term
。
答案 2 :(得分:0)
"query": {
"filtered": {
"query": {
"bool": {
"should": [
{"match": {"title": "bold title"},
{"match": {"body": "nice body"}}
]
}
},
"filter": {
"term": {
"category": "xxx"
}
}
}
}