Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)

Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)

码农世界 2024-05-27 后端 64 次浏览 0个评论

Search your data

这里有两个比较有用的参数需要注意一下

  1. Search timeout:设置每个分片的搜索超时时间。从集群级别可以通过 search.default_search_timeout 来设置超时时间。如果在 search.default_search_timeout 设置的时间段内未完成搜索请求,就会取消该任务。search.default_search_timeout 的默认值为 -1 ,表示无超时时间限制。
GET /my-index-000001/_search
{
  "timeout": "2s",
  "query": {
    "match": {
      "user.id": "kimchy"
    }
  }
}
  1. track_total_hits:设置搜索过程中匹配文档的数量。如果需要匹配所有文档,track_total_hits 设置为 true,如果需要匹配的文档为 1000 条,则 track_total_hits 设置为 1000。数据量大时 track_total_hits 设置为 true 会拖慢查询速度。
GET my-index-000001/_search
{
  "track_total_hits": true,
  "query": {
    "match" : {
      "user.id" : "elkbee"
    }
  }
}

注意:

这强调一下 Response 中的 took。took 代表处理该请求所耗费的毫秒数。从节点收到查询后开始,到返回客户端之前,包括在线程池中等待、在集群中执行分布式搜索和收集、排序所有结果所花费的时间。

一、Collapse search results

没看懂有啥用呢。。。考完试再研究

二、Filter search results

  1. post_filter:filter 过滤会将符合条件的文档留下,之后进行 聚合,而 post_filter 是在聚合后过滤结果,不影响聚合结果。
# 创建索引,添加数据
PUT /shirts
{
  "mappings": {
    "properties": {
      "brand": { "type": "keyword"},
      "color": { "type": "keyword"},
      "model": { "type": "keyword"}
    }
  }
}
POST /shirts/_bulk
{"index":{}}
{"brand": "gucci", "color": "red", "model": "slim"}
{"index":{}}
{"brand": "gucci", "color": "back", "model": "slim"}
{"index":{}}
{"brand": "gucci", "color": "back", "model": "large"}

直接使用 filter

GET /shirts/_search
{
  "query": {
    "bool": {
      "filter": [
        { "term": { "color": "red"   }},
        { "term": { "brand": "gucci" }}
      ]
    }
  },
  "aggs": {
    "models": {
      "terms": { "field": "model" } 
    }
  }
}

Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)

使用 post_filter

GET /shirts/_search
{
  "post_filter": {
    "bool": {
      "filter": [
        { "term": { "color": "red"   }},
        { "term": { "brand": "gucci" }}
      ]
    }
  }, 
  "aggs": {
    "models": {
      "terms": { "field": "model" } 
    }
  }
}

Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)

  1. rescore:对每个分片的查询结果的前 window_size 个文档重新评分。
POST /_search
{
   "query" : {
      "match" : {
         "message" : {
            "operator" : "or",
            "query" : "the quick brown"
         }
      }
   },
   "rescore" : {
      "window_size" : 50,
      "query" : {
         "rescore_query" : {
            "match_phrase" : {
               "message" : {
                  "query" : "the quick brown",
                  "slop" : 2
               }
            }
         },
         "query_weight" : 0.7,
         "rescore_query_weight" : 1.2
      }
   }
}

三、Highlighting

四、Long-running searches

五、Near real-time search

六、Paginate search results

七、Retrieve inner hits

八、Retrieve selected fields

九、Search across clusters

十、Search multiple data streams and indices

十一、Search shard routing

十二、Search templates

十三、Sort search results

十四、kNN search

转载请注明来自码农世界,本文标题:《Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,64人围观)参与讨论

还没有评论,来说两句吧...

Top