У меня очень простое отображение, которое выглядит следующим образом (я немного упростил пример):
{
"location" : {
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
Теперь я индексирую множество мест, используя некоторые случайные значения, основанные на реальных английских словах.
Я бы хотел иметь возможность искать местоположения, которые соответствуют любому из заданных ключевых слов либо в имени, либо в поле описания. (имя важнее, поэтому я дал ему повышение). Я пробовал несколько разных запросов, и они не дают никаких результатов.
{
"fields" : ["name", "description"],
"query" : {
"terms" : {
"name" : ["savage"],
"description" : ["savage"]
},
"from" : 0,
"size" : 500
}
}
Учитывая, что есть места, в описании которых есть слово savaged , это должно дать мне некоторые результаты ( savage - основа savaged ). Это дает 0 результатов, используя вышеуказанный запрос. Я использовал curl для запроса ES:
curl -XGET -d @query.json http://localhost:9200/myindex/locations/_search
Если вместо этого я использую строку запроса:
curl -XGET http://localhost:9200/fieldtripfinder/locations/_search?q=description:savage
Я на самом деле получаю один результат (конечно, теперь он будет искать только в поле описания).
В основном я ищу запрос, который будет выполнять ИЛИ-поиск по нескольким ключевым словам и сравнивать их со значениями как в поле имени, так и в поле описания.