Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 弹性搜索布尔查询_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Lucene - Fatal编程技术网 elasticsearch,lucene,Search,elasticsearch,Lucene" /> elasticsearch,lucene,Search,elasticsearch,Lucene" />

Search 弹性搜索布尔查询

Search 弹性搜索布尔查询,search,elasticsearch,lucene,Search,elasticsearch,Lucene,在elasticsearch中,我想执行如下逻辑查询: 假设A、B、C和D是逻辑条件(“匹配”条件)。我想要一个与此SQL查询等效的elasticsearch查询: (A OR B OR C) AND D 我想用boost 如何构造此查询的JSON?请检查。请检查。您可以使用bool查询和boost选项 正如您所说的,要在字段A、B和C之间执行或操作,您需要使用应查询最小值应匹配为1(默认值)。您还可以添加boost初始化 注意:例如,我使用了术语查询,您需要根据需要使用适当的查询以获得最佳结

在elasticsearch中,我想执行如下逻辑查询:

假设A、B、C和D是逻辑条件(“匹配”条件)。我想要一个与此SQL查询等效的elasticsearch查询:

(A OR B OR C) AND D
我想用
boost


如何构造此查询的JSON?

请检查。

请检查。

您可以使用
bool
查询和
boost
选项

正如您所说的,要在字段A、B和C之间执行
操作,您需要使用
查询
最小值应匹配
为1(默认值)。您还可以添加
boost
初始化

注意:例如,我使用了术语查询,您需要根据需要使用适当的查询以获得最佳结果

   {
        "should": [
            {
                "term": {
                    "A": "searchTerm"
                }
            },
            {
                "term": {
                    "B": "searchTerm"
                }
            },
            {
                "term": {
                    "C": "searchTerm"
                }
            }
        ],
        "minimum_should_match": 1,
        "boost": 1
    }
要在上述查询和另一个字段之间执行
操作,您需要使用
必须
查询添加该字段,最后bool查询如下所示

{
    "bool": {
        "must": [
            {
                "term": {
                    "D": "searchTerm"
                }
            },
            {
                "should": [
                    {
                        "term": {
                            "A": "searchText"
                        }
                    },
                    {
                        "term": {
                            "B": "searchText"
                        }
                    },
                    {
                        "term": {
                            "C": "searchText"
                        }
                    }
                ],
                "minimum_should_match": 1,
                "boost": 1
            }
        ]
    }
}
这将执行您在问题(A | | | B | | C)和&D中提到的逻辑操作

参考资料:


您可以使用
bool
查询和
boost
选项

正如您所说的,要在字段A、B和C之间执行
操作,您需要使用
查询
最小值应匹配
为1(默认值)。您还可以添加
boost
初始化

注意:例如,我使用了术语查询,您需要根据需要使用适当的查询以获得最佳结果

   {
        "should": [
            {
                "term": {
                    "A": "searchTerm"
                }
            },
            {
                "term": {
                    "B": "searchTerm"
                }
            },
            {
                "term": {
                    "C": "searchTerm"
                }
            }
        ],
        "minimum_should_match": 1,
        "boost": 1
    }
要在上述查询和另一个字段之间执行
操作,您需要使用
必须
查询添加该字段,最后bool查询如下所示

{
    "bool": {
        "must": [
            {
                "term": {
                    "D": "searchTerm"
                }
            },
            {
                "should": [
                    {
                        "term": {
                            "A": "searchText"
                        }
                    },
                    {
                        "term": {
                            "B": "searchText"
                        }
                    },
                    {
                        "term": {
                            "C": "searchText"
                        }
                    }
                ],
                "minimum_should_match": 1,
                "boost": 1
            }
        ]
    }
}
这将执行您在问题(A | | | B | | C)和&D中提到的逻辑操作

参考资料:


您的最新示例中有一个错误。{}不应该在“应该”块附近。您最近的示例中有一个错误。{}不应该在“应该”块周围。