Elasticsearch: тот же запрос, разные результаты - PullRequest
1 голос
/ 27 марта 2020

Я запрашиваю ES для индекса с 22 миллионами записей, использующих python. Я просто пытаюсь получить извлечение месяц за месяцем.

У меня может быть 10000 записей для одного запроса, а затем через 5 секунд я снова запрашиваю, и у меня есть 20000+ записей, а затем снова снова до 60000+, что правильный результат.

Иногда у меня правильный ответ сразу, иногда только после 10-го запроса.

Моя теория состоит в том, что индекс разрушается и перестраивается, и я запрашиваю его снова во время перестроения.

{"_source": {"includes": grabFields},
            "query": {
            "bool": {
                "filter":
                        [
                            {"range": {"RECEPTION_TIME": {"gte": "1554076800000","lte": "1556668799000"}}}
                        ]
                    ,
                "must": [{
                    "bool": {
                        "should": [{
                            "match": {
                                "COLOR": "BLUE"
                            }
                        }, {
                            "match": {
                                "COLOR": "RED"
                            }
                        }, {
                            "match": {
                                "COLOR": "ROSE"
                            }
                        }, {
                            "match": {
                                "COLOR": "GREEN"
                            },
                        }]
                    }
                }, {
                    "bool": {
                        "should": [{
                            "match": {
                                "CLASS": "FIRST"
                            }
                        }, {
                            "match": {
                                "CLASS": "SECOND"
                            }
                        }
                        ]
                    }
                }, {
                    "bool": {
                        "must_not": [{
                            "match": {
                                "IGNORE_ME": "YES"
                            }
                        }]
                    }
                }]
            }
        }
    } 

1 Ответ

0 голосов
/ 27 марта 2020

Elasticsearch позволяет осуществлять поиск практически в реальном времени. Существует небольшая задержка между моментом индексации документа и моментом его доступности для поиска.

Эта задержка настраивается настройкой refresh_interval вашего индекса. Существует также API для запуска операции refre sh, которая делает документы доступными для поиска. ( do c здесь )

Не могли бы вы проверить свой индекс refresh_interval?

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