Javascript Elasticsearch前缀匹配消失,但未添加(QueryString)
从……结转过来的 我确定我不能部分匹配NOT查询,但我仍然希望部分匹配NOT查询。例如,我有这样一个查询:Javascript Elasticsearch前缀匹配消失,但未添加(QueryString),javascript,
elasticsearch,Javascript,
elasticsearch,从……结转过来的 我确定我不能部分匹配NOT查询,但我仍然希望部分匹配NOT查询。例如,我有这样一个查询:“blue wizard”NOT fire,前缀匹配。我有一些结果,其中包含文本蓝色向导,当我搜索“蓝色向导”时会显示,但当我添加不触发部分时,这些文本就会消失;这就好像NOT查询正在擦除部分匹配 这是发送给ES的查询结果: { “查询”:{ “布尔”:{ “应该”:[ { “查询字符串”:{ “字段”:[ “无提醒文本” ], “查询”:“\”蓝色精灵\“不开火”, “defaultOp
“blue wizard”NOT fire
,前缀匹配。我有一些结果,其中包含文本蓝色向导
,当我搜索“蓝色向导”
时会显示,但当我添加不触发
部分时,这些文本就会消失;这就好像NOT查询正在擦除部分匹配
这是发送给ES的查询结果:
{
“查询”:{
“布尔”:{
“应该”:[
{
“查询字符串”:{
“字段”:[
“无提醒文本”
],
“查询”:“\”蓝色精灵\“不开火”,
“defaultOperator”:“或”
}
},
{
“多重匹配”:{
“查询”:“\”蓝色精灵\“不开火”,
“类型”:“短语前缀”,
“字段”:[
“无提醒文本”
]
}
}
]
}
}
}
为什么在一个查询中组合查询字符串和多个匹配会使测试查询变得更复杂
分开来看:
您的查询\u字符串子查询没有说明任何有关前缀的内容,因此它显然与“蓝色向导”不匹配(除非您使用词干或柠檬化过滤器,请参见下文)
多重匹配子查询的类型为“短语前缀”,但在(多重)匹配查询中不能使用NOT等运算符。
此查询解析为:给我所有包含
- blue wizzard(不确定引号会发生什么情况,取决于您的分析器)
- 后面跟着“不”这个词
- 接着是以火开始的东西
或者我之所以将
查询字符串
和多匹配
结合起来,是因为我想要我在OP中陈述的功能;能够使用部分匹配(搜索wiz
,获取向导
)以及能够在同一查询中使用NOT。我想要搜索的不仅仅是复数,我想要前缀匹配,所以我不确定词干是否是我想要的。