我正在尝试对两个指定字段进行简单查询,而手册和谷歌被证明没有什么帮助。下面的例子应该很清楚我想要做什么。
{
"query": {
"and": {
"term": {
"name.family_name": "daniel",
"name.given_name": "tyrone"
}
}
}
}
作为一个额外的问题,为什么它会找到“Daniel Tyrone”和“daniel”,但如果我搜索“Daniel”则不会。它的行为就像一个非常奇怪的反大小写敏感搜索。
编辑:已更新,抱歉。你需要一个单独的Term
Bool 查询内部每个字段的对象:
{
"query": {
"bool": {
"must" : [
{
"term": {
"name.family_name": "daniel"
}
},
{
"term": {
"name.given_name": "tyrone"
}
}
]
}
}
}
ElasticSearch 不会分析术语查询,这使得它们区分大小写。 Term 查询对 ES 说“在索引中查找这个确切的标记,包括大小写和标点符号".
如果您想要不区分大小写,您可以向分析器添加关键字+小写过滤器。或者,您可以使用在查询时分析文本的查询(例如Match
query)
Edit2:您也可以使用 And 或 Bool 过滤器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)