我有一个包含多个字段的文档。
文档
- 备注
- 描述
- 标题
我想使用像谷歌这样的搜索进行搜索,例如
- “蓝色汽车”-柴油+汽油
- “蓝色汽车”+混合动力
- “蓝色汽车”橙色
- 蓝色汽车橙色
当我使用“blue car”时,它必须是精确的值匹配,根本不需要任何分析。它必须只找到准确的短语,而无需词干等。
为此我得到了一个像这样的工作版本 ->
{
"query": {
"multi_match": {
"query": "blue car",
"fields": [
"text",
"message",
"whatever"
],
"type": "phrase"
}
}
}
尽管对于其他类型的搜索,如 -diesel 或 +hybrid。我正在考虑使用 as 这似乎很好地支持了这一点。
{
"query": {
"simple_query_string": {
"fields": [
"text",
"message",
"whatever"],
"default_operator": "and",
"query": "-diesel +hybrid"
}
}
}
不幸的是,即使我将文本放在查询中的引号中,简单的查询字符串查询也会使用分析器。
你们知道我如何将两者结合起来吗?我可以使用 bool 查询将它们组合在一起吗?
最佳答案
以下是使用 bool 查询
查询“blue car” -diesel +hybrid' 的示例
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "blue car",
"fields": [
"text",
"message",
"whatever"
],
"type": "phrase"
}
},
{
"multi_match": {
"query": "hybrid",
"fields": [
"text",
"message",
"whatever"
]
}
}
],
"must_not": {
"multi_match": {
"query": "diesel",
"fields": [
"text",
"message",
"whatever"
]
}
}
}
}
}
关于Elasticsearch 简单查询字符串查询与精确文本搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046771/