Индексирование документов только числовыми полями в asticsearch

Я пытаюсь хранить объекты в asticsearch, которые представлены только числовыми полями. В моем случае каждый объект имеет 300 полей с плавающей точкой и 1 поле идентификатора. Я поставил поле id как not_analyzed. Я могу хранить документы в ES.

 "_index": "smart_content5",
    "_type": "doc2vec",
    "_id": "AVtAGeaZjLL5cvd8z9y7",
    "_score": 1,
    "_source": {
      "feature_227": 0.0856793,
      "feature_5": -0.115823,
      "feature_119": -0.0379987,
      "feature_145": 0.17952,
      "feature_29": 0.0444945,

но теперь я хочу выполнить запрос, представленный теми же 300 полями, но разными числовыми значениями (конечно). Теперь я хочу найти документ, 300 полей которого "наиболее похожи" на поля этого запроса. Так что это похоже на косинусное сходство, но я пытаюсь использовать ES для этого, чтобы он был быстрым.

(1) Прежде всего, возможно ли вообще делать то, что я делаю??

(2) Во-вторых, я изучил функцию function_score в ES и попытался использовать ее, но она возвращает, что максимальный счет совпадения равен 0.0!!

Любые комментарии о том, что я должен использовать и что я могу делать неправильно в [2].

1 ответ

Решение

Я думаю тебе еще нужно function_score но вот так (у меня сработало)

{
  "query": {
    "function_score": {
      "query": {},
      "functions": [
        {
          "gauss": {
            "feature_227": {
              "origin": "0",
              "scale": "0.5"
            }
          }
        },
        {
          "gauss": {
            "feature_5": {
              "origin": "0",
              "scale": "0.5"
            }
          }
        },
        {
          "gauss": {
            "feature_119": {
              "origin": "0",
              "scale": "0.5"
            }
          }
        },
        {
          "gauss": {
            "feature_145": {
              "origin": "0",
              "scale": "0.5"
            }
          }
        },
        {
          "gauss": {
            "feature_29": {
              "origin": "0",
              "scale": "0.5"
            }
          }
        }
      ],
      "score_mode": "sum"
    }
  }
}
Другие вопросы по тегам