我将数据集放入ES,其中包含以下字段:
Category,Question,Answer
尝试查询我的弹性搜索索引中的短语" world series"在问题字段或答案字段中,但它也必须仅将其结果/搜索限制为我指定的类别
{
"query" : {
"constant_score" : {
"filter" : {
"bool" : {
"should" : [
{ "term" : {"Question" : "world series"}},
{ "term" : {"Answer" : "world series"}}
],
"must" : {
"term" : {"Category" : "Sport"}
}
}
}
}
}
}'
但是,当我这样做时,它不会让我使用多个单词(即'世界系列')。
我如何搜索短语/词语,但只搜索我想要的类别(即体育)?
答案 0 :(得分:1)
试试这个
{
"query": {
"bool": {
"must": [
{
"match": {
"Category": "Sport"
}
},
{
"multi_match": {
"query": "world series",
"type": "cross_fields",
"operator": "and",
"fields": [
"Question",
"Answer"
]
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}
答案 1 :(得分:0)
您可以添加一个名为Searchtext的额外字段,该字段经过分析,Searchtext可能包含类别,问题,答案
然后;
{
"query": {
"constant_score": {
"filter": {
"bool": {
"must": {
"term": {
"Category": "Sport"
},
"match": {
"SearchText": {
"query": "world series",
"operator": "and"
}
}
}
}
}
}
}