带Elasticsearch的布尔查询

带Elasticsearch的布尔查询,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我目前正在使用以下查询- { "_source": [ "title", "bench", "id_", "court", "date", "content" ], "size": 15, "from": 0, "query": { "bool": { "must": [ {

我目前正在使用以下查询-

{
    "_source": [
        "title",
        "bench",
        "id_",
        "court",
        "date",
        "content"
    ],
    "size": 15,
    "from": 0,
    "query": {
        "bool": {
            "must": [
                {
                    "multi_match": {
                        "query": "the",
                        "fields": [

                            "content"
                        ], "operator": "and"
                    }
                },

            ],
            "should": {
                "multi_match": {
                    "query": "the",
                    "fields": [
                        "content.standard^2"
                    ], "operator": "and"
                }
            }
        }
    }
    ,
    "highlight": {
        "pre_tags": [
            "<tag1>"
        ],
        "post_tags": [
            "</tag1>"
        ],
        "fields": {
            "content": {}
        },
        "fragment_size": 100
    }
}
我的分析器是一个变音分析器。 这是我的目标。我希望精确匹配(标准)首先出现,然后是语音匹配。我能够通过代码实现这一点。我很确定这里面有一些不必要的逻辑,如果有人能指出,我将不胜感激

另外,我想加入的是一个搜索逻辑,用户可以在其中输入类似的搜索

皇家马德里、巴塞罗那或曼联。
在这里,我想要所有包含皇家马德里和巴塞罗那/曼彻斯特联队/我如何实现我现有的查询(经过修改)?

我在您的查询中看不到任何副作用。关于搜索逻辑,最简单的方法可能是使用。默认情况下,它支持布尔运算符,因此您的查询可能如下所示:

{
    "_source": [
        "title",
        "bench",
        "id_",
        "court",
        "date",
        "content"
    ],
    "size": 15,
    "from": 0,
    "query": {
        "bool": {
            "must": [
                {
                    "query_string" : {
                        "query" : "Real Madrid AND Barcelona OR Manchester United",
                        "fields" : ["content", "title"],
                        "operator": "and"
                    }
                }
            ],
            "should": {
                "query_string" : {
                    "query" : "Real Madrid AND Barcelona OR Manchester United",
                    "fields" : ["content.standard", "title.standard"],
                    "boost": 2,
                    "operator": "and"
                }
            }
        }
    },
    "highlight": {
        "pre_tags": [
            "<tag1>"
        ],
        "post_tags": [
            "</tag1>"
        ],
        "fields": {
            "content": {}
        },
        "fragment_size": 100
    }
}
{
“_来源”:[
“头衔”,
“长凳”,
“身份证”,
“法庭”,
“日期”,
“内容”
],
“尺寸”:15,
“from”:0,
“查询”:{
“布尔”:{
“必须”:[
{
“查询字符串”:{
“查询”:“皇家马德里和巴塞罗那还是曼联”,
“字段”:[“内容”、“标题”],
“操作员”:“和”
}
}
],
“应该”:{
“查询字符串”:{
“查询”:“皇家马德里和巴塞罗那还是曼联”,
“字段”:[“内容.标准”,“标题.标准”],
"提振":二,,
“操作员”:“和”
}
}
}
},
“亮点”:{
“pre_标签”:[
""
],
“post_标签”:[
""
],
“字段”:{
“内容”:{}
},
“碎片大小”:100
}
}

否则,您将不得不解析查询并使用多个bool查询对运算符进行建模。

我看不到查询中的任何副作用。关于搜索逻辑,最简单的方法可能是使用。默认情况下,它支持布尔运算符,因此您的查询可能如下所示:

{
    "_source": [
        "title",
        "bench",
        "id_",
        "court",
        "date",
        "content"
    ],
    "size": 15,
    "from": 0,
    "query": {
        "bool": {
            "must": [
                {
                    "query_string" : {
                        "query" : "Real Madrid AND Barcelona OR Manchester United",
                        "fields" : ["content", "title"],
                        "operator": "and"
                    }
                }
            ],
            "should": {
                "query_string" : {
                    "query" : "Real Madrid AND Barcelona OR Manchester United",
                    "fields" : ["content.standard", "title.standard"],
                    "boost": 2,
                    "operator": "and"
                }
            }
        }
    },
    "highlight": {
        "pre_tags": [
            "<tag1>"
        ],
        "post_tags": [
            "</tag1>"
        ],
        "fields": {
            "content": {}
        },
        "fragment_size": 100
    }
}
{
“_来源”:[
“头衔”,
“长凳”,
“身份证”,
“法庭”,
“日期”,
“内容”
],
“尺寸”:15,
“from”:0,
“查询”:{
“布尔”:{
“必须”:[
{
“查询字符串”:{
“查询”:“皇家马德里和巴塞罗那还是曼联”,
“字段”:[“内容”、“标题”],
“操作员”:“和”
}
}
],
“应该”:{
“查询字符串”:{
“查询”:“皇家马德里和巴塞罗那还是曼联”,
“字段”:[“内容.标准”,“标题.标准”],
"提振":二,,
“操作员”:“和”
}
}
}
},
“亮点”:{
“pre_标签”:[
""
],
“post_标签”:[
""
],
“字段”:{
“内容”:{}
},
“碎片大小”:100
}
}

否则,您将不得不解析查询并使用多个布尔查询对运算符进行建模。

您最终需要查询来支持
皇家马德里和巴塞罗那或曼联
搜索?是@OpsterESNinja.@OpsterESNinja有任何更新吗?您最后需要查询来支持
皇家马德里和巴塞罗那或曼彻斯特United
搜索?是@OpsterESNinja@OpsterESNinja有任何更新吗?谢谢。你能解释一下为什么你给了
boost
,为什么只有
content
字段?我想让
标题
字段也可以搜索。谢谢。我试着反映你提供的问题。因为您在content.standard(
content.standard^2
)上有了提升,所以我在我的选项中添加了相同的提升。如果要搜索多个字段,只需使用fields属性而不是默认字段,如(请参阅更新的查询)谢谢中所述。你能解释一下为什么你给了
boost
,为什么只有
content
字段?我想让
标题
字段也可以搜索。谢谢。我试着反映你提供的问题。因为您在content.standard(
content.standard^2
)上有了提升,所以我在我的选项中添加了相同的提升。如果要搜索多个字段,只需使用fields属性而不是默认字段,如中所述(请参阅更新的查询)