美文网首页
elasticsearch多路查询

elasticsearch多路查询

作者: 郭彦超 | 来源:发表于2021-06-29 12:09 被阅读0次

易企秀这边在搜索推荐业务中经常会用到多路数据召回,比如一页60个商品位置,要求按照免付费以固定的比例进行展示,这个时候就需要分开查询,如果进行串行查询那么接口查询的响应时间就会翻倍,更好的做法是使用ES的多路查询方式进行操作

_msearch

_msearch对应的是一个query数组,每个一个query都可以设置单独的from、size以及查询排序逻辑

  • 一个简单的例子
GET my-index-000001/_msearch
{ }
{"query" : {"match" : { "message": "this is a test"}}}
{"index": "my-index-000002"}
{"query" : {"match_all" : {}}}

查询与查询直接可以使用换行符,内部不行

可以发现返回的外层多了一个responses数组, 接口执行时间以最大响应query时间为准


image.png
  • 支持配置查询模板
    创建查询模板
POST /_scripts/my_template_1
{
  "script": {
    "lang": "mustache",
    "source": {
      "query": {
        "match": {
          "message": "{{query_string}}"
        }
      }
    }
  }
}

使用模板进行_msearch查询

GET _msearch/template
{"index" : "main"}
{ "id": "my_template_1", "params": { "query_string": "some message" } }

需要注意的是如果使用的是http接口,那么Content-Type需要设置为:application/x-ndjson

相关文章

网友评论

      本文标题:elasticsearch多路查询

      本文链接:https://www.haomeiwen.com/subject/pawhultx.html