Получение ошибки «Не найдено сопоставление для [logdata.timestamp] для сортировки»

Получение ошибки Не найдено сопоставление для [logdata.timestamp] для сортировки"

{
            "dynamic": "false",
            "_meta": {
                "version": 2,
                "updateTimeInMs": 1607537203813
            },
            "properties": {
                "log": {
                    "properties": {
                        "logid": {
                            "type": "keyword"
                        },
                        "logdata": {
                            "type": "text",
                            "index": false
                        },
                        "timestamp": {
                            "type": "date"
                        },
                        "version": {
                            "type": "integer",
                            "index": false,
                            "doc_values": false
                        }
                    }
                }
            }
        }

и я использую для получения результатов Примечание. Поля logid и временные метки индексируются.

{
    "from": 0,
    "size": 1000,
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "logid": {
                            "value": "1",
                            "boost": 1.0
                        }
                    }
                },
                {
                    "range": {
                        "timestamp": {
                            "from": 1607212800,
                            "to": 1607299200,
                            "include_lower": true,
                            "include_upper": true,
                            "boost": 1.0
                        }
                    }
                }
            ],
            "adjust_pure_negative": true,
            "boost": 1.0
        }
    },
    "sort": [
        {
            "timestamp": {
                "order": "asc"
            }
        }
    ]
}
2
0
1 347
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На основе предоставленного вами сопоставления вы должны использовать поля log.timestamp и log.logid, измененный поисковый запрос будет:

{
  "from": 0,
  "size": 1000,
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "log.logid": {
              "value": "1",
              "boost": 1.0
            }
          }
        },
        {
          "range": {
            "log.timestamp": {
              "from": 1607212800,
              "to": 1607299200,
              "include_lower": true,
              "include_upper": true,
              "boost": 1.0
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  },
  "sort": [
    {
      "log.timestamp": {           <-- note this
        "order": "asc"
      }
    }
  ]
}

Также необходимо исправить запросы range и term.

Val 09.12.2020 20:04

Да @Вал, спасибо. Обновил запрос.

ESCoder 10.12.2020 02:58

@Codinggeek, у вас была возможность просмотреть ответ, с нетерпением жду ваших отзывов 🙂

ESCoder 10.12.2020 11:30

@Codinggeek спасибо, что приняли ответ, не могли бы вы также проголосовать за ответ 🙂

ESCoder 17.12.2020 03:38

Другие вопросы по теме