0
elasticsearchのクエリを作成しようとしています。条件:常に顧客フィルタがあります。一致した場合に最高得点を作成するフィールド「名前」があり、次の最善のフィールドは「カテゴリ」、次に「説明」でなければなりません。しかし、 "name"や "category"ではなく、 "description"でのみ検索されても結果は返されます。私が試した何elasticsearch:複数のフィールドのブースト
:
$query = [
'filtered' => [
'filter' => [
'term' => [ 'customer' => $selectedCustomer ]
],
'query' => [
'bool' => [
'should' => [
'match' => [
'name' => [
'query' => $val,
'boost' => 7
]
]
],
'should' => [
'match' => [
'category' => [
'query' => $val,
'boost' => 3
]
],
],
'should' => [
'match' => [
'description' => [
'query' => $val,
'boost' => 1
]
],
],
]
]
]
];
しかし、これは、「説明」の試合で唯一の結果を返すように思われます。私は間違って何をしていますか?何かヒント?
この3つのシリーズは、3つの「一致」を含む1つの配列を作成していますか? { "べき":[ { "一致":{ "フィールド": "TEXT" } }、 { "一致":{ "フィールド":「TEXT( ' "ブール" 等今、私は理にかなって、もちろん、それを見ていること」 }} 、 {} ... ] } ') –
....ええ、。しかし、どうすればそれを正しく行うことができますか? – Chi
私はphpを知らないが、私はそのクエリがどのように見えるのかは確信している。 –