Elasticsearch 多字段查询
Elasticsearch Multi-field Query
我配置了一个包含两个字段的 Elasticsearch 索引:"Name" 和 "Type"。
当我执行下面的查询时,我没有得到任何结果,因为 "actor" 在 "Type" 字段中。
{
"query": {
"multi_match": {
"query": "johnny depp actor",
"operator": "AND",
"fields": [
"name",
"type"
],
"tieBreaker": 0.7
}
}
}
有什么方法可以执行包含多个词的查询,并且即使某些词在 "Name" 字段中而其他词在 "Type" 字段中也能获得结果。
感谢您的帮助!
您可以试试:
{
"query": {
"bool":{
"should":[
{"match_phrase":{"name":"johnny depp actor"}},
{"match_phrase":{"type":"johnny depp actor"}},
{"match_phrase":{"name":"johnny"}},
{"match_phrase":{"name":"depp"}},
{"match_phrase":{"name":"actor"}},
{"match_phrase":{"type":"johnny depp actor"}},
{"match_phrase":{"type":"johnny"}},
{"match_phrase":{"type":"depp"}},
{"match_phrase":{"type":"actor"}},
]
}
}
}
我终于找到了解决办法。
对于那些可能需要它的人,解决方案是使用cross-field,这样所有术语必须出现在至少一个字段中匹配文档。
{
"query": {
"multi_match": {
"query": "johnny depp actor",
"type": "cross_fields",
"operator": "AND",
"fields": [
"name",
"type"
],
"tieBreaker": 0.7
}
}
}
我配置了一个包含两个字段的 Elasticsearch 索引:"Name" 和 "Type"。 当我执行下面的查询时,我没有得到任何结果,因为 "actor" 在 "Type" 字段中。
{
"query": {
"multi_match": {
"query": "johnny depp actor",
"operator": "AND",
"fields": [
"name",
"type"
],
"tieBreaker": 0.7
}
}
}
有什么方法可以执行包含多个词的查询,并且即使某些词在 "Name" 字段中而其他词在 "Type" 字段中也能获得结果。
感谢您的帮助!
您可以试试:
{
"query": {
"bool":{
"should":[
{"match_phrase":{"name":"johnny depp actor"}},
{"match_phrase":{"type":"johnny depp actor"}},
{"match_phrase":{"name":"johnny"}},
{"match_phrase":{"name":"depp"}},
{"match_phrase":{"name":"actor"}},
{"match_phrase":{"type":"johnny depp actor"}},
{"match_phrase":{"type":"johnny"}},
{"match_phrase":{"type":"depp"}},
{"match_phrase":{"type":"actor"}},
]
}
}
}
我终于找到了解决办法。 对于那些可能需要它的人,解决方案是使用cross-field,这样所有术语必须出现在至少一个字段中匹配文档。
{
"query": {
"multi_match": {
"query": "johnny depp actor",
"type": "cross_fields",
"operator": "AND",
"fields": [
"name",
"type"
],
"tieBreaker": 0.7
}
}
}