Kueri mengenai functionScoreQuery dari pembuat elastis npm untuk elasticsearch

Saya menggunakan functionScoreQuery yang disediakan oleh pembuat elastis npm untuk menanyakan elasticsearch saya, kueri sedang dibuat tetapi saya tidak bisa mendapatkan parameter kueri luar untuk kueri saya seperti yang ditunjukkan di bawah ini.

yaitu parameter kueri luar tidak ada dan itulah sebabnya kueri tidak dijalankan jadi saya harus menambahkan kueri {} secara manual di badan saya. Jadi, jika ada yang bisa membantu saya dan memberi tahu saya apa yang saya lewatkan dalam kueri npm saya untuk mendapatkan parameter kueri tersebut.

var not_body = elasticbuilder.functionScoreQuery()
                         .query(elasticbuilder.matchAllQuery())
                         .functions([
                                            elasticbuilder.weightScoreFunction()
                                              .filter(elasticbuilder.boolQuery().mustNot([
                                                elasticbuilder.hasChildQuery(
                                                    elasticbuilder.boolQuery().must([
                                                      elasticbuilder.matchPhraseQuery("name", "raju" )
                                                    ])
                                                ).type('student')
                                              ]))
                                              .weight(2),

                                            elasticbuilder.weightScoreFunction()
                                              .filter(elasticbuilder.boolQuery().must([
                                                  elasticbuilder.hasChildQuery(
                                                      elasticbuilder.boolQuery().must([
                                                          elasticbuilder.matchPhraseQuery("class", "12")
                                                        ])
                                                  ).type('info')                                                  
                                              ]))
                                            .weight(2)
                        ]).minScore(4).scoreMode('sum');

Badan Output saat ini melalui kueri ini:

  {
   "function_score": {
   "functions": [
  {
    "filter": {
      "bool": {
        "must_not": {
          "has_child": {
            "query": {
              "bool": {
                "must": {
                  "match_phrase": {
                    "name" : "raju"
                  }
                }
              }
            },
            "type": "student"
          }
        }
      }
    },
    "weight": 2
  },
  {
    "filter": {
      "bool": {
        "must": {
          "has_child": {
            "query": {
              "bool": {
                "must": {
                  "match_phrase": {
                    "class" : "12"
                  }
                }
              }
            },
            "type": "info"
          }
        }
      }
    },
    "weight": 2
  }
],
"query": {
  "match_all": {}
},
"min_score": 4,
"score_mode": "sum"
}
}

Badan Keluaran yang Diharapkan:

{    
"query": {
"function_score": {
  "functions": [
    {
      "filter": {
        "bool": {
          "must_not": {
            "has_child": {
              "query": {
                "bool": {
                  "must": {
                    "match_phrase": {
                      "name" : "raju"
                    }
                  }
                }
              },
              "type": "student"
            }
          }
        }
      },
      "weight": 2
    },
    {
      "filter": {
        "bool": {
          "must": {
            "has_child": {
              "query": {
                "bool": {
                  "must": {
                    "match_phrase": {
                      "class" : "12"
                    }
                  }
                }
              },
              "type": "info"
            }
          }
        }
      },
      "weight": 2
    }
  ],
  "query": {
    "match_all": {}
  },
  "min_score": 4,
  "score_mode": "sum"
}
}
}

person Yash Tandon    schedule 07.08.2019    source sumber


Jawaban (1)


Anda harus membungkus ini dalam elasticbuilder.requestBodySearch()

Dalam kasus Anda

elasticbuilder.requestBodySearch().query(not_body)

harus melakukan pekerjaan itu

person Pierre Mallet    schedule 07.08.2019
comment
bisakah kamu membantu saya mengatasi masalah ini. tautan: stackoverflow.com/q/57691108/11432290 - person Yash Tandon; 28.08.2019
comment
@YashTandon menggunakan solusi Val, ini bagus. Dan omong-omong, jangan gunakan komentar untuk menunjukkan pertanyaan baru. Itu bukan tujuan mereka. - person Pierre Mallet; 28.08.2019
comment
dia menjawabnya setelah saya memposting komentar ini apalagi saya tidak menemukan cara apa pun agar saya dapat membagikan pertanyaan saya kepada Anda jadi saya berpikir untuk mempostingnya di sini, Terima kasih atas waktu Anda. - person Yash Tandon; 28.08.2019