Как мне запрашивать эластичный поиск с учетом моего сопоставления и использования ключевых слов?

У меня есть очень простое отображение, которое выглядит так (я немного упростил пример):

{
    "location" : {
        "properties": {
            "name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
            "description": { "type": "string", "analyzer": "snowball" }
        }
    }
}

Теперь я индексирую много местоположений s с использованием случайных значений, основанных на реальных английских словах.

Я хотел бы иметь возможность искать местоположения, которые соответствуют любому из заданных ключевых слов либо в поле имени, либо в поле описания (name более важно,отсюда и усиление, которое я ему дал). Я попробовал несколько разных запросов, и они не дали никаких результатов.

{
    "fields" : ["name", "description"],
    "query" : {
        "terms" : {
            "name" : ["savage"],
            "description" : ["savage"]
        },
        "from" : 0,
        "size" : 500
    }
}

Учитывая, что есть места, в описании которых есть слово savaged , он должен дать мне некоторые результаты ( savage является стержнем диких ). Он дает 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

, я действительно получаю один результат (конечно, теперь он будет искать только поле описания).

В основном я ищу запрос, который будет выполнять поиск типа ИЛИ с использованием нескольких ключевых слов и сравнивать их со значениями как в поле имени, так и в поле описания.

6
задан Pawel Krakowiak 20 July 2011 в 15:36
поделиться