您需要在此处使用过滤器,因为您需要完全匹配而不是全文匹配。而且这种方式甚至更快。
{ "query": { "filtered": { "query": { "match": { "name": "YourName" } }, "filter": { "bool": {"must": [ { "range": { "price_min": { "gte": 20 }}},{ "range": { "price_max": { "lte": 170 }}},{ "term" : { "availability" : "false" }} ] } } } }}您在“您的姓名”中提供的是全文匹配项(如果对名称字段进行了分析,则将检索相似的名称)。我假设您保持不变,因此默认情况下会分析该字段(词干+停用词删除)。由于您需要结果来匹配所有条件,因此必须使用AND组合。因此使用
bool过滤所有AND项。



