【发布时间】:2020-08-04 18:54:15
【问题描述】:
我有一个针对不同用户的黑名单单词列表(5k-10k 单词)和一个电影标题,我需要搜索黑名单单词。
我想知道电影标题是否包含特定用户的任何列入黑名单的单词,因此有机会渗透查询解释 here。
创建了映射:
PUT /blacklist
{
"mappings": {
"properties": {
"words": {
"type": "text"
},
"query": {
"type": "percolator"
}
}
}
}
现在索引user id=1的黑名单:
PUT /blacklist/_doc/1?refresh
{
"query": {
"terms": {
"words": ["Star", "Wars", "Trek"]
}
}
}
现在尝试搜索 A Journey of some guys on a Star Trek ship 包含用户的任何黑名单字词(答案是,是的)。
GET /blacklist/_search
{
"query": {
"percolate": {
"field": "query",
"document": {
"words": "A Journey of some guys on a Star Trek ship"
}
}
}
}
但不幸的是,它没有击中任何文档。
在索引上搜索也不起作用。
GET /blacklist/_search
{
"query": {
"terms": {
"words": ["Star", "Wars", "Trek"]
}
}
}
// No hit
这是存储的文档:
GET blacklist/_search
{
"query": {
"match_all": {}
}
}
{
"_index" : "blacklist",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"query" : {
"terms" : {
"words" : [
"Star", "Wars", "Trek"
]
}
}
}
}
看起来我无法进行 perculator 查询来处理数组。你能指导我吗?
【问题讨论】:
标签: elasticsearch