elasticsearch三層關(guān)系最終版

三層關(guān)系編碼

  • 設(shè)置setting
    PUT last_tree_index
    {
      "settings": {
        "analysis": {
          "filter": {   # filter過濾器設(shè)置
            "edge_ngram_filter":{
              "type":"edge_ngram",
              "min_gram":1,
              "max_gram":50
            },
            "pinyin_simple_filter":{
              "type":"pinyin",
              "keep_first_letter":true,
              "keep_separate_first_letter":false,
              "keep_full_pinyin":false,
              "keep_original":false,
              "limit_first_letter_length":50,
              "lowercase":true
            },
            "pinyin_full_filter":{
              "type":"pinyin",
              "keep_first_letter":false,
              "keep_separate_first_letter":false,
              "keep_full_pinyin":true,
              "none_chinese_pinyin_tokenize":true,
              "keep_original":false,
              "limit_first_letter_length":50,
              "lowercase":true
            }
          },
          "tokenizer": {  # tokenizer 分詞器設(shè)置
            "ik_max_word":{
              "type":"ik_max_word",
              "use_smart":true
            }
          },
          "analyzer": {  #analyzer 分析器設(shè)置
            "ngramIndexAnalyzer":{
              "type":"custom",
              "tokenizer":"keyword",
              "filter":[
                "edge_ngram_filter",
                "lowercase"
                ]
            },
            "ikIndexAnalyzer":{
              "type":"custom",
              "tokenizer":"ik_max_word"
            },
            "pinyiSimpleIndexAnalyzer":{
              "tokenizer":"keyword",
              "filter":[
                "pinyin_simple_filter",
                "edge_ngram_filter",
                "lowercase"
                ]
            },
            "pinyiFullIndexAnalyzer":{
              "tokenizer":"keyword",
              "filter":[
                "pinyin_full_filter",
                "lowercase"
                ]
            }
          }
        }
      }
    }
    
  • 設(shè)置mapping
    PUT last_tree_index/_mapping/_doc
    {
      "properties":{
        "my_join_field":{
          "type":"join",
          "relations":{
            "question":"answer",
            "answer":"vote"
          }
        },
        "fullText":{
          "type":"text",
          "analyzer":"ikIndexAnalyzer",
          "fields":{
            "ngram":{
              "type":"text",
              "analyzer":"ngramIndexAnalyzer"
            },
            "SPY":{
              "type":"text",
              "analyzer":"pinyiSimpleIndexAnalyzer"
            },
            "FPY":{
              "type":"text",
              "analyzer":"pinyiFullIndexAnalyzer"
            }
          }
        }
      }
    }
    
  • 插入數(shù)據(jù)
    PUT last_tree_index/_doc/1?refresh
    {
      "fullText":"這是一個問題",
      "my_join_field":"question"
    }
    
    PUT last_tree_index/_doc/2?refresh
    {
      "fullText":"這是另外一個問題",
      "my_join_field":"question"
    }
    
    PUT last_tree_index/_doc/3?routing=1&refresh
    {
      "fullText":"這是一個答案",
      "my_join_field":{
        "name":"answer",
        "parent":"1"
      }
    }
    
    PUT last_tree_index/_doc/4?routing=2&refresh
    {
      "fullText":"這是另外一個答案",
      "my_join_field":{
        "name":"answer",
        "parent":"2"
      }
    }
    
    PUT last_tree_index/_doc/5?routing=1&refresh
    {
      "fullText":"這是一個贊同",
      "my_join_field":{
        "name":"vote",
        "parent":"3"
      }
    }
    
    PUT last_tree_index/_doc/6?routing=2&refresh
    {
      "fullText":"這是另外一個贊同",
      "my_join_field":{
        "name":"vote",
        "parent":"4"
      }
    }
    
  • 最終簡單查詢語句
    GET last_tree_index/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "match": {
                "fullText.ngram": {
                  "query": "這是問題",
                  "boost": 5 
                }
              }
            },
            {
              "match": { 
                "fullText.SPY": {
                  "query": "zswt",
                  "boost": 1 
                }
              }
            },
            {
              "match": { 
                "fullText.FPY": {
                  "query": "zheshiwenti",
                  "boost": 0.8
                }
              }
            }
          ],
          "must": [
            {
              "has_child": {
                "type": "answer",
                "query": {
                  "has_child": {
                    "type": "vote",
                    "query": {
                      "bool": {
                        "should": [
                          {
                            "term": {
                              "fullText": "這是"
                            }
                          }
                        ]
                      }
                    }
                  }
                },
                "inner_hits": {}
              }
            }
          ]
        }
      }
    }
    
  • 多字段匹配改寫
    GET last_tree_index/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "multi_match": {
                "query": "這是問題",
                "fields": ["fullText^10","fullText.ngram^5","fullText.SPY^1","fullText.FPY^0.8"]
              }
            }
          ],
          "must": [
            {
              "has_child": {
                "type": "answer",
                "query": {
                  "has_child": {
                    "type": "vote",
                    "query": {
                      "bool": {
                        "should": [
                          {
                            "term": {
                              "fullText": "這是"
                            }
                          }
                        ]
                      }
                    }
                  }
                },
                "inner_hits": {}
              }
            }
          ]
        }
      }
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌校哎,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埃唯,死亡現(xiàn)場離奇詭異懂诗,居然都是意外死亡,警方通過查閱死者的電腦和手機抛虏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門博其,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迂猴,你說我怎么就攤上這事慕淡。” “怎么了沸毁?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵峰髓,是天一觀的道長。 經(jīng)常有香客問我息尺,道長携兵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任搂誉,我火速辦了婚禮徐紧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炭懊。我一直安慰自己并级,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布侮腹。 她就那樣靜靜地躺著嘲碧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪父阻。 梳的紋絲不亂的頭發(fā)上愈涩,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音至非,去河邊找鬼钠署。 笑死,一個胖子當(dāng)著我的面吹牛荒椭,可吹牛的內(nèi)容都是我干的谐鼎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼趣惠,長吁一口氣:“原來是場噩夢啊……” “哼狸棍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起味悄,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤草戈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侍瑟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唐片,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡丙猬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了费韭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茧球。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖星持,靈堂內(nèi)的尸體忽然破棺而出抢埋,到底是詐尸還是另有隱情,我是刑警寧澤督暂,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布揪垄,位于F島的核電站,受9級特大地震影響逻翁,放射性物質(zhì)發(fā)生泄漏饥努。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一八回、第九天 我趴在偏房一處隱蔽的房頂上張望肪凛。 院中可真熱鬧,春花似錦辽社、人聲如沸伟墙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戳葵。三九已至,卻和暖如春汉匙,著一層夾襖步出監(jiān)牢的瞬間拱烁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工噩翠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戏自,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓伤锚,卻偏偏與公主長得像擅笔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屯援,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359