EDIT 1 ;
this seem to work for begining :
curl -XGET 'localhost:9200/donnees/specimens/_search?pretty=true' -d '{
"fields" : ["E_EVENTID", "O_CATALOGNUMBER", "O_RECORDNUMBER"],
"query" : {
"bool" : {
"must" : [
{
"query_string":{"query" : "O_CATALOGNUMBER:P000023*"}
},
{
"query_string":{"query" :
"O_RECORDNUMBER:recordnumber236*"}
},
{
"range" : {
"E_EVENTID" : {
"gte" : 36,
"lte" : 60
}
}
}
]
}
},
"highlight": {"pre_tags": ["<strong>"], "post_tags": ["</strong>"],
"fields": {"*": {}}},
"facets": {
"lifestage": {"terms": { "field": "O_LIFESTAGE", "size": 20}},
"sex": {"terms": {"field": "O_SEX", "size": 20}},
"continent": {"terms": {"field": "L_CONTINENT", "size": 20}},
"institutioncode": {"terms": {"field": "I_INSTITUTIONCODE", "size":
20 }}
}
}'
Le lundi 1 septembre 2014 11:56:42 UTC+2, alain ibrahim a écrit :
>
> Hello
>
> I'm quite new on elasticsearch.
>
> I made a form who query an elasticsearch document for getting the datas.
>
> In the form there is mutiple input :
> image_yes : checkbox
> NAME : string
> COLLECTION : string
> CATALOGNUMBER:string
> RECORDNUMBER: string
> LOCALISATION: string
> EVENTID : integer
> event_date_start: year integer
> event_date_end: year integer
>
>
> the search is general: on all the fields of the document
> I made many simples queries who works but i can't make a complexe one
> working with AND and RANGE. All the exemples i see use "match_all:{}".
> I also need the use of "*" and "?" in the query.
>
> *this work ok:*
>
> curl -XGET 'localhost:9200/donnees/specimens/_search?pretty=true' -d '{
> "fields" : ["EVENTID", "CATALOGNUMBER", "RECORDNUMBER"],
> "query" : {
> "query_string" : {
> "query" : "CATALOGNUMBER:P000023*"
>
> }
> }
> }'
>
>
> curl -XGET 'localhost:9200/donnees/specimens/_search?pretty=true' -d '{
> "fields" : ["EVENTID", "CATALOGNUMBER", "RECORDNUMBER"],
> "query" : {
> "filtered" : {
> "filter" : {
> "range":{"EVENTID": {"from" : 36,
> "to" : 50,
> "include_lower" : true,
> "include_upper" : false}
> }
> }
> }
> }
> }'
>
> *this working ok too:*
>
> curl -XGET 'localhost:9200/donnees/specimens/_search?pretty=true' -d '{
> "fields" : ["EVENTID", "CATALOGNUMBER", "RECORDNUMBER"],
> "query" : {
> "bool" : {
> "must" : [
> {
> "query_string":{"query" : "CATALOGNUMBER:P000023*"}
> },
> {
> "query_string":{"query" :
> "RECORDNUMBER:recordnumber236*"}
> }
> ]
> }
> },
> "highlight": {"pre_tags": ["<strong>"], "post_tags": ["</strong>"],
> "fields": {"*": {}}},
> "facets": {
> "lifestage": {"terms": { "field": "LIFESTAGE", "size": 20}},
> "sex": {"terms": {"field": "SEX", "size": 20}},
> "continent": {"terms": {"field": "CONTINENT", "size": 20}},
> "institutioncode": {"terms": {"field": "INSTITUTIONCODE", "size":
> 20 }}
> }
> }'
>
>
> *trying to merge but fail : *
> I need that the facets are made with the results so i can't use
> "filtering" if i understand good.
> I try many syntaxes but nothink good.
>
>
> (error)
> curl -XGET 'localhost:9200/donnees/specimens/_search?pretty=true' -d '{
> "fields" : ["EVENTID", "CATALOGNUMBER", "RECORDNUMBER"],
> "query" : {
> "filtered" : {
> "filter" : {
> "range":{"EVENTID": {"from" : 36,
> "to" : 50,
> "include_lower" : true,
> "include_upper" : false}
> }
> },
> "query_string" : {
> "query" : "CATALOGNUMBER:P000023*"
> }
> }
> },
> "highlight": {"pre_tags": ["<strong>"], "post_tags": ["</strong>"],
> "fields": {"*": {}}},
> "facets": {
> "lifestage": {"terms": { "field": "LIFESTAGE", "size": 20}},
> "sex": {"terms": {"field": "SEX", "size": 20}},
> "continent": {"terms": {"field": "CONTINENT", "size": 20}},
> "institutioncode": {"terms": {"field": "INSTITUTIONCODE", "size":
> 20 }}
> }
> }'
> error :
> curl -XGET 'localhost:9200/donnees/specimens/_search?pretty=true' -d '{
> "fields" : ["EVENTID", "CATALOGNUMBER", "RECORDNUMBER"],
> "query" : {
> "filtered" : {
> "filter" : {
> "range":{"EVENTID": {"from" : 36,
> "to" : 50,
> "include_lower" : true,
> "include_upper" : false}
> }
> }
> },
> "query_string" : { "query" : "CATALOGNUMBER:P000023*" }
> },
> "highlight": {"pre_tags": ["<strong>"], "post_tags": ["</strong>"],
> "fields": {"*": {}}},
> "facets": {
> "lifestage": {"terms": { "field": "LIFESTAGE", "size": 20}},
> "sex": {"terms": {"field": "SEX", "size": 20}},
> "continent": {"terms": {"field": "CONTINENT", "size": 20}},
> "institutioncode": {"terms": {"field": "INSTITUTIONCODE", "size":
> 20 }}
> }
> }'
>
>
>
> how can i put a AND query with Range please ?
>
> I whish somethink like this in pseudo sql:
>
> select * from document where :
> image_yes is true
> AND NAME : "name"
> AND COLLECTION : "collection*"
> AND CATALOGNUMBER:"catalognumber*"
> AND RECORDNUMBER:"recordnumber*"
> AND LOCALISATION: "localisation"
> AND
> "range":{"EVENTID": {"from" : 36, "include_lower" : true
> }
> AND
> "range":{" event_date": {"from" : event_date_start,
> "to" : event_data_end,
> "include_lower" : true,
> "include_upper" : false}
> }
>
>
> Many thanks
> Alain
>
--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/cb885e1e-8db5-4001-abf9-e24fc7839913%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.