我有以下与ElasticSearch相关的问题:-
1.我们可以在查询中的术语块的字段名称中使用通配符吗?如果不能,有没有其他方法来实现这一点?就像在下面的查询中,我想实现类似的东西。
"must": [
{
"term": {
"*_sold.Type": "Type XYZ"
}
}
]
}```
1.我们如何在query_string块中的**“字段”**中应用条件?例如,我有查询的这一部分,如果属性类型为类型XYZ,则只需搜索此属性。
{
"query_string": {
"query": "data",
"type": "best_fields",
"fields": [
"date",
"id_number",
"type",
"*__Sold.*" // here I want that if "*_Sold.Type" == "Type XYZ" then only seach inside this attributes otherwise skip it.
],
"lenient": true,
"default_operator": "AND",
"boost": 3
}
}
这是示例文档。
{
"_index" : "_dev",
"_type" : "_doc",
"_id" : "data-2",
"_score" : 1.0,
"_source" : {
"type" : "datas",
"id_number" : 736762732784934,
"date" : "2011-01-26",
"Service_Sold" : [
{
"Type" : "Type XYZ",
"Service_Name" : "Service XYZ"
}
],
"Product_Sold" : [
{
"Type" : "Type ABC",
"Product_Name" : "Product ABC"
}
]
"Item_Sold" : [
{
"Type" : "Type XYZ",
"Item_Name" : "Item XYZ"
}
]
...
50 other attributes
}
注意:7.10版本ElasticSearch在KIBANA上运行查询。如果需要,我们也可以升级我们的版本。
1条答案
按热度按时间jecbmhm31#
您可以使用query_string,它允许您实现您所寻找的内容。您的查询应该如下所示: