Please help me with this query


(Jens vdH) #1

Hi,

I'm quite new to elasticsearch and that's why I could need a little help with a query I'm working on.
I need to combine an AND filter with an OR filter, but dont know how to do that.

My Data looks something like this:

{
"metadata" :
[
"value_A" : "something",
"access_A" : "2",
"value_B" : "else",
"access_B" : "0"
]
}

In SQL I would do something like this:

select * from xxx where
(metadata.value_A = "something" AND metadata.access_A = 2")
OR
(metadata.value_B = "something" AND metadata.access_B = 2")

So I'd like to search 2-x VALUE-Fields for a specific term that HAVE to have a specific access-ID.
Value has to match, Access has to be a specific ID too. Only if both match, it should produce a result.
How would I do that with elasticsearch. The only thing that came to my mind is by using a Script-Filter.

Cheers,
Jens

--
Registergericht: Amtsgericht Köln HRB 63609
USt-Nr.: 214 5814 2930


::: ANGEKLICKT - MIT PIETZPLUSWILD INS WEB :::

++ Alumniportal Deutschland || Guided Tour
-> www.alumniportal-deutschland.org

++ Tremco illbruck International GmbH || Design und Animation
-> www.tremco-illbruck.com

++ Aktuelles im Blick || Agentur- News und Projekte
-> www.pietzpluswild.de

===
Die Information in dieser E-Mail ist ausschliesslich fuer den Adressaten bestimmt und koennte vertrauliches und/oder privilegiertes Material enthalten. Jeglicher Zugriff auf diese E-Mail, die Übertragung, die Verbreitung oder anderweitige Verwendung sowie die Ergreifung von Massnahmen irgendeiner Art durch andere Personen als den Adressaten sind untersagt. Sollten Sie diese E-Mail irrtuemlich erhalten haben, informieren Sie bitte unverzüglich den Absender und löschen Sie diese E-Mail von Ihrem Computer, ohne Kopien anzufertigen.

Wir korrespondieren mit Ihnen ueber das Internet per E-Mail. Dennoch ist allein die von uns unterzeichnete schriftliche Fassung verbindlich. Wir weisen darauf hin, dass E-Mails verloren gehen, veraendert oder verfaelscht werden koennen. E-Mails sind grundsätzlich nicht gegen den Zugriff von Dritten geschuetzt. Daher ist auch die Vertraulichkeit unter Umstaenden nicht gewahrt. Wir haften deshalb nicht fuer die Unversehrtheit von E-Mails, nachdem sie unseren Herrschaftsbereich verlassen haben, und koennen Ihnen hieraus entstehende Schaeden nicht ersetzen. Sollte trotz der von uns verwendeten Viren-Schutz-Programme durch die Zusendung von E-Mails ein Virus in Ihre Systeme gelangen, haften wir nicht fuer eventuell hieraus entstehende Schaeden. Dieser Haftungsausschluss gilt nur soweit gesetzlich zulaessig.


(js) #2

Hi,

try something like this:

{
"query":{
"ConstantScoreQuery":{
"filter":{
"or":[{
"and":[{"term":{"":""}},{"term":{"":""}}]
},{
"and":[{"term":{"":""}},{"term":{"":""}}]
}]
}
}
}
}


(Karussell) #3

What do you want to achieve?

Using " within the enclosing brackets is not allowed in json. You'll
need to escape it.

  • take a look into the docs:

http://www.elasticsearch.org/guide/reference/query-dsl/constant-score-query.html

On May 16, 3:40 pm, js js_0...@yahoo.de wrote:

Hi,

try something like this:

{
"query":{
"ConstantScoreQuery":{
"filter":{
"or":[{
"and":[{"term":{"":""}},{"term":{"":""}}]
},{
"and":[{"term":{"":""}},{"term":{"":""}}]
}]
}
}
}

}

--
View this message in context:http://elasticsearch-users.115913.n3.nabble.com/Please-help-me-with-t...
Sent from the ElasticSearch Users mailing list archive at Nabble.com.


(js) #4

Didn't mean to provide the entire script that is why I left the key value pairs left... I know that I need to escape them...


(system) #5