Elasticsearch按类型排序

时间:2015-06-13 16:34:52

标签: elasticsearch

我只需使用' http://es:9200/products/_search?q=sony'即可搜索多种类型的索引。这将返回许多不同类型的点击。命中数组包含所有结果,但不按我想要的顺序;我想要电视'键入以在其余之前始终显示。是否有可能按类型订购?

2 个答案:

答案 0 :(得分:2)

您可以通过sorting在预定义字段_type上实现此目的。下面的查询按文档类型的升序对结果进行排序。

POST <indexname>/_search
{
   "sort": [
      {
         "_type": {
            "order": "asc"
         }
      }
   ],
   "query": {
      <query goes here>
   }
}

答案 1 :(得分:0)

我是通过向索引文档添加数字字段_is_OF_TYPE并将其设置为1来获取给定类型的文档。然后,按照您想要的任何顺序对这些字段进行排序。

例如:

Document A:
{ 
   _is_television: 1,
   ... some television props here ...
}

Document B:
{ 
   _is_television: 1,
   ... another television props here ...
}

Document C:
{ 
   _is_radio: 1,
   ... some radio props here ...
}

and so on...

然后在ElasricSearch查询中:

POST radio,television,foo,bar,baz/_search
{
   "sort": [
      {"_is_television":   {"unmapped_type" : "long"}},  // television goes first
      {"_is_radio":        {"unmapped_type" : "long"}},  // then radio
      {"_is_another_type": {"unmapped_type" : "long"}}   // ... and so on
   ]
}

此解决方案的好处是速度。您只需对数字字段进行排序。无需脚本排序。