我正在尝试对两个指定字段进行简单查询,并且手册和谷歌证明没什么帮助.下面的例子应该清楚地说明我想做什么.
{
"query": {
"and": {
"term": {
"name.family_name": "daniel",
"name.given_name": "tyrone"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
作为一个额外的问题,为什么它会找到"Daniel Tyrone"和"daniel",但如果我搜索"Daniel"则不会.它表现得像一个非常奇怪的反案例敏感搜索.
Zac*_*ach 12
编辑:更新,抱歉.Term在Bool查询中,每个字段都需要一个单独的对象:
{
"query": {
"bool": {
"must" : [
{
"term": {
"name.family_name": "daniel"
}
},
{
"term": {
"name.given_name": "tyrone"
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
ElasticSearch不会分析术语查询,这使得它们区分大小写.术语查询说ES" 在索引中查找这个确切的标记,包括大小写和标点符号 ".
如果您想要不区分大小写,可以在分析器中添加关键字+小写过滤器.或者,您可以使用在查询时分析文本的查询(如Match查询)
Edit2:您也可以使用And或Bool过滤器.
我找到了至少在同一字段上进行多个文本比较的解决方案:
{
"query": {
"match": {
"name.given_name": {
"query": "daniel tyrone",
"operator": "and"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我为多个领域找到了这个,这是正确的方法吗?
{
"query": {
"bool": {
"must": [
{
"match": {
"name.formatted": {
"query": "daniel tyrone",
"operator": "and"
}
}
},
{
"match": {
"display_name": "tyrone"
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21621 次 |
| 最近记录: |