2016-04-14 36 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。我不確定排序語法是什麼樣子,我可能需要在腳本中自己編碼。 –