【发布时间】:2021-08-05 02:53:40
【问题描述】:
您好,我想用 elasticsearch enter image description here 做类似的事情
我已经对elasticsearch有所了解,但我不明白如何做到这一点,多重搜索
【问题讨论】:
标签: php symfony elasticsearch
您好,我想用 elasticsearch enter image description here 做类似的事情
我已经对elasticsearch有所了解,但我不明白如何做到这一点,多重搜索
【问题讨论】:
标签: php symfony elasticsearch
您可以使用bool/must/should子句的组合来组合多个条件
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "tag"
}
},
{
"match": {
"answers": 0
}
},
{
"match": {
"user": 1234
}
},
{
"multi_match": {
"query": "words here",
"type": "phrase"
}
},
{
"match": {
"score": 3
}
},
{
"match": {
"isaccepted": "yes"
}
}
]
}
}
}
如果您想搜索多个字段,则可以使用multi_match query
如果未提供任何字段,则 multi_match 查询默认为 index.query.default_field 索引设置,默认为 *. 这将提取映射中符合术语查询条件的所有字段并过滤元数据字段。然后所有提取的字段 结合起来构建一个查询。
添加一个包含索引数据、搜索查询和搜索结果的工作示例
索引数据:
{
"answers": 0,
"isaccepted": "no"
}
{
"answers": 0,
"isaccepted": "yes"
}
搜索查询:
{
"query": {
"multi_match" : {
"query" : "yes"
}
}
}
搜索结果:
"hits": [
{
"_index": "67542669",
"_type": "_doc",
"_id": "1",
"_score": 0.2876821,
"_source": {
"answers": 0,
"isaccepted": "yes"
}
}
]
【讨论】:
should 子句代替must。 should 子句的工作方式与逻辑 OR 运算符相同。请使用您的示例索引数据尝试此查询,如果这能解决您的问题,请告诉我?
fields 参数中未指定任何字段,此查询将提取所有字段并在所有字段中搜索查询.即使其中一个字段为空值,也不会影响搜索结果