关键词
- match
- term
- filter
- bool
- text
- keyword
什么时候会进行评分
- 分词字段&match:会评分
- 分词字段&term:会评分
- 分词字段&filter&term:不会评分
- 分词字段&filter&match:不会评分
- 不分词字段&match:会评分
- 不分词字段&term:会评分
- 不分词字段&filter&term:不会评分
- 不分词字段&filter&match:不会评分
所以是否进行评分,跟字段是否分词、查询使用match还是term没关系,只跟查询上下文是query还是term又关系
- query查询会评分
- filter查询不会评分
- must会评分
- should会评分
- must_not不评分
- filter&must不评分
- filter&should不评分
- filter&must_not不评分
评分会减慢查询速度,所以如果查询场景中都是精确匹配,需要在filter的上下文中进行查询,这样能加快查询速度。
测试结果
1 | curl -s -H 'Content-Type: application/json' -X POST -d '{"query":{"match":{"name":"doe"}}}' 'http://localhost:9200/hong_test02/doc/_search' | jq |