我有一个非常简单的映射,如下所示(我简化了示例):
{
"location" : {
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
现在我使用一些基于真实英语单词的随机值来索引很多位置。
我希望能够在名称或描述字段中搜索与任何给定关键字匹配的位置(名称更重要,因此我给予了提升)。我尝试了一些不同的查询,但它们没有返回任何结果。
{
"fields" : ["name", "description"],
"query" : {
"terms" : {
"name" : ["savage"],
"description" : ["savage"]
},
"from" : 0,
"size" : 500
}
}
考虑到在描述中有savaged这个词的位置,它应该会给我一些结果(savage是savaged的词干)。使用上述查询产生 0 个结果。我一直在使用 curl 来查询 ES:
curl -XGET -d @query.json http://localhost:9200/myindex/locations/_search
如果我改用查询字符串:
curl -XGET http://localhost:9200/fieldtripfinder/locations/_search?q=description:savage
我实际上得到了一个结果(当然现在它只会搜索描述字段)。
基本上,我正在寻找一个查询,它将使用多个关键字进行 OR 类型的搜索,并将它们与名称和描述字段中的值进行比较。