gpt4 book ai didi

c# - 在Elasticsearch的查询DSL中使用 `MatchPhrasePrefix`

转载 作者:行者123 更新时间:2023-12-03 01:26:21 25 4
gpt4 key购买 nike

我是Elasticsearch的新手。

有人可以解释为什么进行此搜索(NEST 6):

var searchResponse1 = this.elasticClient.Search<dynamic>(
s => s.AllTypes().AllIndices().IgnoreUnavailable().Size(100).From(0)
.Query(q => q.Bool(b => b.Must(m => m.SimpleQueryString(c => c.Query("query"))))));

正确地导致以下请求(我使用Fiddler获得了此请求):
POST https://someUrl.com/_search?pretty=true&error_trace=true&typed_keys=true&ignore_unavailable=true HTTP/1.1
{
"from": 0,
"query": {
"bool": {
"must": [
{
"simple_query_string": {
"query": "query"
}
}
]
}
},
"size": 100
}

但是以下两项都搜索“MatchPhrasePrefix”:
var searchResponse2 = this.elasticClient.Search<dynamic>(
s => s.AllTypes().AllIndices().IgnoreUnavailable().Size(100).From(0)
.Query(q => q.Bool(b => b.Must(m => m.MatchPhrasePrefix(c => c.Query("query"))))));

var searchResponse3 = this.elasticClient.Search<dynamic>(
s => s.AllTypes().AllIndices().IgnoreUnavailable().Size(100).From(0)
.Query(q => q.MatchPhrasePrefix(p => p.Query("query"))));

造成:
POST https://someUrl.com/_search?pretty=true&error_trace=true&typed_keys=true&ignore_unavailable=true HTTP/1.1
{
"from": 0,
"size": 100
}

我在这里想念什么?

最佳答案

MatchPhrasePrefix查询必须还必须指定要定位的字段。例如

var searchResponse2 = client.Search<dynamic>(s => s
.AllTypes()
.AllIndices()
.IgnoreUnavailable()
.Size(100)
.From(0)
.Query(q => q
.Bool(b => b
.Must(m => m
.MatchPhrasePrefix(c => c
.Field("some_field") // <-- target the "some_field" field
.Query("query")
)
)
)
)
);

这导致查询
POST /_search
{
"from": 0,
"query": {
"bool": {
"must": [
{
"match_phrase_prefix": {
"some_field": {
"query": "query"
}
}
}
]
}
},
"size": 100
}

如果不指定该字段,则该查询在客户端中被认为是无条件的,并且将从响应中省略。有 an issue讨论是否应在下一个主要版本中删除无条件查询。

关于c# - 在Elasticsearch的查询DSL中使用 `MatchPhrasePrefix`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58124809/

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