text字段排序, 要么开fieldData,要么用keyword
排序
相关性评分排序
默认情况下,返回的结果是按照相关性进行排序的——最相关的文档排在最前
为在 Elasticsearch 中, 相关性得分由一个浮点数进行表示,并在搜索结果中通过 _score 参数返回, 默认排序是 _score 降序,按照相关性评分升序排序如下
# 会把相关性得分高的排在前面POST /book/_search{"query": {"match": {"description": "solr"}}}# 把得分高的放后面POST /book/_search{"query": {"match": {"description": "solr"}},"sort": [{"_score": {"order": "asc"}}]}
字段值排序
# 按照字段的值进行排序POST /book/_search{"query": {"match_all": {}},"sort": [{"price": {"order": "desc"}}]}
多级排序
假定我们想要结合使用 price和 timestamp(得分) 进行查询,并且匹配的结果首先按照价格排序, 然后按照timestamp得分排序:
POST /book/_search{"query": {"match_all": {}},"sort": [{"price": {"order": "desc"}},{"timestamp": {"order": "desc"}}]}
搜索结果高亮
fields是指定对那个字段高亮.
返回的结果有highlight
在使用match查询的同时,加上一个highlight属性:
- pre_tags:前置标签
- post_tags:后置标签
fields:需要高亮的字段
- name:这里声明title字段需要高亮,后面可以为这个字段设置特有配置,也可以空
```json
把 elasticsearch高亮展示
POST /book/_search { “query”: { “match”: {
"name": "elasticsearch"} }, “highlight”: { “pre_tags”: ““, “post_tags”: ““, “fields”: [
{ "name": {} }] } }
对两个字段高亮
POST /book/_search { “query”: { “match”: { “name”: “elasticsearch” } }, “highlight”: { “pre_tags”: ““, “post_tags”: ““, “fields”: [ { “name”: {} }, { “description”: {} } ] } }
POST /book/_search { “query”: { “query_string”: { “query”: “elasticsearch” } }, “highlight”: { “pre_tags”: ““, “post_tags”: ““, “fields”: [ { “name”: {} }, { “description”: {} } ] } } ```
