David_Boon
(David Boon)
December 20, 2012, 8:59pm
1
I'm having some trouble getting a search to work. I started with a working
query against one index, here's the query that works with one index:
curl -s -v -XGET http://localhost:9200/persons/_search?pretty=true -d '
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "firstName", "lastName"],
"query":"*"
}
}}}}
'
That query returns records, everything ok. Now I've changed the query to
use _msearch, here's the new query:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d '
{"index": "persons"}
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "firstName", "lastName"],
"query":""
}
}}}}
{"index": "groups"}
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "name", "description"],
"query":" "
}
}}}}
'
That query generates the following error:
"error" : "Unexpected character (':' (code 58)): expected a valid value
(number, String, array, object, 'true', 'false' or 'null')\n at [Source:
[B@1e44e3e9; line: 1, column: 299]"
My elastic search version is 0.19.10.
Thanks for any help on determining why I'm getting this error.
--
Igor_Motov
(Igor Motov)
December 20, 2012, 10:10pm
2
The queries in multi search shouldn't contain new lines ('\n'). Try this:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d '{"index":
"persons"}
{"query": {"filtered": { "query": { "query_string": {"fields":["_id",
"firstName", "lastName"], "query":""}}}}}
{"index": "groups"}
{"query": {"filtered": {"query": {"query_string": {"fields":["_id", "name",
"description"], "query":" "}}}}}
'
On Thursday, December 20, 2012 3:59:14 PM UTC-5, David Boon wrote:
I'm having some trouble getting a search to work. I started with a
working query against one index, here's the query that works with one index:
curl -s -v -XGET http://localhost:9200/persons/_search\?pretty\=true -d '
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "firstName", "lastName"],
"query":"*"
}
}}}}
'
That query returns records, everything ok. Now I've changed the query to
use _msearch, here's the new query:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d '
{"index": "persons"}
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "firstName", "lastName"],
"query":""
}
}}}}
{"index": "groups"}
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "name", "description"],
"query":" "
}
}}}}
'
That query generates the following error:
"error" : "Unexpected character (':' (code 58)): expected a valid value
(number, String, array, object, 'true', 'false' or 'null')\n at [Source:
[B@1e44e3e9; line: 1, column: 299]"
My Elasticsearch version is 0.19.10.
Thanks for any help on determining why I'm getting this error.
--
David_Boon
(David Boon)
December 21, 2012, 3:18pm
3
Thanks, I suppose that should have been more obvious to me since I grasped
the spacing around "index".
This works:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d '
{"index": "persons"}
{"query": {"filtered": {"query": { "query_string": { "fields":["_id",
"firstName", "lastName"], "query":"" } }}}}
{"index": "groups"}
{"query": {"filtered": { "query": { "query_string": { "fields":["_id",
"name", "description"], "query":" " } }}}}
'
It seems like a weakness to rely on spacing to delineate anything at all,
especially in a structured document like json. Maybe it's not a big deal
if you're using a driver, maybe only a problem for the rest api.
Thanks again!
On Thursday, December 20, 2012 5:10:05 PM UTC-5, Igor Motov wrote:
The queries in multi search shouldn't contain new lines ('\n'). Try this:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d '{"index":
"persons"}
{"query": {"filtered": { "query": { "query_string": {"fields":["_id",
"firstName", "lastName"], "query":""}}}}}
{"index": "groups"}
{"query": {"filtered": {"query": {"query_string": {"fields":["_id",
"name", "description"], "query":" "}}}}}
'
On Thursday, December 20, 2012 3:59:14 PM UTC-5, David Boon wrote:
I'm having some trouble getting a search to work. I started with a
working query against one index, here's the query that works with one index:
curl -s -v -XGET http://localhost:9200/persons/_search\?pretty\=true -d '
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "firstName", "lastName"],
"query":"*"
}
}}}}
'
That query returns records, everything ok. Now I've changed the query to
use _msearch, here's the new query:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d '
{"index": "persons"}
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "firstName", "lastName"],
"query":""
}
}}}}
{"index": "groups"}
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "name", "description"],
"query":" "
}
}}}}
'
That query generates the following error:
"error" : "Unexpected character (':' (code 58)): expected a valid
value (number, String, array, object, 'true', 'false' or 'null')\n at
[Source: [B@1e44e3e9; line: 1, column: 299]"
My Elasticsearch version is 0.19.10.
Thanks for any help on determining why I'm getting this error.
--
Igor_Motov
(Igor Motov)
December 22, 2012, 12:35am
4
Yes, it's an optimization hack in a sense and it's used only in two places
bulk indexing and multi_search. When node receives the multi_search
request, it parses the request on two levels: multi_search level and search
level. On the multi_search level, elasticsearch is interested only in
headers ({"index":....} parts), and on the search level - only in search
requests. If everything was wrapped into a single json, the search requests
would have to be parsed twice.
On Friday, December 21, 2012 10:18:06 AM UTC-5, David Boon wrote:
Thanks, I suppose that should have been more obvious to me since I grasped
the spacing around "index".
This works:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d '
{"index": "persons"}
{"query": {"filtered": {"query": { "query_string": { "fields":["_id",
"firstName", "lastName"], "query":"" } }}}}
{"index": "groups"}
{"query": {"filtered": { "query": { "query_string": { "fields":["_id",
"name", "description"], "query":" " } }}}}
'
It seems like a weakness to rely on spacing to delineate anything at all,
especially in a structured document like json. Maybe it's not a big deal
if you're using a driver, maybe only a problem for the rest api.
Thanks again!
On Thursday, December 20, 2012 5:10:05 PM UTC-5, Igor Motov wrote:
The queries in multi search shouldn't contain new lines ('\n'). Try this:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d
'{"index": "persons"}
{"query": {"filtered": { "query": { "query_string": {"fields":["_id",
"firstName", "lastName"], "query":""}}}}}
{"index": "groups"}
{"query": {"filtered": {"query": {"query_string": {"fields":["_id",
"name", "description"], "query":" "}}}}}
'
On Thursday, December 20, 2012 3:59:14 PM UTC-5, David Boon wrote:
I'm having some trouble getting a search to work. I started with a
working query against one index, here's the query that works with one index:
curl -s -v -XGET http://localhost:9200/persons/_search\?pretty\=true -d
'
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "firstName", "lastName"],
"query":"*"
}
}}}}
'
That query returns records, everything ok. Now I've changed the query
to use _msearch, here's the new query:
curl -s -v -XGET http://localhost:9200/_msearch?pretty=true -d '
{"index": "persons"}
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "firstName", "lastName"],
"query":""
}
}}}}
{"index": "groups"}
{"query": {"filtered": {
"query": {
"query_string": {
"fields":["_id", "name", "description"],
"query":" "
}
}}}}
'
That query generates the following error:
"error" : "Unexpected character (':' (code 58)): expected a valid
value (number, String, array, object, 'true', 'false' or 'null')\n at
[Source: [B@1e44e3e9; line: 1, column: 299]"
My Elasticsearch version is 0.19.10.
Thanks for any help on determining why I'm getting this error.
--