我想知道是否有可能将两种查询类型组合在一起,在我的情况下我需要匹配和通配符查询,每个查询都必须在不同的情况下运行字段。
问题是,如果实体名称(文档是实体的表示)与搜索项末尾的通配符匹配,则文档匹配,如果它与其中一个完全匹配,则匹配实体的同义词。不是两个查询都必须匹配,只有其中一个要将文档视为相关。
目前我需要两个请求来存档:
通配符:
GET /name/type/_search
{
"query": {
"wildcard": {
"name": {
"value": "term*",
"boost": 2
}
}
}
}
匹配度:
GET /name/type/_search
{
"query": {
"match": {
"synonyms": "term"
}
}
}
有一种方法可以使用一个请求吗?我的所有测试都失败了。
答案 0 :(得分:4)
这是你正在寻找的......
curl -XPOST "http://localhost:9200/try/_search" -d'
{
"query": {
"bool": {
"should": [
{
"wildcard": {
"name": {
"value": "term*",
"boost": 2
}
}
},
{
"match": {
"synonyms": "term"
}
}
]
}
}
}'