(From / Size) в запросеasticsearch не возвращает ожидаемый документ - PullRequest
0 голосов
/ 20 апреля 2020

потому что, когда я использую в запросе функцию (From / Size), она не возвращает do c, который я надеюсь вернуть. Например, у меня есть 5 документов вasticsearch, все документы в последовательности: _id 1, _id 2, _id 3, _id 4, id _5.

В do c ID 5 есть слово (car) и в запросе, который я говорю, чтобы получить слово (автомобиль) из идентификатора 4 («от»: 4, «размер»: 1,), он не возвращает идентификатор 5, у него есть слово (автомобиль), но в запросе I положить информацию, которая существует в do c 5, поэтому я должен принести do c 5, но это не так и говорит, что не нашел результата. Если я поставлю запрос с идентификатором 0 («from»: 0, «size»: 1,), он найдет идентификатор 5. Похоже, чтоasticsearch путает с идентификаторами. Можете ли вы сказать мне, что происходит с идентификаторами?

Запрос ниже от идентификатора 4 не возвращает идентификатор 5, но если я поставлю запрос с идентификатором 0, то он возвращает идентификатор 5

{
"from": 4, "size": 1,
"query": {
"multi_match": {
"query": "car",

   "type": "cross_fields",
   "fields": ["title", "description", "url"],
   "operator": "and"
}
}
}

Ответы [ 3 ]

0 голосов
/ 20 апреля 2020

в запросе ниже я отправляю результаты, которые имеют поле (pgrk) между 9 и 10 и имеют поле (url_length) меньше 4, но запись с (_id 15) удовлетворяет тому, что я запросил, но возвращает только запись (_id 15), если я поставил («from»: 0, «size»: 1,), если я поставил («from»: 1, «size»: 1,), не возвращает запись (_id 15)

{
    "from": 1,
    "size": 1,
    "sort": [
        {
            "pgrk": {
                "order": "desc"
            }
        },
        {
            "url_length": {
                "order": "asc"
            }
        }
    ],
    "query": {
        "bool": {
            "must": {
                "multi_match": {
                    "query": "netflix",
                    "type": "cross_fields",
                    "fields": [
                        "titulo",
                        "descricao",
                        "url"
                    ],
                    "operator": "and"
                }
            },
            "filter": [
                {
                    "range": {
                        "pgrk": {
                            "gte": 9,
                            "lte" : 10
                        }
                    }
                },
                {
                    "range": {
                        "url_length": {
                           "lt" : 4
                        }
                    }
                }
            ]
        }
    }
}

если я поставлю ("from": 1, "size": 1,), он не вернет запись (_id 15), у которой "url_length = 2" возвращает do c из _id 14, который имеет "url_length = 3", как показано ниже:

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": null,
    "hits": [
      {
        "_index": "teste",
        "_type": "_doc",
        "_id": "14",
        "_score": null,
        "_source": {
          "url": "www.333.com",
          "titulo": "netflix netflix netflix netflix netflix netflix netflix netflix netflix netflix",
          "descricao": "tudo sobre netflix netflix netflix netflix netflix netflix",
          "pgrk": "10",
          "url_length": "3"
        },
        "sort": [
          10,
          3
        ]
      }
    ]
  }
}

, если я поставлю ("from": 0, "size": 1,), то он возвращает запись (_id 15), которая имеет " url_length = 2 "

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": null,
    "hits": [
      {
        "_index": "teste",
        "_type": "_doc",
        "_id": "15",
        "_score": null,
        "_source": {
          "url": "www.netflix.yahoo.com",
          "titulo": "melhor filme",
          "descricao": "tudo sobre series",
          "pgrk": "10",
          "url_length": "2"
        },
        "sort": [
          10,
          2
        ]
      }
    ]
  }
}
0 голосов
/ 20 апреля 2020

как мне всегда возвращать документы с наименьшим значением в поле "url_length"?

, потому что я его искал ("from": 1, "size": 1,) и не сделал принести запись (_id 15), которая имеет ("url_length" = 2) принести запись (_id 14), которая имеет ("url_length" = 3)

0 голосов
/ 20 апреля 2020

size и from применяются после применяются фильтры запроса.

Кроме того, ваши "отсортированные" идентификаторы do c не обязательно гарантируют порядок поиска, особенно когда подсчет очков вступает в игру.

Если вы поделитесь своими документами и картами, мы можем помочь вам в дальнейшем.

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