1
我編寫了此ElasticSearch查詢來查找索引數據中術語的聚合計數。針對搜索詞 '蘋果橘子香蕉' 創建蘋果橘子香蕉將具有命名過濾器的ElasticSearch聚合查詢轉換爲NEST C#
{
"size": 0,
"_source": {
"excludes": [
"chapterData"
]
},
"aggs": {
"asPerBookID": {
"terms": {
"field": "bookID",
"size": 100000
},
"aggs": {
"asPerChapterIndex": {
"terms": {
"field": "chapterIndex",
"min_doc_count": 1,
"size": 10000
},
"aggs": {
"asPerChapterData": {
"nested": {
"path": "chapterData"
},
"aggs": {
"asPerChapterDatadotData": {
"filters": {
"filters": {
"apple": {
"query_string": {
"query": "apple",
"default_field": "chapterData.data"
}
},
"orange": {
"query_string": {
"query": "orange",
"default_field": "chapterData.data"
}
},
"banana": {
"query_string": {
"query": "banana",
"default_field": "chapterData.data"
}
}
}
}
}
}
}
}
}
}
}
},
"query": {
"bool": {
"must": [
{
"nested": {
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "apple",
"default_field": "chapterData.data"
}
},
{
"query_string": {
"query": "orange",
"default_field": "chapterData.data"
}
},
{
"query_string": {
"query": "banana",
"default_field": "chapterData.data"
}
}
],
"minimum_number_should_match": 1
}
},
"path": "chapterData",
"inner_hits": {
"size": 10000
}
}
}
]
}
}
}
這個查詢:
SEARCHTERM。所以,有三個命名過濾器。但如果用戶搜索「蘋果橙香蕉葡萄」,應該有指定的過濾器。我想用NEST插入它。
以下是我已經實現的用於按照SearchTerm創建命名過濾器的代碼。現在
string[] words = pSearchTerm.Split(' ');
NamedFiltersContainer myFilters = new NamedFiltersContainer();
foreach (var str in words)
{
myFilters.Add(str, new QueryStringQuery() { Query = str, DefaultField = "chapterData.data", DefaultOperator = lOperator, Analyzer = "whitespace" });
}
,問題是我用流利的DSL以執行ElasticSearch查詢,我不知道如何將它添加myFilters
。誰能幫忙?
任何形式的幫助對我來說都很棒!
在此先感謝。
從你的答案中學到了一些新的東西!幫助了很多!感謝@Random – Callisto