Я начну объяснять это через API.
Запрос Percolate можно использовать для сопоставления запросов, хранящихся в индексе.
При создании индекса в поле Percolate вы указываете отображение следующим образом:
PUT /my-index
{
"mappings": {
"properties": {
"message": {
"type": "text"
},
"query": {
"type": "percolator"
}
}
}
}
Это указывает на то, что поле message
будет тем, которое используется для запроса Percolate.
Если вы хотите сопоставить список документов, следует отправить список терминов с этим полем, как в примере , найденном в документации :
GET /my-index/_search
{
"query" : {
"percolate" : {
"field" : "query",
"documents" : [
{
"message" : "bonsai tree"
},
{
"message" : "new tree"
},
{
"message" : "the office"
},
{
"message" : "office tree"
}
]
}
}
}
Сказав это, вы должны:
Установить правильные отображения в индексе ES, чтобы задать поле c.
В DSL, отправьте список параметров только с полем «Percolated», а не весь документ ES.
Надеюсь, это полезно: D