Как создать функцию Decay в ElasticSearch DSL python

Я запрашиваю эластичный поиск с помощью elasticsearch-dsl / 2.0.0

 "linear": {
        "date": {
              "origin": "now", 
              "scale": "10d",
              "offset": "5d", 
              "decay" : 0.5 
        }
    }

https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-function-score-query.html#function-decay

Как построить запрос линейной функции с elasticsearch-dsl


person devanathan    schedule 06.10.2016    source источник


Ответы (1)


Попробуйте следующий запрос

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, query

client = Elasticsearch()

s = Search(using=client)

function_score_query = query.Q(
        'function_score',
        query=query.Q('match', your_field='your_query'),
        functions=[
            query.SF('linear',date={"origin":"now","scale":"10d",
                                    "offset":"5d", "decay":0.5})
        ]
    )

Если вы распечатаете function_score_query.to_dict(), вы получите

{
    'function_score': {
        'query': {
            'match': {
                'your_field': 'your_query'
            }
        },
        'functions': [{
            'linear': {
                'date': {
                    'origin': 'now',
                    'decay': 0.5,
                    'scale': '10d',
                    'offset': '5d'
                }
            }
        }]
    }
}

Вы можете проверить тестовые случаи github, чтобы узнать, как можно использовать запрос оценки функции в DSL.

person ChintanShah25    schedule 07.10.2016