Я пытаюсь использовать функцию перколяции в elasticsearch. Он отлично работает, но из коробки нет никаких средств для обработки сингулярных/множественных чисел и т. Д. Документация довольно тонкая в этой теме, поэтому мне было интересно, если кто-то получил эту работу и какие настройки требуются. На данный момент я не индексирую свои документы, так как я их не ищу, просто передавая их через перколятор для запуска уведомлений.elasticsearch percolator stemmer
ответ
Вы можете использовать percolate API для проверки документов против перколяторов без их индексации. Однако API percolate
требует и index
и type
для вашего документа. Это значит, что он знает, как определяется каждое поле в вашем документе (или отображается).
Анализаторы относятся к индексу, а поля в определении отображения/типа могут использовать либо глобально определенные анализаторы, либо пользовательские анализаторы, определенные для вашего индекса.
Например, мы могли бы определить отображение для индекса test
типа test
с использованием глобально определенный анализатора следующим образом:
curl -XPUT 'http://127.0.0.1:9200/test/?pretty=1' -d '
{
"mappings" : {
"test" : {
"properties" : {
"title" : {
"type" : "string",
"analyzer" : "english"
}
}
}
}
}
'
Или же, вы можете настроить пользовательский анализатор, который принадлежит только к индексу test
:
curl -XPUT 'http://127.0.0.1:9200/test/?pretty=1' -d '
{
"mappings" : {
"test" : {
"properties" : {
"title" : {
"type" : "string",
"analyzer" : "my_english"
}
}
}
},
"settings" : {
"analysis" : {
"analyzer" : {
"my_english" : {
"stopwords" : [],
"type" : "english"
}
}
}
}
}
'
Теперь мы можем создать кофейник, задающий, какой индекс принадлежит:
curl -XPUT 'http://127.0.0.1:9200/_percolator/test/english?pretty=1' -d '
{
"query" : {
"match" : {
"title" : "singular"
}
}
}
'
И проверить его с percolate
API, снова указав индекс и тип:
curl -XGET 'http://127.0.0.1:9200/test/test/_percolate?pretty=1' -d '
{
"doc" : {
"title" : "singulars"
}
}
'
# {
# "ok" : true,
# "matches" : [
# "english"
# ]
# }
Великий ответ. Обратите внимание, что для более новых версий ES используйте: PUT /test/.percolator/english?pretty=1 ... – yahermann