Фильтр поиска Elasticsearch для поиска полей подобъектов - PullRequest
5 голосов
/ 02 февраля 2012

Как выполнить фильтрованный поиск в ElasticSearch по полю подобъекта?Например, в моем документе есть поле id и поле data, которое представляет собой массив JSON того, как данные хранились в моей базе данных:

{_id: 000, merchant: "merchant_1", email: "hello@email.com"}

Мой поисковый запрос:

"query": {
    "filtered": {
        "filter": { "term": { "data.merchant": "merchant_1"} },
        "query": {
            "query_string": {"query": "hello"} }
        }
    }
}

ничего не возвращает, но выполнение запроса только с строкой запроса hello возвращает правильные строки.Изменение "data.merchant" => "merchant" также ничего не меняет.

Я что-то здесь не так делаю?

Обновление: В итоге я просто использовал логическое значениезапрос, который сработал.

1 Ответ

0 голосов
/ 15 марта 2013
"query": {
    "filtered": {
        "filter": { "term": { "data.merchant": "merchant_1"} },
        "query": {
            "query_string": {
                "default_field": "_all",
                "query": "hello"
            }
        }
    }
}

Это должно работать для вашего случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...