考虑以下文件:
{
"Title": "Western Europe"
}
我想针对 Title 字段运行此类搜索查询
我可以运行一个简单的匹配查询:
POST /_search
{
"query": {
"match": {
"Title": "Apple in Western Europe"
}
}
}
显然,无论我使用哪个搜索词组,它都会匹配并将其带回来。但是我想做一个查询,只有在标题字段短语与我的搜索查询匹配时才会返回我的文档。那可能吗?有没有额外的参数?对于 phrase matching 来说,这似乎是一个相反的案例。
如果没有,我应该考虑用带状疱疹重新索引我的数据吗?
因此,在这种情况下,运行它(带有附加参数)不会得分并带回我的文档。
POST /_search
{
"query": {
"match": {
"Title": "Apple in Eastern Europe"
}
}
}
tl; 博士
如果我的搜索查询中存在所有字段(我正在搜索的字段) token ,我如何编写一个可以带回文档的查询?
例如我在文档中的字段只包含这两个标记:
如果我的搜索词组是,例如 Lorem ipsum dolor sat amet, consectetur adipiscing elit abc xyz ,则文档是 带回 。
如果是 Lorem ipsum dolor sat amet, consectetur adipiscing elit xyz ,则是 而不是 。
最佳答案
您可以使用 Percolator 查询 ( ES Documentation ):
您的用例示例
创建映射
query
: 接受具有 Title
:元数据(可选)PUT /my_index
{
"mappings": {
"properties": {
"Title": {
"type": "text"
},
"query": {
"type": "percolator"
}
}
}
}
添加文档PUT /my_index/_doc/1
{
"query": {
"match_phrase": {
"Title": "Western Europe"
}
},
"Title": "Western Europe"
}
获取匹配的查询POST /my_index/_search
{
"query": {
"percolate": {
"field": "query",
"document": {
"Title": "Apple in Western Europe"
}
}
}
}
关于Elasticsearch 反向 match_phrase,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32779023/