在我的ElasticSearch文档索引中,我有一个属性type
,例如
type= LOCATION | PERSON | TIME
和一个代表整个文档的text
字段。
要搜索LOCATION
之类的类型和“ Mountain View”之类的特定文本,我喜欢
doc.text:Mountain View AND doc.type:LOCATION
如果我想进行OR
查询,我会改用
query_string
方法
"query": {
"query_string": {
"query": "entity.text: (Mountain View OR Menlo Park) AND entity.type:LOCATION"
}
}
这也可以。要进行AND
查询,就像搜索item.text
既具有“ Mountain View”又具有“ Menlo Park”的item.type=LOCATION
一样,
"query": {
"query_string": {
"query": "entity.text: (California AND Nevada) AND entity.type:LOCATION"
}
}
其他尝试是:
将bool
子句与should
一起使用,例如:
{
"query": {
"bool": {
"should": [
{ "match": { "text": "Menlo Park" }},
{ "match": { "text": "Mountain View" }}
]
}
}
}
将cross-fields
与multi_match
一起使用
"query": {
"multi_match": {
"query": "California Nevada",
"type": "cross_fields",
"operator": "AND",
"fields": [
"text"
]
}
}
另一种方法是将must
与type
一起使用(在这种情况下,省略{
"query": {
"bool": {
"must": [
{
"multi_match" : {
"query": "Nevada",
"type": "cross_fields",
"fields": [ "text"],
}
},
{
"multi_match" : {
"query": "California",
"type": "cross_fields",
"fields": [ "text" ]
}
}
]
}
}
}
):
should
,但也不会返回任何结果。请注意,在最后一种情况下,使用must
而不是OR
将产生一个AND
查询,该查询可以正常工作。
那么如何在同一字段text
上执行California
查询以匹配多个值,如Nevada
和sudo docker stop $(stop docker ps -a -q)
?
答案 0 :(得分:1)
如果我理解正确的问题,我将执行以下操作:
I/flutter (16705): build item 43693
I/flutter (16705): build item 43694
I/flutter (16705): build item 43695...
Documentation 希望对您有帮助!