Best-Practices

在彈性搜尋中儲存書籍時的結構

  • December 23, 2015

我想使用 elasticsearch 作為書籍的網路搜尋引擎。一本書有多個版本,不同語言的不同標題、ISBN 以及不同語言的作者姓名。我希望通過標題語言和作者姓名語言的任意組合找到一本書,即亞里士多德的拉丁名和他的一部作品的英文標題。

如何儲存作者的所有可能姓名、所有 ISBN、所有標題以及一本書的各自版本 ID 和有關語言的資訊,以便獲得匹配的標題、版本 ID 及其語言作為查詢的結果?

我相信我需要使用“嵌套類型”,但我不確定。

像這樣我只找到書的_id,但沒有更多:{ _id:1 _source:{title:

$$ Odyssey Odyssee Odisea $$ isbn10:$$ 2080674722 5941453868 2670361734 $$ 全名:$$ Homer Omero $$ } }

我在本指南的幫助下發現瞭如何做到這一點:嵌套類型是正確的,在我的情況下是唯一的選擇。

curl -XPUT localhost:9200/readgeek/book/1 -d'
{
 "names": [
   {
     "english": "Omero",
     "german": "Homer"
   }
 ],
 "authorid": "1",
 "ratings": "2589",
 "editions": [
   {
     "title": "Odyssey",
     "languageid": "123",
     "isbn10": "1234567890",
     "isbn13": "1234567890123",
     "ratings": "158"
   },
   {
     "title": "Odisea",
     "languageid": "150",
     "isbn10": "1234568890",
     "isbn13": "1234569890123",
     "ratings": "15"
   },
   {
     ...
   }
 ]
}'

引用自:https://dba.stackexchange.com/questions/35568