Am trying to fetch documents from elasticsearch with multiple fields using AND operator
for the below query am expecting the following results
AB-7000-8002-W
But am getting this error message Unrecognized token 'get': was expecting ('true', 'false' or 'null')\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@40d2a7e8; line: 1, column: 5]
get my_index12/_search {
"query" : {
"bool": {
"should": [
{
"match": {
"code": {
"query": "AB-5000-6002-AK",
"operator": "and"
}
}
},
{
"match": {
"locale": {
"query": "en_US",
"operator": "and"
}
}
}
]
}
}
}
Please find my index documents below
{
"_index": "my_index12",
"_type": "doc",
"_id": "2",
"_score": 1,
"_source": {
"code": "AB-7000-8002-W",
"locale": "en_US"
}
},
{
"_index": "my_index12",
"_type": "doc",
"_id": "4",
"_score": 1,
"_source": {
"code": "AB-7000-8002-W",
"locale": "en_EU"
}
},
{
"_index": "my_index12",
"_type": "doc",
"_id": "1",
"_score": 1,
"_source": {
"code": "sG66tsdF",
"locale": "en_US"
}
},
{
"_index": "my_index12",
"_type": "doc",
"_id": "3",
"_score": 1,
"_source": {
"code": "AB-7000-6002-WK",
"locale": "en_EU"
}
Just move curly brace in the line get my_index12/_search {
to the next line.
It should work.
In order to get results which satisfy both the conditions, you have to use must
clause instead of should
. "AND" operator in match
query is not meant for the use case you want to achieve. Use below query.
{
"query": {
"bool": {
"must": [
{
"match": {
"code": {
"query": "TE-7000-8002-W",
"operator": "and"
}
}
},
{
"match": {
"locale": {
"query": "en_US",
"operator": "and"
}
}
}
]
}
}
}
For those looking for AND like query on multiple fields should work . Below will search for code as "TE-7000-8002-W" and locale as en_US only
"query": {
"bool": {
"must": [
{
"match": {
"code": "TE-7000-8002-W"
}
},
{
"match": {
"locale": "en_US"
}
}
]
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With