弹性搜索否定简单查询字符串中的短语和单词
Elastic search negate phrase and words in simple query string
我正在尝试使用简单查询字符串否定 Elastic Search 请求中的一些单词和短语。
我就是这样做的:
&q=-"the witcher 3"-game-novel
所以基本上,试图否定一个短语及其后面的单词。但这似乎不起作用。
如果我试图单独否定这些词,它就会起作用。
如何否定简单查询字符串中的短语和句子?
添加一个包含索引数据、搜索查询和搜索结果的工作示例。
索引数据:
{
"name":"test"
}
{
"name":"game"
}
{
"name":"the witcher"
}
{
"name":"the witcher 3"
}
{
"name":"the"
}
搜索查询:
{
"query": {
"simple_query_string" : {
"query": "-(game | novel) -(the witcher 3)",
"fields": ["name"],
"default_operator": "and"
}
}
}
搜索结果:
"hits": [
{
"_index": "stof_64133051",
"_type": "_doc",
"_id": "4",
"_score": 2.0,
"_source": {
"name": "the"
}
},
{
"_index": "stof_64133051",
"_type": "_doc",
"_id": "3",
"_score": 2.0,
"_source": {
"name": "the witcher"
}
},
{
"_index": "stof_64133051",
"_type": "_doc",
"_id": "1",
"_score": 2.0,
"_source": {
"name": "test"
}
}
]
我正在尝试使用简单查询字符串否定 Elastic Search 请求中的一些单词和短语。
我就是这样做的:
&q=-"the witcher 3"-game-novel
所以基本上,试图否定一个短语及其后面的单词。但这似乎不起作用。 如果我试图单独否定这些词,它就会起作用。 如何否定简单查询字符串中的短语和句子?
添加一个包含索引数据、搜索查询和搜索结果的工作示例。
索引数据:
{
"name":"test"
}
{
"name":"game"
}
{
"name":"the witcher"
}
{
"name":"the witcher 3"
}
{
"name":"the"
}
搜索查询:
{
"query": {
"simple_query_string" : {
"query": "-(game | novel) -(the witcher 3)",
"fields": ["name"],
"default_operator": "and"
}
}
}
搜索结果:
"hits": [
{
"_index": "stof_64133051",
"_type": "_doc",
"_id": "4",
"_score": 2.0,
"_source": {
"name": "the"
}
},
{
"_index": "stof_64133051",
"_type": "_doc",
"_id": "3",
"_score": 2.0,
"_source": {
"name": "the witcher"
}
},
{
"_index": "stof_64133051",
"_type": "_doc",
"_id": "1",
"_score": 2.0,
"_source": {
"name": "test"
}
}
]