带过滤器的 Elasticsearch bool 查询
Elasticsearch bool query with filter
我正在尝试编写一个包含 2 个部分的 Elasticsearch bool 查询。
我想要 "must" 的两个条件和 "should" 的两个条件。问题是我只想获得 "should" 的分数。我尝试了 "filter" 但没有成功。
更具体地说,我的查询在这里:
{
"query": {
"bool": {
"must": [
{
"match": {
"attr1": "on"
}
},
{
"match": {
"category": "7eb84c804a8c824fd608e05f78d42f10"
}
}
],
"should": [
{
"term": {
"attr2": "on"
}
},
{
"term": {
"attr3": "on"
}
}
],
"minimum_should_match": "10%"
}
}
}
更新
这是失败的查询,我想找出错误!:
{
"query": {
"bool": {
"filter": [
{
"term": {
"attr1": "on"
}
},
{
"term": {
"category": "7eb84c804a8c824fd608e05f78d42f10"
}
}
],
"should": [
{
"term": {
"attr2": "on"
}
},
{
"term": {
"attr3": "on"
}
}
],
"minimum_should_match": "10%"
}
}
}
如何按顺序重写这个查询:
1) 获取 attr1 和 category 准确的所有行
2) 然后用 should
查询这些结果
有什么想法吗?
您似乎没有使用 Elasticsearch 2.x。
对于 Elasticsearch 1.x 使用 FilteredQuery:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html
{
"filtered": {
"query": {
"bool": {
"should": [
{
"term": {
"attr2": "on"
}
},
{
"term": {
"attr3": "on"
}
}
]
}
},
"filter": {
"bool": {
"must": [
{
"match": {
"attr1": "on"
}
},
{
"match": {
"category": "7eb84c804a8c824fd608e05f78d42f10"
}
}
]
}
}
}
}
我正在尝试编写一个包含 2 个部分的 Elasticsearch bool 查询。 我想要 "must" 的两个条件和 "should" 的两个条件。问题是我只想获得 "should" 的分数。我尝试了 "filter" 但没有成功。
更具体地说,我的查询在这里:
{
"query": {
"bool": {
"must": [
{
"match": {
"attr1": "on"
}
},
{
"match": {
"category": "7eb84c804a8c824fd608e05f78d42f10"
}
}
],
"should": [
{
"term": {
"attr2": "on"
}
},
{
"term": {
"attr3": "on"
}
}
],
"minimum_should_match": "10%"
}
}
}
更新 这是失败的查询,我想找出错误!:
{
"query": {
"bool": {
"filter": [
{
"term": {
"attr1": "on"
}
},
{
"term": {
"category": "7eb84c804a8c824fd608e05f78d42f10"
}
}
],
"should": [
{
"term": {
"attr2": "on"
}
},
{
"term": {
"attr3": "on"
}
}
],
"minimum_should_match": "10%"
}
}
}
如何按顺序重写这个查询: 1) 获取 attr1 和 category 准确的所有行 2) 然后用 should
查询这些结果有什么想法吗?
您似乎没有使用 Elasticsearch 2.x。
对于 Elasticsearch 1.x 使用 FilteredQuery:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html
{
"filtered": {
"query": {
"bool": {
"should": [
{
"term": {
"attr2": "on"
}
},
{
"term": {
"attr3": "on"
}
}
]
}
},
"filter": {
"bool": {
"must": [
{
"match": {
"attr1": "on"
}
},
{
"match": {
"category": "7eb84c804a8c824fd608e05f78d42f10"
}
}
]
}
}
}
}