elasticsearch ElasticSearch:在带有查询字符串的运算符查询中
我想将记录与查询字符串进行匹配,因此我编写了以下运行良好的查询:
elasticsearch ElasticSearch:在带有查询字符串的运算符查询中,
elasticsearch,
elasticsearch,我想将记录与查询字符串进行匹配,因此我编写了以下运行良好的查询: { "query": { "query_string": { "fields": ["rollno","name"], "query": "*John*" } } } 现在,除了匹配字段,我还想在查询中对另一个字段实现。我尝试了查询,如下所示: { "query": { "query_string": { "fields": ["rollno", "
{
"query": {
"query_string": {
"fields": ["rollno","name"],
"query": "*John*"
}
}
}
现在,除了匹配字段
,我还想在查询中对另一个字段实现。我尝试了查询,如下所示:
{
"query": {
"query_string": {
"fields": ["rollno", "name"],
"query": "*John*"
},
"match": {
"majorSubject": ["Biology", "Chemistry"]
}
}
}
我得到的只是搜索\解析\异常
如何在
操作中执行此操作?您需要使用一个bool/must
查询来组合两个子查询:
{
"query": {
"bool": {
"must": [
{
"query_string": {
"fields": [
"rollno",
"name"
],
"query": "*John*"
}
},
{
"terms": {
"majorSubject": [
"Biology",
"Chemistry"
]
}
}
]
}
}
}
如果majorSubject
字段是经过分析的字符串,请使用小写术语:
{
"query": {
"bool": {
"must": [
{
"query_string": {
"fields": [
"rollno",
"name"
],
"query": "*John*"
}
},
{
"terms": {
"majorSubject": [
"biology",
"chemistry"
]
}
}
]
}
}
}
当我这样做时,当我实际有匹配的数据时,查询根本不会返回任何结果。请看我的答案,我是如何解决这个问题的。这可能有副作用,我现在还不知道。试着用小写字母
biology
和chemistry
是的,这是因为主主题
字段是一个分析过的字符串,并且索引的标记是小写的。我理解。当我定义映射时,我应该将majorSubject
指定为non_analysisted
,以便只匹配精确的值,就像在我的情况下,majorSubject
将只具有一些固定值一样。但是现在,解剖学
将同时匹配社会解剖学
和生物解剖学
,这肯定是个问题。谢谢你的洞察力!