2017-01-30 8 views
0

私は動作するクエリを持っています。しかし、私はPHP変数を持つ部品を交換したい、それは配列の問題が生成され、クエリは動作しません。弾性検索:php変数にクエリを入力する

このクエリは動作します:

...[query] => Array 
      (
       [filtered] => Array 
        (
         [query] => Array 
          (
           [multi_match] => Array 
            (
             [query] => Baden-Powell 
             [fields] => Array 
              (
               [0] => title 
               [1] => field_auteur 
               [2] => body:value 
              ) 

            ) 

          ) 

         ... 

フィールドはので、私はこのような変数によって、この部分[クエリ] [multi_match]を交換したい空にすることができます:

'query' => [ 
     'filtered' => [ 
      $querytitle, 
      ... 

と$ querytitle =

$querytitle= "'query' => [ 
         'multi_match' => [ 
          'query' => $SearchSimple, 
          'fields' => ['title', 'field_auteur', 'body:value'] 
          ] 
         ], 
        "; 
or $querytitle=""; 

生成されたコードは次のとおり

[query] => Array 
      (
       [filtered] => Array 
        (
         [0] => 'query' => [ 
         'multi_match' => [ 
          'query' => Baden-Powell, 
          'fields' => ['title', 'field_auteur', 'body:value'] 
          ] 
         ], 

問題は「クエリ」の前に「Array [0]」です。 私の変数$ querytitleをどのようにして統合することができますか? あなたの助けをありがとう

+0

なぜ '$のquerytitle'変数を行います単に連想配列を含む代わりに文字列を含んでいますか? – Val

答えて

0

この問題は、$querytitle変数には単純に連想配列が含まれているのではなく、文字列が含まれているという問題が原因です。

代わりに、次のように試してみてください:

$querytitle = Array('query' => [ 
        'multi_match' => [ 
         'query' => $SearchSimple, 
         'fields' => ['title', 'field_auteur', 'body:value'] 
         ] 
        ] 
      ); 

を次にあなたが(filtered後に角括弧なしつまり)は、このようなあなたの新しいクエリを記述する必要があります。

'query' => [ 
    'filtered' => $querytitle, 
     ... 
+0

はい、私は既に "Array()"を試しています。しかし、それは同じです:[filtered] =>配列 ( [0] =>配列 ( [クエリ] => ... –

+0

これは、 'filtered 'の後に大括弧なしでこのように新しいクエリを書く必要があるためです。私の更新された回答を参照してください – Val

+0

はい!しかし、クエリの最後に角括弧が欠けているので動作しません。 –