ElasticSearch过滤了查询和过滤条件

时间:2015-12-22 09:27:12

标签: elasticsearch filter

我正试图在filter查询中使用filtered,这就是我正在尝试使用Sense:

GET myindex/catalog/_search
{
    "query": {
        "filtered": {
            "query": {
                "query_string": {
                  "analyze_wildcard": true,
                    "query": "test",
                    "fields": ["title^3.5", "contributions.authors.name^5", "publisher^2", "formats.productCode^0.5", "description^0.1"],
                    "use_dis_max": true
                }
            },
            "filter": {
                "term": {
                    "sku": "test-687"
                }
            }
        }
    }
}

此查询没有任何匹配,但如果我删除了filter属性,我会得到sku = test-687的项目。

我无法理解为什么filter的查询不会给我相同的结果。

映射:

{
  "myindex": {
    "mappings": {
      "catalog": {
        "properties": {
          "sku": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "date",
            "format": "strict_date_optional_time||epoch_millis"
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

完整查询是:

GET myindex/catalog/_search {
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "analyze_wildcard": true,
            "query": "test",
              "fields": ["title^3.5", "contributions.authors.name^5", "publisher^2", "formats.productCode^0.5", "description^0.1"],
                "use_dis_max": true
        }
      },
        "filter": {
          "bool": {
            "must": {
              "query": {
                "match": {
                  "sku": "test-687"
                }
              }
            }
          }
        }
    }
  }
}

使用默认映射"使用标准分析器" :

  

使用带有标准令牌过滤器,小写令牌过滤器和停止令牌过滤器的标准令牌器构建标准型分析器。

(更多细节her

术语区分大小写,不匹配