2017-05-11 2 views
1

私はElasticSearchバージョン5.1を使用しています。ElasticSearch equeryでABS機能を使用するには?

私はすべてのドキュメントを取得しようとしていますが、2つのフィールドを減算すると、< | X |ここで

は、私が実行したクエリです:

post /my_idx/_search 
{ 
    "query": { 
    "bool": { 
     "must": { 
     "script": { 
      "script": { 
      "inline": "doc[\"f1\"].value - doc[\"f2\"].value < 9 && doc[\"f1\"].value - doc[\"f2\"].value > -9", 
      "lang": "painless" 
      } 
     } 
     } 
    } 
    } 
} 

私は成功せず、一般的な数学関数「腹筋」を使用してみました。

クエリでこの関数を使用するにはどうすればよいですか?

あなたは

答えて

4

あなたは、単にpainlessスクリプトでMath.abs(...)方法を使用することができます。

1

あなたはabs機能を持っているgroovy LANGを使用して、スクリプトを試すことができますありがとうございます。

{ 
"query": { 
"bool": { 
    "must": { 
    "script": { 
     "script": { 
     "inline": "doc['f1'].value - doc['f2'].value < Math.abs(9)", 
     "lang": "groovy" 
     } 
     } 
     } 
    } 
    } 
} 
+1

おかげで、 弾性検索によると:5.0.0で非推奨 、 Groovyは新しいスクリプト言語によって、この情報のための無痛 – Nir

+0

おかげで置き換えられます。 – Richa

関連する問題