2016-04-14 34 views
0

我感兴趣的,包括数字ID列表在我的指标,如:升压/排序基于阵列路口Elasticsearch结果

some_ids: [1234, 2345, 3456,...]

然后我想通过IDS的另一个数组中与我的搜索相比,搜索数组与搜索数组有更多相同的ID,结果就越相关。

理想情况下,搜索数组与索引数组相交的ids数组可以返回结果。

每个数组中的id数通常会低于100,但在最差的情况下,在索引端和查询端可能会增长到数千。

任何人都知道这是否可行,以及一个好的方法可能是什么?

在此先感谢!

〜布赖恩

回答

0

你可以做一个布尔查询与宜,如:

"query": { 
    "bool": { 
     "should": [ 
      { 
       "terms": { 
        "field_ids": [ 
        "123456", 
        "987654" 
        ] 
       } 
      } 
     ] 
    } 
} 

使用此命令,你会得到分数,并默认ES顺序按分数:)

映射:

PUT test_ids/_mapping/my_type 
{ 
    "my_type" : { 
     "properties" : { 
      "field_ids" : { 
       "type":"integer" 
      } 
     } 
    } 
} 
+0

感谢您的答复古斯塔沃。您是否认为这将在文档和搜索中扩展到成千上万个文档,其中包含数以千计的field_ids? –

+0

我想知道如果我应该采取一种排序方法,在这种方法中,我对比较简单的平坦字段进行索引和搜索,然后根据数组交叉点排序结果,搜索得分第二。我甚至可能甚至不需要在ES索引中索引field_ids。我不确定排序语法是什么样子,我可能需要在脚本中自己编码。 –