我已经在Elasticsearch中收集了一个数据库,我没有通过ID识别它们,而是通过标题来识别它们。因此,每种类型的标题都不相同。
我尝试过must => match_phrase
,但它让我获得了不止一个回报。可能会将某些内容称为"Document 1"
,而其他内容可能会被称为"Document 1,2,3"
。因此,通过执行match_phrase
会返回多个结果。
我们说我有5个名为的文件:
我应该发送什么请求,只返回例如:"Document example"
?
我尝试了对127.0.0.1:9200/index/type/_search
进行此类搜索的不同变体:
{
"query":{
"match_phrase": {
"title":"Document example"
}
}
}
所以我想知道如何检查或搜索确切的解析并只返回一个或零结果?
修改
127.0.0.1:9200/myindex/mytype/_mapping
会返回此信息:
{
"myindex": {
"mappings": {
"mytype": {
"properties": {
"category": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"date": {
"type": "date"
},
"link": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"size": {
"type": "long"
},
"source": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"title": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
答案 0 :(得分:1)
只需在term
上使用title.keyword
过滤器(完全匹配):
{
"query": {
"term": {
"title.keyword": {
"value": "Document example"
}
}
}
}