gpt4 book ai didi

elasticsearch - NEST Fluent DSL查询某些URL字段

转载 作者:行者123 更新时间:2023-12-03 00:59:54 25 4
gpt4 key购买 nike

有一些与NEST相关的问题。以下是我的ES中的一些文档。

enter image description here

如您所见,我已经在ES中插入了一些条目。我试着做一些这样的查询:

        var response = elastic.Search<ESIntegrationLog>(s => s
.Index("20160806")
.Type("esintegrationlog")
.Query(q =>
q.Term(p => p.CalledBy, "lazada")
)
.Sort(ss => ss.Descending(p => p.CalledOn))
.Take(300)
);

结果与我预期的一样,我确实找到了条目。但是,当我尝试通过“callPoint”进行查询时,无论如何我找不到任何结果。下面是代码:
        var response = elastic.Search<ESIntegrationLog>(s => s
.Index("20160806")
.Type("esintegrationlog")
.Query(q =>
q.Term(p => p.CallPoint, "/cloudconnect/api/xxxxxxx/v1")
)
.Sort(ss => ss.Descending(p => p.CalledOn))
.Take(300)
);

我已经尝试过对URL进行编码,但是仍然找不到任何内容。有任何想法吗?

更新:我使用“匹配”解决了这个问题。
.Query(q =>
//q.Term(p => p.CallPoint, "abcdefg")
q.MatchPhrasePrefix(c=> c.Field(d=> d.CallPoint).Query("/cloudconnect/api/xxxxxxx/v1"))
)

最佳答案

我怀疑callPoint是已分析的string字段,标准分析仪已对其进行了分析。通过查看callPoint索引中的映射,您将能够看到20160806的映射方式。使用Sense

GET 20160806

如果 callPoint的映射是 { "type" : "string" },则将在索引时间分析输入。您可以看到标准分析器将如何使用 _analyze API分析输入
POST _analyze
{
"text" : "/cloudconnect/api/xxxxxxx/v1",
"analyzer": "standard"
}

产生以下 token
{
"tokens": [
{
"token": "cloudconnect",
"start_offset": 1,
"end_offset": 13,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "api",
"start_offset": 14,
"end_offset": 17,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "xxxxxxx",
"start_offset": 18,
"end_offset": 25,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "v1",
"start_offset": 26,
"end_offset": 28,
"type": "<ALPHANUM>",
"position": 3
}
]
}

A term query不会分析查询输入,因此将尝试将查询输入与倒排索引中的内容进行匹配,倒排索引中的 callPoint字段已在索引时进行了分析。 A match query会分析查询输入,因此您将按预期获得该文档的匹配项。或者,您可以将 callPoint映射为 not_analyzed字符串字段,以便在索引时不分析输入并逐字索引。

关于elasticsearch - NEST Fluent DSL查询某些URL字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39366941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com