test
索引中的当前Map。
{
"mappings": {
"properties": {
"tag_ids": {
"type":"keyword"
},
"text": {
"type":"text"
}
}
}
}
示例文档
#1
{
"tag_ids":["1","3"],
"text": "example test"
},
#2
{
"tag_ids":["1","2"],
"text": "example test"
},
#3
{
"tag_ids":["2","3"],
"text": "example test"
},
现在如何搜索文档并通过tag_ids过滤结果?
如果文档匹配更多的tag_id,则得分应该更高。
“match”、“term”、“terms”用哪个?
{
"query": {
"terms":{
"tag_ids":["1", "2"]
}
}
}
我试过术语,但所有文档都有相同的分数1。
我可以把tag_ids作为文本字段,和不同的tag_ids作为术语。
1条答案
按热度按时间lfapxunr1#
如果使用
bool/should
子句并为每个标记id添加一个术语(或匹配)查询,则会得到得分最高的文档#2(因为它包含两个标记id),然后得到得分较低(但相同)的文档#1和#3(因为它们都包含一个标记id响应=>