pun*_*ish 17 elasticsearch match-phrase
这应该是显而易见的,但事实并非如此.以下两个仅匹配第二个短语(在本例中为"Cape Basin")
"query": {
"match_phrase": {
"contents": {
"query": "St Peter Fm",
"query": "Cape Basin"
}
}
}
"query": {
"match_phrase": {
"contents": {
"query": ["St Peter Fm", "Cape Basin"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
而以下呱呱叫错了
"query": {
"match_phrase": {
"contents": {
"query": "St Peter Fm"
},
"contents": {
"query": "Cape Basin"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想匹配包含的所有文件都 要么 完全相同短语输入.
更新:请参阅上面的更新
Jak*_*ski 23
您的第一个查询实际上不是有效的JSON对象,因为您使用相同的字段名称两次.
您可以使用bool必须查询来匹配这两个短语:
PUT phrase/doc/1
{
"text": "St Peter Fm some other text Cape Basin"
}
GET phrase/_search
{
"query": {
"bool": {
"must": [
{"match_phrase": {"text": "St Peter Fm"}},
{"match_phrase": {"text": "Cape Basin"}}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
事实证明,您可以通过为启用短语语义来做到这一点multi_match
。
为此,您可以type:
向multi_match
语法添加一个属性,如下所示:
GET /_search
{
"query": {
"multi_match" : {
"query": "quick brown fox",
"type": "phrase",
"fields": [ "subject", "message" ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
一旦您以这种方式想到了(相对于在其他搜索子句上启用“多”支持),它就可以满足您的期望。
参考:https : //www.elastic.co/guide/zh-CN/elasticsearch/reference/6.5/query-dsl-multi-match-query.html#type-phrase
归档时间: |
|
查看次数: |
15409 次 |
最近记录: |