У меня есть запросasticsearch, который ищет людей по нескольким полям, довольно просто, это выглядит так:
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "joe",
"fields": [
"personName^-1.0",
"person.city^-1.0",
"person.street^-1.0"
],
"type": "phrase_prefix",
"lenient": "true"
}
}
],
"boost": 1.0,
"minimum_should_match": "1"
}
},
"from": 0,
"size": 20
}
моя проблема в том, что у меня есть много людей в моей базе данных, и я хочу добавить некоторыесвоего рода повышение производительности, поэтому я получу человека "страна", а затем буду искать только людей в этой стране.
, поэтому я попробовал что-то вроде:
{
"query": {
"bool": {
"must": [
{
"term": {
"country": {
"boost": "0.0",
"value": "US"
}
}
}
],
"should": [
{
"multi_match": {
"query": "joe",
"fields": [
"personName^-1.0",
"person.city^-1.0",
"person.street^-1.0"
],
"type": "phrase_prefix",
"lenient": "true"
}
}
],
"boost": 1.0,
"minimum_should_match": "1"
}
},
"from": 0,
"size": 20
}
, но это не работает...я не дает результата, и я полагаю, что ..
мой объект выглядит так:
{
"personName": "joey",
"country": "US",
"city": "LA",
"street": "hollywood",
}
мои отображения:
{
"people": {
"mappings": {
"vendors": {
"properties": {
"country": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"personName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"street": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"city": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}