我创建了这个功能:
public static ISearchResponse<Immo> searchImmoByCustomerField(Nest.ElasticClient esClient, string esIndex, string esIndex2, int from, int take, string qField, string nmqField, string qTerm, string nmqTerm)
{
var result = esClient.Search<Immo>(s => s
.AllIndices()
.Query(q => q
.Indices(i => i
.Indices(new[] { esIndex, esIndex2 })
.Query(iq => iq.Term(qField, qTerm))
.NoMatchQuery(iq => iq.Term(nmqField, nmqTerm))
)
)
);
return result;
}
该函数在2个索引中查找搜索词。Visual Studio向我显示以下消息:
“已弃用。您可以在查询中指定_index以定位特定索引”
但是我该怎么办呢?
由于不建议使用indexs查询,因此它目前仍可以使用,但不推荐使用该警告是可能在将来的主要版本中将其删除。
您可以通过以下方式实现与索引查询相同的功能:
var esIndex = "index-1";
var esIndex2 = "index-2";
var qField ="query-field";
var qTerm = "query-term";
var nmqField = "no-match-query-field";
var nmqTerm = "no-match-query-term";
client.Search<Immo>(s => s
.AllIndices()
.Query(q => (q
.Term(t => t
.Field(qField)
.Value(qTerm)
) && +q
.Terms(t => t
.Field("_index")
.Terms(new[] { esIndex, esIndex2 })
)) || (q
.Term(t => t
.Field(nmqField)
.Value(nmqTerm)
) && !q
.Terms(t => t
.Field("_index")
.Terms(new[] { esIndex, esIndex2 })
))
)
);
产生以下查询JSON
POST http://localhost:9200/_all/immo/_search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"query-field": {
"value": "query-term"
}
}
}
],
"filter": [
{
"terms": {
"_index": [
"index-1",
"index-2"
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"no-match-query-field": {
"value": "no-match-query-term"
}
}
}
],
"must_not": [
{
"terms": {
"_index": [
"index-1",
"index-2"
]
}
}
]
}
}
]
}
}
}
问题内容: 我有两个具有以下映射的索引(我将简化它们的映射): 1)AccountType映射: 2)ProductType映射: 现在,我有几件事需要弄清楚: 1)首先,有一个索引是一个好主意,在我的情况下是帐户,并且产品是嵌套对象,但是在这里每次我要更新/添加新产品时,我都必须重新索引(更新)整个帐户文件? 2)我的第二个问题是:我想具有搜索功能,因此,如果用户通过在文本框中键入内容进行搜索,
问题内容: 我开始四处寻找搜索引擎,经过一番阅读后,我决定使用ElasticSearch(这是非常了不起的:)),我的项目在C#中,所以我四处寻找客户端并开始使用NEST,一切都很简单,但是我搜索部分有些混乱。 我想搜索 特定类型的 所有字段 ,然后 输入 以下代码: 我看到许多字符串查询搜索已被弃用,并想确保上面的方法是正确的方式(上面未标记为已弃用…)对于一个简单的任务来说也有点长,所以也许有
问题内容: 我有一个已创建的公司类型。在该公司类型的内部,我有一个名为“摘要”的字段。如何在此字段中添加多个索引分析器? 我简要地研究了使用Yakaz插件,但似乎无法与NEST一起使用。 其背后的原因是,有时用户会在查询中搜索带有句点的公司名称,而其他时候则不包括句点。我想在公司名称上使用ngram进行部分匹配,带标点和不带标点。我目前正在使用停用词过滤器来删除标点符号。 摘要字段的属性(具有多个
我正在尝试使用NEST c#客户端搜索我的弹性搜索嵌套对象。我的索引名称是”,我的”字段。 这是我的班级: 现在我的web应用程序看起来像这样: 这里是我需要搜索的单词。 我在浏览器的搜索框(网络表单)中输入它。 搜索关键字可能包含任何需要与我的表人员中的任何字段的值匹配。 如果搜索关键字与嵌套文档匹配,则应返回确切的嵌套文档。 我不知道我的嵌套查询有问题,或者我实际上不知道如何使用嵌套查询来执行
我目前正在运行elastic search和kibana 7.0.0版,在我的项目中有一个docker compose文件 我能够连接到端口5601上的kibana(索引和搜索数据),以及端口9200上的弹性搜索。 我试图使用NEST连接到弹性这里是我的基本配置 当我通过NEST执行任何命令时,如ping、健康检查或搜索等,我检索到以下异常。这让我相信docker容器(linux容器)中存在一些与
问题内容: 我第一次使用Postgresql,并且试图在我的网站中创建一个搜索引擎。我有这张桌子: 然后我为表的每个字段创建了一个索引(这是正确的方法吗?或者我可以为所有字段创建一个索引?): 现在,如果我想在每个索引中搜索一个单词,SQL查询是什么? 我尝试了这个,它的工作原理: 是否存在更好的方法来做到这一点?我可以搜索多个吗?我的一个朋友提出了一个解决方案,但这是针对MySQL数据库的: P