Stories

Detail Return Return

elasticsearch的join類型測試 - Stories Detail

0.豆瓣的圖書和書評-join

豆瓣的圖書作為父文檔,書評作為子文檔

1.定義mapping

PUT douban_books
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 1
  }, 
  "mappings": {
    "properties": {
      "book_comments_join": {
        "type": "join",
        "relations": {
          "book": "comment"
        }
      },
      "bookName": {
        "type": "text",
        "analyzer": "ik_max_word",
        "fields": {
          "keyword":{
            "type": "keyword"
          }
        }
      },
      "subhead": { 
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "author": { "type": "keyword" },
      "press": { "type": "keyword"},
      "price": { "type": "float"},
      "releaseDate": { "type": "keyword"},
      "pagesNumber": { "type": "integer"},
      "bookbinding": { "type": "keyword"},
      "series": { "type": "keyword"},
      "isbn": { "type": "keyword"},
      "rating": {"type": "float"},
      "commentsCount": {"type": "integer"},
      "authorBrief": {
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "summary": {
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "commentUserId": {"type": "keyword"},
      "commentUserNickName": {"type": "keyword"},
      "commentStars": {"type": "byte"},
      "commentTitle": {
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "commentContent":{
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "commentUsefulCount": {"type": "integer"},
      "commentUselessCount": { "type": "integer"},
      "commentReplyCount": { "type": "integer"}
    }
  }
}

注意這段:

"book_comments_join": {
    "type": "join",
    "relations": {
      "book": "comment"
    }
  }

2.增加父文檔book記錄:

2.1 寫入第1條文檔book

#寫入父文檔1
PUT douban_books/_doc/1
{
  "bookName": "邊城",
  "author": "沈從文",
  "press": "中國青年出版社",
  "releaseDate": "2014-01",
  "pagesNumber": 313,
  "price": 48.0,
  "bookbinding": "精裝",
  "series": "中青社文學經典",
  "isbn": 9787515320885,
  "rating": 9.0,
  "commentsCount": 2228,
  "summary": "《邊城》是沈從文先生最負盛名的代表作,被譽為“文學史上最純淨的一個小説文本”,“小説中飄逸不羣的仙女”。一九九九年《亞洲週刊》推出了“二十世紀中文小説一百強排行榜”,《邊城》名列第二。作品已被譯成四十多個國家的文字出版,並被美國、日本、韓國、英國等十多個國家或地區選進大學課本。\n小溪,白塔,墨竹,渡口,獨户的人家……故事在靜美中拉開帷幕。二十一個章節,好似一幅幅或濃或淡的水墨畫,描繪湘西邊城淳樸的世道民風和天然的日常生活,抒寫青年男女的情愛、祖孫之間的親愛、鄰里人家的互愛,表現一種“優美、健康、自然而又不悖乎人性的人生形式”。\n翠翠與天保、儺送之間情感的萌動,像悄然無聲的春雨,潛入泥土。生死別離已然發生,故事中的人唯有承受。那琉璃般透明的“純粹的美”和“清潔的魂”,帶給人們恆定而久遠的感動。\n小説語言古樸清新,極富表現力。故事的推進與情節的濃化,圖畫的組接與意境的轉換,引領着《邊城》走進圓熟靜穆的藝術境界。\n每一位讀者,都會為《邊城》所呈現的如此美的人性,如此淡的意境,如此清的氛罔,如此醇的回味而沉醉。\n《邊城》,使人相信純情的力量。\n本書插圖選用青年畫家李晨的連環畫作品《邊城》。為了創作,他花了三年時間,先後七次到湘西寫生。李晨對小説中的湘西風情給予了充滿詩意的繪畫表達,並對素描技法進行探索,嘗試畫出每一塊鵝卵石的光潔細緻、水的波光粼粼及月光的柔美。作品畫風細膩,清新淡雅,給人帶來感動與回味。",
  "authorBrief": "沈從文(一九○二~一九八八年),中國著名作家、歷史文物研究家。原名沈嶽煥,漢族,湖南鳳凰縣人。十四歲時,他投身行伍,浪跡湘川黔邊境地區,一九二四年開始文學創作,抗戰爆發後到西南聯大任教,一九四六年回到北京大學任教,大陸淪陷後在中國歷史博物館和中國社會科學院歷史。",
  "book_comments_join": {
    "name":"book"
  }
}

2.2 寫入第2條文檔book:

PUT douban_books/_doc/2
{
  "bookName": "深入理解Java虛擬機(第3版)",
  "subhead": "JVM高級特性與最佳實踐",
  "author": "周志明",
  "press": "機械工業出版社",
  "releaseDate": "2019-12",
  "pagesNumber": 540,
  "price": 129.0,
  "rating": 9.4,
  "commentsCount": 921,
  "bookbinding": "平裝",
  "series": "華章原創精品",
  "isbn": 9787111641247,
  "summary": "內容介紹\n\n這是一部從工作原理和工程實踐兩個維度深入剖析JVM的著作,是計算機領域公認的經典,繁體版在台灣也頗受歡迎。\n\n自2011年上市以來,前兩個版本累計印刷36次,銷量超過30萬冊,兩家主要網絡書店的評論近90000條,內容上近乎零差評,是原創計算機圖書領域不可逾越的豐碑。\n\n第3版在第2版的基礎上做了重大修訂,內容更豐富、實戰性更強:根據新版JDK對內容進行了全方位的修訂和升級,圍繞新技術和生產實踐新增逾10萬字,包含近50%的全新內容,並對第2版中含糊、瑕疵和錯誤內容進行了修正。\n\n全書一共13章,分為五大部分:\n\n第一部分(第1章)走近Java\n\n系統介紹了Java的技術體系、發展歷程、虛擬機家族,以及動手編譯JDK,瞭解這部分內容能對學習JVM提供良好的指引。\n\n第二部分(第2~5章)自動內存管理\n\n詳細講解了Java的內存區域與內存溢出、垃圾收集器與內存分配策略、虛擬機性能監控與故障排除等與自動內存管理相關的內容,以及10餘個經典的性能優化案例和優化方法;\n\n第三部分(第6~9章)虛擬機執行子系統\n\n深入分析了虛擬機執行子系統,包括類文件結構、虛擬機類加載機制、虛擬機字節碼執行引擎,以及多個類加載及其執行子系統的實戰案例;\n\n第四部分(第10~11章)程序編譯與代碼優化\n\n詳細講解了程序的前、後端編譯與優化,包括前端的易用性優化措施,如泛型、主動裝箱拆箱、條件編譯等的內容的深入分析;以及後端的性能優化措施,如虛擬機的熱點探測方法、HotSpot 的即時編譯器、提前編譯器,以及各種常見的編譯期優化技術;\n\n第五部分(第12~13章)高效併發\n\n主要講解了Java實現高併發的原理,包括Java的內存模型、線程與協程,以及線程安全和鎖優化。\n\n全書以實戰為導向,通過大量與實際生產環境相結合的案例分析和展示瞭解決各種Java技術難題的方案和技巧。",
  "book_comments_join": {
    "name":"book"
  }
}

注意這個不分:

  "book_comments_join": {
    "name":"book"
  }

3.增加子文檔comment記錄:

3.1 增加book/1的子文檔comment

book1-comment-1

PUT douban_books/_doc/3?routing=1&refresh
{
  "commentUserId": "byandby",
  "commentUserNickName": "Seela",
  "commentStars": 4,
  "commentTitle": "俱為女子,而我心已消瘦",
  "commentContent": "——再讀《邊城》\\n\\n我一輩子走過許多地方的路,行過許多地方的橋,看過許多次數的雲,喝過許多種類的酒,卻只愛過一個正當最好年齡的人。\\n                                                                 ——沈從文\\n\\n\\n俱為女子,我卻原本並不喜歡翠翠。\\n十四、五歲時第一次讀《邊城》,就不喜歡這個與自己差不多同齡的女子。十五歲時的翠翠,在風日裏長養着,觸目皆為青山綠水,一對眸子清明如水晶,活脱脱就是一個自然之子,有着原始的善良和純真的可愛,應惹來無數愛憐。\\n可那時的我卻不喜歡,覺得這個女子的純真過了份,這是她保護自己的盾牌,也是尖鋭的武器,一次又一次地刺傷了那些深愛她的人。她的不諳世事,她的含蓄懵懂,全變成一條條致命的引線,引向最終的慘烈。記憶裏永遠揮之不去的只有最後的悲哀結局,如同改編的同名電影裏在昏黃温暖的色調下,卻隱隱透出煙水空濛的淒寒。\\n這是我一直都不懂的故事,也是我一直都不懂的世界。作者筆下的茶峒山城,只是一個湘、川、黔三省交界的邊境小城,在故事裏卻彷彿真正成了一個被時間遺忘的安靜角落。在那個風雲變幻、改朝換代的時代中,不管別處的人們如何不幸掙扎,生死存亡的恐慌感都似乎永遠瀰漫不到這裏。熱鬧充滿生氣的小河街,婦人聚集的吊腳樓,負責擺渡的老船伕,在難卻盛情的收下過客的一枚銅板後會轉送一大把的煙草葉。在那裏就連世俗最為不齒的妓女,“也永遠那麼渾厚”。她們可以為了生計接待四川商人,也可以把所有的眼淚快樂牢牢地系在歸期不定的水手身上,有着古代女子“拼將一生休,盡君一日歡”的勇氣和無悔,“較之講道德和廉恥的城市中紳士還更可信任”。這樣的水土和民風養育出的翠翠,有我想象中的淳樸,卻沒有意料內的勇敢。一如她的那段傷痛初戀,在那時的我看來不過是一個簡約和剋制導致的悲劇。對於這樣一個簡單的三角故事,作者捨棄了傳統的情節要素,沒有門第之見沒有父母之命媒妁之言,反倒多了民主和放手。可那個女子還是沒有把握住自己的幸福,只能回望那一川碧溪,帶走自己的愛與希望。\\n那時的自己,並不理解這樣的含蓄,也不喜歡翠翠的純真善良毫無機心,當這些品質成為一個人性格的全部時,反倒失去了最基本的一點可愛。於是,我離開這個故事,忘記翠翠,忘記湘西清亮的白河,繼續經歷自己的青春歲月。\\n時隔兩年,因緣際會下我再次翻開《邊城》,只因為懷念起湘西瓦藍的雲天。故事裏的翠翠在成長,已經走到了自己命運中最為重要的轉折點。她最終還是選擇了固執地等待,等着那個年輕人回來一同去採最喜歡的虎耳草。故事外的我也在長大,走過豆蔻年華,面臨着少年人走向成熟的蜕變。而當我懷着這樣的心境再次去讀這個早已熟悉的故事、讀到最後的那一句“這個人也許永遠不回來了,也許明天回來!”時,心底的那份慘然和惋惜尚在,卻多了幾許釋然,並不再過多地執着於因那些巧合誤會所導致的有情人未成眷屬的收場。若説兩年前這個故事讓我感到的是温暖中透出淒寒,那麼兩年後我不僅感受到全篇無處不在的寂寞孤獨,也更執著於其中幾許温暖的色調,依舊昏黃,卻足以照亮我的心房。\\n而兩年後的我真真切切地感受到,俱為女子,翠翠卻真是特別的。她不應僅僅只是爺爺疼愛的對象、男子夢中的理想,也是女孩子心中永難消逝的情結。再讀時,我不再指責她的懦弱隱忍,而是喜歡她的活潑率真,也愛她的含蓄。因為這才是每個這樣年紀的女孩子心中最純真的一面,也是最真實的一面。\\n再品與翠翠有關的章節,我看到了兩條線索推動着人物的塑造和情節的發展。最明顯的一條自然是三年的端午節,這也是貫穿全文的線索。第一年的端午節由翠翠的回憶帶入,與茶峒山城一樣,他與儺送的初遇彷彿也是靜止於時光中的美好。黃永玉曾以此為題材作過木版畫,畫中的翠翠只一低首,回眸間卻有不勝涼風的嬌羞。這樣的畫面即使只是最簡單的白色,也足以在人的心上幻化出萬紫千紅。即使後來有漫天花雨,在翠翠的印象裏也沒有那個端午所經歷的事甜而美。第二年的端午節,翠翠和爺爺在順順吊腳樓上避雨,那個場景在電影中拍得十分温馨祥和。天保一家送的大白鴨和尖角粽子,船總與爺爺間關於翠翠婚事若有若無的談論,不僅再次體現了地方人情之美,也為下文情節發展提供了一個小小的契機。而到了第三年的端午,所有事紛踵而來,然後走向最後的終局。這三年的端午節對於翠翠的意義不言而遇,也是她感情最明顯的體現地。\\n不過不同於兩年前一直認為的愛情,再讀時我卻對那兩個男子的感情產生了小小的質疑。也許是着墨不多的緣故,天保和儺送的感情僅體現在一次又一次的求婚上。翠翠的純真美麗,是區別於其他女子的特別,也正是這份特別吸引了他們。可從始至終我都覺得他們只是把翠翠當成一件最美好的東西那樣小心翼翼地去追求,可以兄弟相爭,可以唱一夜的山歌,可心底其實想要的在這一塊純澈的水晶之外,還是一個節儉持家的女子。但願這只是我對男子的偏狹。\\n可是翠翠,在這時卻真的初嚐到愛情的甜蜜,煥發出少女的光彩。她會在罵人後聽到對方名號時“心裏又吃驚又害羞”,沉默一個晚上,也會在爺爺提到嫁給天保時又羞又氣地掐斷話頭。而在面對爺爺正式講起求婚時的心念更是如電般瞬間即是百轉千回,她的心會輕輕地跳動,會即使不知所措也裝作從容地等待爺爺的決定。而當心上的事落空時,此刻的心理描寫猶為精彩:“翠翠弄明白了,人來做媒的是大老!不曾把頭抬起,心忡忡的跳着,臉燒得厲害,仍然剝她的豌豆,且隨手把空豆莢拋到水中去,望着它們在流水中從從容容的流去,自己也儼然從容了許多”。她的驚愕和極度失望,以及妄圖掩飾的心理過程,在看似隨意的動作中暴露無遺。其後面對爺爺的淚水,她的心中又煩又亂,想哭又覺得沒有理由哭。就是在這一刻我彷彿明白了過去一直都不理解的事,翠翠並非不願去大膽爭取大膽説出自己的愛情,只是自身少女含蓄的性格,以及對爺爺的顧及使她不知所措,只能以不迴應的方式來回應。看似不合情理,卻恰恰是人之常情。\\n而這種人之常情,卻恰恰是當年的自己所不懂的。所以很多路必須親自走過,才能知道坎坷波折,很多故事只有一讀再讀,才能體會個中情味。當讀到另一條暗線時,才驀地驚覺,翠翠走過的路,難道不就是自己曾感知過的一切。印象中全篇有四次將翠翠與“新娘”二字聯繫在一起,有年少無知時扮做新娘的懵懂,也有情竇初開後追看花轎的好奇。她會歡喜會紅臉,會愛聽取茶峒歌聲的纏綿,也會為一片雲一顆星而孤獨凝眸。看到這裏,現在的我會抬頭微笑,無論上天賦予了女子多少種不同的性格,在此刻的心緒縱橫旖旎情思當皆如是。所以當全篇最後一次在爺爺的葬禮上出現“新嫁娘”這三個字時,才會感受到從未有過的哀涼。夢起之處,夢終之時,翠翠就這樣以痴痴站立的方式無聲地迴應了自己年少夢想的如此終結。面對至親的離去,至愛的離開,此刻的翠翠有前所未有的真實感。若説前面的嬌羞含蓄引人憐惜,那麼這時她的默然更貼近我的靈魂。\\n是誰説過,不哭過長夜,不能語人生。我想沒有經歷過青春的甜酸涼薄,大概也不能懂《邊城》。就好像當年老師在課堂上一遍又一遍的強調邊城的民風淳樸,邊城的珍貴難尋,當時的自己卻只是不以為然。作者的語言的確很美,平淡如水卻自有芬芳,景物描寫引人入勝,但是否就真的是獨一無二?現在的我已經不會懷疑。面對塵世間鋪天蓋地的灰土,面對無處不在的窒息感,不再被小心翼翼保護着的自己,越發懷念起茶峒清澈見底的流水,桃杏花裏耀眼的紫花布,温柔的黃昏帶着薄薄的淒涼。那樣的世界,在素淡中自有明澈的光輝,質樸中自有藴藉雋永之致,只能存在於過往,存在於夢中,存在於記憶,一去就永不再得。所以怎能忘記那山,那人,那隻黃狗,那個和我一樣大的女孩,她的身上有我最想抓住的潔淨和自由,她的故鄉是我窮盡一生也到達不了的遠方。面對似乎再找不回的美好,心如何不念,如何不消瘦?\\n同樣面對找不回的過往,作者選擇用筆將其記錄下來。而對於那些猜測的目光,他曾説過:很多人看我的書近似買櫝還珠,你們欣賞我故事的清新,作品背後的熱情卻忽略了;你們欣賞我文字的樸實,那背後藴藏的悲痛也忽視了。我不知道自己是否也是一個買櫝還珠的人,對於《邊城》這樣一個故事我只願單純地隨心而讀,不願加之以所謂深刻的挖掘的目光。我讀到了背後的熱情和悲痛,卻還是想許給自己一個希望。只是語序的不同,但又未嘗不可以是作者留下的慈悲,那個在月下唱歌,把靈魂輕輕浮起來的年輕人,“也許明天回來!”。\\n每個人心裏也許都只愛過一個正當最好年齡的人,作者如是,翠翠如是,我也應如是。然後,我們都將餘下的歲月留在了等待裏,孤寂地等待。但即使等得眼已垂落、耳已閉鎖又如何,畢竟似水的流年還在記憶裏,曾經的夢想還在心裏,閉上雙眼往昔的温暖還一息尚存。\\n既然一切都還在,來過就未曾離開,那麼即使心已漸漸消瘦,也沒有什麼是不可釋懷的",
  "commentUsefulCount": 3444,
  "commentUselessCount": 76,
  "commentReplyCount": 143,
  "book_comments_join":{
    "name": "comment",
    "parent": "1"
  }
}

book1-comment-2

PUT douban_books/_doc/4?routing=1&refresh
{
  "commentUserId": "144413576",
  "commentUserNickName": "橙曦羽潞",
  "commentStars": 4,
  "commentTitle": "邊城小鎮 淳樸的生活",
  "commentContent": "  《邊城》講述了湘西小鎮上一對相依為命的祖孫平凡寧靜的人生,以及這份平凡寧靜中難以抹去的寂寞和淡淡的淒涼。小説的主人公翠翠有一段朦朧但沒有結局的感情,但是感情不是這本小説的全部。大師用他清淡的筆調娓娓講述了湘西小鎮上純樸的風土人情,原始單純的生活,以及那如詩如畫的景緻。\n\n  湘西的生活是清苦而艱辛的。大師卻讓我明白,一個人對一片土地的熱愛,是懂得它的殘酷以後去心疼那背後醉人的風光。讀完全文,我就開始嚮往那個遠在湘西邊境的小鎮。木製的吊腳樓,搖曳的紅燈籠,潮濕的青石板,窄窄的渡船,亭亭的白塔,還有那升起在舊村莊上的青炊煙。這一切,構成一幅年代久遠的畫,在我的想象裏千遍萬遍地被描摹。在那片遊離世外的土地上,時光彷彿是靜止的。女主人公翠翠像湘水一樣温婉清澈,歌聲悠揚清亮,老爺爺慈祥又寬厚,船伕們浪漫又豪爽,就連生活的無奈,在這個地方,都帶着詩意的色彩,完美地令人不忍褻瀆。大師用他的故事讓我們看到湘西人在命運面前的無助和憂傷,卻也讓我們產生對生命的悲憫,對完美人性的信仰\n\n  我最嚮往《邊城》裏那些淳樸善良的鄉親們。翠翠和祖父去看龍舟比賽,當地的龍頭大哥順順送他們很多吃的。有人家娶新娘,翠翠的祖父送他們過河不收渡船錢。翠翠的祖父去世,周圍的鄉親都來幫忙。他們雖然生活很清苦,卻能夠互相幫忙,像一家人一樣生活在那個偏僻的小鎮。相比之下,我們每一天生活在鋼筋水泥的城市裏,人與人之間人情淡漠,有時候,甚至鄰居之間都互不相識。這不得不讓人遺憾。我期望,有那麼一天,我們的城市也能變得温暖和諧。每一個人都有寧靜的理想,人與人之間沒有私心,愛護着我們生存的環境,彼此互幫互助,共同建造一個家一樣的世界。而這一切,都需要我們像《邊城》中的人一樣擁有一顆善良的心去生活。",
  "commentUsefulCount": 191,
  "commentUselessCount": 13,
  "commentReplyCount": 6,
  "book_comments_join": {
    "name": "comment",
    "parent": "1"
  }
}

book1-comment-3

PUT douban_books/_doc/5?routing=1&refresh
  {
    "commentUserId": "joieau",
    "commentUserNickName": "曳尾塗中",
    "commentStars": 5,
    "commentTitle": "然而處處是不湊巧",
    "commentContent": "在一個燈光略昏黃的教室,我又一次讀完了《邊城》。裏面星星落落地坐着幾個自習的同學,空調的風呼呼吹着,偶爾冒出幾下翻動書頁的短暫、細碎之聲,有一搭沒一搭地彼此應和。我一點一點地看着左邊的書頁越來越厚,右半邊越來越薄,而天色,也慢慢黑將下來。當看到爺爺死前的風雨之夜,發現外面不知不覺下起了雨。這樣的場景讓我有種置身於書中的錯覺。彷彿和書彼此貫注,無有阻隔。\n\n邊城的世界是在告訴我們,無論一個世界多麼的透明清澈,世界裏的人多麼的純樸善良,心無纖塵,誤會仍舊會不可避免地發生,完滿的結局依舊是如此地奢侈。就好像在一個你看不見的地方,有一個缺口,沒有辦法填補起來。\n\n高一的時候老師在課上説邊城“人美,景美,情美”,沒錯,這些都很美,可是,真相併不美。或者説,這些美並不能相互加起來得到一個也很美的結局。它們只是人生真相的美好點綴。而在另一時,另一地,或者連這樣的點綴都沒有了。\n\n沈從文其實比很多作家都要殘酷。我們可以咬牙切齒地痛罵一個傷害別人的人,鄙視卑鄙的人,嘲笑可笑的人。可是我們不忍心責備邊城中,一次一次誤會中的誤會者和被誤會者。因為他們都是善良的。\n\n《邊城》也讓人想起沈從文的另一個短篇小説,《三三》。甜美無邪的三三愛上了一個城裏來療養的少年。而少年對她也是意甚戀戀。三三對此即充滿期待,又忐忑不安。心嚮往之,又口是心非。被撩撥起的心事,欲言又止的羞澀,夢境裏的歡樂,對假想情敵情不自禁的嫉妒,如此種種,像極了偶像劇中喜結良緣的前奏。\n\n可是,在沈從文筆下,那些動人的嚮往與誤會不是為了使最終的終成眷屬更加甜蜜、難得,它們只是稍縱即逝的美麗幻象。最終,兩人尚未開花結果的愛情隨着少年的死一同泯滅。就像才點燃的微弱火苗,在眼看要越來越炙熱的時刻,一陣風,只剩下往事,如煙。\n\n沈從文總是用這樣的方式讓我們感受到生命的欠然。人生的底色,總是無法細看的。如同他自己説的,一切都是善,一切都是高尚美好的希望,然而處處是不湊巧。因之,不得不產生悲劇。",
    "commentUsefulCount": 136,
    "commentUselessCount": 3,
    "commentReplyCount": 4,
    "book_comments_join": {
      "name": "comment",
      "parent": "1"
    }
  }

book1-comment-4

PUT douban_books/_doc/6?routing=1&refresh
{
  "commentUserId": "netdhudb",
  "commentUserNickName": "楚襄寧",
  "commentStars": 4,
  "commentTitle": "沈從文曾説過",
  "commentContent": "很多人看我的書近似買櫝還珠:你們欣賞我故事的清新,作品背後的熱情卻忽略了;你們欣賞我文字的樸實,那背後藴藏的悲痛也忽視了。",
  "commentUsefulCount": 70,
  "commentUselessCount": 9,
  "commentReplyCount": 12,
  "book_comments_join": {
    "name": "comment",
    "parent": "1"
  }
}

3.2 補充mapping字段:commentTime

發現comment少一個字段, 加上:

PUT douban_books/_mappings
{
  "properties": {
    "commentTime": {
      "type": "date",
      "format": "yyyy-MM-dd HH:mm:ss"
    }
  }
}

3.3 增加book/2的子文檔comment

book2-comment-1

PUT douban_books/_doc/7?routing=2&refresh
{
  "commentUserId": "52891139",
  "commentUserNickName": "pps1086",
  "commentStars": 5,
  "commentTitle": "對於國人能寫出這樣的書感到欣慰",
  "commentContent": "在JavaEye上關注過這本書作者,拜讀過他幾篇關於虛擬機的文章。這本書一出版的第一時間我就買了,花了差不多1周時間囫圇吞棗地初讀了一遍。10年前那本翻譯外國的《深入Java虛擬機》我也讀過,客觀地説,對虛擬機細節的描寫,這本書與10年前那本還是有差距,但是這本書的確無愧於標題中的“實踐”二字,其中穿插的經驗、技巧、案例、實戰處處都可見作者的實踐之中積累的功力,這點與當下大量“注水”、“瞎掰”、“網摘”為主的技術書籍有很大的差別。\n\n    在內容上,這本書與《深入Java虛擬機》重疊的內容其實並不算太多,畢竟虛擬機在這10年來JDK從1.2發展到了1.7,虛擬機肯定也是有了很大的發展,關於GC收集器、JIT編譯器、虛擬機併發機制等內容都是《深入Java虛擬機》中沒有的。這幾部分在書中佔了頁數比重非常大。\n\n    在這10年間,關於JVM的書籍國內是一片空白,國外據我所知也就新出過一本《Oracle JRockit權威指南》。可見要在JVM這個領域出書,的確不容易,對作者的要求很高,所以我對於國人能寫出這樣的書感到欣慰。\n\n    不過最後要批評一下這本書的印刷和紙張,圖片模糊,紙張薄到“幾乎透明”,我不介意出版社賣得貴一些,但是我不樂意出版社在這些地方去節省成本偷工減料。",
  "commentUsefulCount": 43,
  "commentUselessCount": 1,
  "commentReplyCount": 19,
  "commentTime": "2011-07-08 10:30:13",
  "book_comments_join": {
    "name": "comment",
    "parent": "2"
  }
}

book2-comment-2

PUT douban_books/_doc/8?routing=2&refresh
{
  "commentUserId": "44630019",
  "commentUserNickName": "風紀扣v",
  "commentStars": 4,
  "commentTitle": "這是本好書,但還是不夠",
  "commentContent": "       這本書我讀到第8章,之後就是在讀不下去了。\n\n        讀到後面是一種痛苦的體驗,太多的東西是不全面的,大量的專有名詞是沒有解釋的,讀到最後很多東西僅僅是一個側面,所以我覺得,這本書不適合初學者看,很適合有一定理論基礎而缺乏實踐的人去讀。\n\n        有時候不得不説,一本技術書籍的定位之難。寫的太過於詳盡,書一定會很厚,會招惹大家的不滿。寫得太過於簡略,太薄像騙錢。讀這本書的時候,因為幾次有讀不下去的感覺,所以我就反思,到底誰是這本書的讀者?我什麼時候可以去讀?這本書對於我的價值是什麼?思來想去,我認為這本書的價值至於我是打開了一扇窗,讓我去了解了JVM的意義。但是僅僅如此還是不夠,我還想深入,但是這本書,或者説僅僅靠這本書,是萬萬不足的。\n\n        建議去讀官方的jvm規範手冊,也是本書作者翻譯的。官方的東西有兩個好處,一是權威,二是言簡意賅、十分通俗明白。等讀完了規範手冊再來讀這本書,我想會好些,至少對於書中很多的未解釋的名詞不必犯難了。",
  "commentUsefulCount": 28,
  "commentUselessCount": 4,
  "commentReplyCount": 5,
  "commentTime": "2013-11-10 10:33:34",
  "book_comments_join": {
    "name": "comment",
    "parent": "2"
  }
}

book2-comment-3

PUT douban_books/_doc/9?routing=2&refresh
{
  "commentUserId": "226013551",
  "commentUserNickName": "Chuan",
  "commentStars": 5,
  "commentTitle": "Java虛擬機一本通",
  "commentContent": "正在二刷這本書,寫的真是太精彩了,就Java虛擬機方面的書,特意逛了一下美亞,我發現:即使是英語世界--計算機科學的大本營,也找不到一本能和周老師這本書相媲美的書,建議周老師把它譯成英文版,造福全世界的程序員。\n\n從我本人的經歷來説,應該是Java領域的老兵了。我大學畢業的第一份工作--參與了中國聯通JMO+標準的實施,該標準是:J2ME規範在國內功能手機的商業化落地標準,結束這份工作之後,我去了一家日本公司,其看家軟件是NF Browser 和 KVM虛擬機。利用業餘時間,寫過一個Java虛擬機(https://github.com/douchuan/jvm),現在還在改進維護中。之後,又在Android平台上做了多年的開發工作。所以,本人職業生涯的大部分時間都在與Java虛擬機打交道,評價本書應該比較有資格。\n\nJava虛擬機方面的書,國內外公認比較經典的是Bill Venners的《深入Java虛擬機》,該怎麼評價這本書呢?這麼説吧,這本書是對《The Java® Virtual Machine Specification》文本的一個註解。因為JVM規範在敍述方面,要做到準確且無歧義,用了大量術語和標準化描述,直接讀可能比較困難,Bill Venners的書填補了一個空白。《深入Java虛擬機》這本書,側重點放在class文件格式和字節碼功能的解釋,作為Java虛擬機實現者,結合JVM規範讀這本書,會有很大價值,但對普通程序員來説,意義不是特別大。更進一步,對於一個嚴肅的Java程序員,僅僅做到熟悉規範的程度,還遠遠不夠,我們需要學習的更多,更深入。另外,《深入Java虛擬機》是2003年出版的,10多年過去了,一直沒更新,現在看來,內容有點太老了。\n\n如果讀過Bill Venners的《深入Java虛擬機》,我建議讀一下《The Java® Virtual Machine Specification》這個規範,本人因為工作的原因,讀過很多Sun寫的規範,比如CLDC、MIDLet、JNI、JSRxxx......,技術文檔的寫作水準是超一流的。\n\n上面提到的文檔資料,最大的不足是:都不涉及GC,而GC調優,又恰恰是我們工作中用到最多的部分。因為GC不是JVM標準的一部分,屬於各廠商自由發揮的部分,不同的GC實現,也導致各家虛擬機各異,適用場景不同。\n\n該説周老師這本書了。\n\n這本書不光在理論方面具有相當深度,在實操方面也極具實用性,特別是書的第二部分,2--5章全部是講GC的。真正做到了:理論與實踐相結合。\n\n敍述方面:深入淺出,行文流暢,言辭優美,讀起來非常舒服。\n\n由於Java虛擬機技術,有近30年的發展歷史了,版本眾多,有價值的資料,不是特別老,就是特別分散。周老師在書的第一部分,對Java歷史和Java虛擬機各種版本特性,做了細緻的梳理,並對Java虛擬機的發展前景做了展望,比如現在流行的:Java在大數據和微服務領域的應用。讀完第一部分,會給你一個Java虛擬機的全景視角,非常有價值,是一本案頭必備,值得反覆閲讀的好書。\n\n美中不足的地方是,書籍採用黑白印刷,這就對GC的講解造成一些困難,但是用彩印,這麼厚的書就相當貴了。\n\n本書截止到2021年,已經更新到第三版,隨着Java技術的發展,周老師肯定會有後續的跟進,希望瞭解Java虛擬機前沿動態的程序員們有福了。有這本書做橋樑,大家讀源碼或者論文就輕鬆多了,即使僅僅把這本書吃透,Java方面也具備相當的造詣了。\n\nStudy hard, enjoy it.",
  "commentUsefulCount": 4,
  "commentUselessCount": 0,
  "commentReplyCount": 0,
  "commentTime": "2021-03-31 11:14:35",
  "book_comments_join": {
    "name": "comment",
    "parent": "2"
  }
}

4. 父查子:

GET douban_books/_search
{
  "_source": {
    "excludes": ["commentContent"]
  },
  "query": {
    "has_parent": {
      "parent_type": "book",
      "query": {
        "match_phrase": {
          "author": "沈從文"
        }
      }
    }
  }
}

因為commentContent字段太長, 不讓它返回了.

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 4,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "douban_books",
        "_id": "3",
        "_score": 1,
        "_routing": "1",
        "_source": {
          "commentUserId": "byandby",
          "commentUserNickName": "Seela",
          "commentStars": 4,
          "commentTitle": "俱為女子,而我心已消瘦",
          "commentUsefulCount": 3444,
          "commentUselessCount": 76,
          "commentReplyCount": 143,
          "book_comments_join": {
            "name": "comment",
            "parent": "1"
          }
        }
      },
      {
        "_index": "douban_books",
        "_id": "4",
        "_score": 1,
        "_routing": "1",
        "_source": {
          "commentUserId": "144413576",
          "commentUserNickName": "橙曦羽潞",
          "commentStars": 4,
          "commentTitle": "邊城小鎮 淳樸的生活",
          "commentUsefulCount": 191,
          "commentUselessCount": 13,
          "commentReplyCount": 6,
          "book_comments_join": {
            "name": "comment",
            "parent": "1"
          }
        }
      },
      {
        "_index": "douban_books",
        "_id": "5",
        "_score": 1,
        "_routing": "1",
        "_source": {
          "commentUserId": "joieau",
          "commentUserNickName": "曳尾塗中",
          "commentStars": 5,
          "commentTitle": "然而處處是不湊巧",
          "commentUsefulCount": 136,
          "commentUselessCount": 3,
          "commentReplyCount": 4,
          "book_comments_join": {
            "name": "comment",
            "parent": "1"
          }
        }
      },
      {
        "_index": "douban_books",
        "_id": "6",
        "_score": 1,
        "_routing": "1",
        "_source": {
          "commentUserId": "netdhudb",
          "commentUserNickName": "楚襄寧",
          "commentStars": 4,
          "commentTitle": "沈從文曾説過",
          "commentUsefulCount": 70,
          "commentUselessCount": 9,
          "commentReplyCount": 12,
          "book_comments_join": {
            "name": "comment",
            "parent": "1"
          }
        }
      }
    ]
  }
}

5.子查父

GET douban_books/_search
{
  "_source": {
    "excludes": ["summary"]
  },
  "query": {
    "has_child": {
      "type": "comment",
      "query": {
        "match_phrase": {
          "commentContent": "虛擬機"
        }
      }
    }
  }
}

查詢結果:


{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "douban_books",
        "_id": "2",
        "_score": 1,
        "_source": {
          "bookName": "深入理解Java虛擬機(第3版)",
          "subhead": "JVM高級特性與最佳實踐",
          "author": "周志明",
          "press": "機械工業出版社",
          "releaseDate": "2019-12",
          "pagesNumber": 540,
          "price": 129,
          "rating": 9.4,
          "commentsCount": 921,
          "bookbinding": "平裝",
          "series": "華章原創精品",
          "isbn": 9787111641247,
          "book_comments_join": {
            "name": "book"
          }
        }
      }
    ]
  }
}
user avatar abelethan Avatar xcgaoshi Avatar
Favorites 2 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.